Cudy na kiju

Jakiś czas temu w Polsce operatorzy wyłączyli transmisję danych 3G, więc mój modem przestał działać. Przestał więc też działać router GSM na Linuksie zbudowany w oparciu o niego i Raspberry Pi. Na dokładkę chwilę wcześniej padł hub USB zasilający RPi lub zasilacz od niego. Znaczy: trzeba coś zmienić.

Zasadniczo opcje były dwie. Pierwsza, to kupno jakiegoś modemu z obsługą 4G, może używanego i reanimacja istniejącego setupu. No i coś z zasilaniem by trzeba pomyśleć, bo wersja, gdzie modem jest wpięty bezpośrednio w port USB RPi działa, ale nie mieści się w pudełku.

Inna sprawa, że dotychczasowy setup składał się z routera WiFi, switcha niezarządzalnego, i RPi robiącego za router. Kwestia zaszłości historycznych i ewolucji moich routerów, a właściwie systemów robiących przy okazji za router. Bo wiadomo, że miło jest mieć system z Linuksem, jednak w praktyce dawno przestałem z niego korzystać, a cały setup choć niekrytyczny i w zasadzie mało używany, ma wiele elementów ruchomych, które potrafiły sprawiać problemy w najmniej odpowiednich momentach. Oczywiście bohatersko rozwiązywałem wszystkie problemy i nawet była z tego jakaś frajda, ale… po co?

I tu pojawia się opcja druga, czyli kupno routera WiFi, do którego można zapakować kartę SIM. Takie rozwiązanie pozwala wyeliminować stary router WiFi oraz switch. Raspberry Pi staje się opcjonalne, tzn. mógłbym je podłączyć jeśli zechcę używać tego systemu, ale dostęp do internetu jest od niego niezależny. Dodatkowo mógłbym zasilać tylko router – switch i RPi nie są potrzebne. Niby tylko parę W[1], ale switch jest stary, z ciężkim, transformatorowym(?) zasilaczem.

Postanowiłem rozpoznać dostępne opcje i okazało się, że cenowo też nie wychodzi najgorzej, biorąc pod uwagę, że musiałbym kupić modem 4G i jakiś hub USB. W ten sposób, po zapłaceniu 126 zł na Allegro stałem się posiadaczem nowego, tytułowego routera Cudy LT400.

Opakowanie jest dość spore – zdjęcia paczki można zobaczyć w jednym z poprzednich wpisów o opakowaniach. Router wygląda dość typowo, posiada aż cztery, przymocowane na stałe, anteny.

Wady:

  • nietypowe zasilanie 12 V, 1 A
  • brak osobnego portu WAN – łącznie są 4 porty w tym jeden „podwójnego zastosowania”
  • brak możliwości instalacji OpenWrt
  • brak wsparcia dla WiFi 5GHz
  • anteny przymocowane na stałe
  • porty 10/100 Mbps

Jak widać wad całkiem sporo, ale… nie mają większego znaczenia. WiFi 2,4 GHz było poprzednio i wystarczało. Porty 100 Mbps niczego nie zmieniają – stary switch miał tak samo. Zresztą nie kopiuję pomiędzy komputerami większych ilości danych, a wąskim gardłem pozostaje dostęp do internetu przez sieć LTE.

Sprawdziłem, co jest w środku i okazuje się, że:

Linux version 4.4.140 (jenkins@release_server) (gcc version 5.4.0 (LEDE GCC 5.4.0 2.4.15) ) #0 Tue Dec 9 13:06:22 2025

HW: LT400 V2.1  |  FW: 2.4.23-20251209-211127

Czyli mimo braku wsparcia dla OpenWrt, właśnie na nim jest oparty firmware routera. Mam nadzieję, że będzie aktualizowany. A może i pojawi się wsparcie OpenWrt? Choć nie liczę zbytnio na to – zapewne będzie problem z niewolnym firmware modemu LTE.

Jeśli chodzi o zalety, sam sprzęt posiada całkiem sporo funkcji:

  • klient i serwer VPN (wiele protokołów, m.in. openvpn, wireguard)
  • klient DDNS, wsparcie wielu providerów
  • filtrowanie IP i domen (statyczne)
  • wsparcie dla IPv6
  • prosta konfiguracja – w zasadzie wystarczy włożyć kartę SIM i skonfigurować hasła

Są dla mnie równie wirtualne, jak wady. Liczy się tylko stabilność i bezawaryjność, a jak z tym będzie, okaże się za jakiś czas… Niemniej, klient i serwer VPN mnie zaskoczyły – zupełnie się nie spodziewałem. Interfejs przejrzysty, opcje proste. Pewnie zasługa LuCI.

[1] 2,2 W sam poprzedni router, switch pewnie podobnie, lub więcej. RPi na pewno ponad 3W.

Sfederowany problem

Mamy trzy główne topologie czy też modele działania usług w sieci: scentralizowany, sfederowany[1] i rozproszony. Każdy z nich ma swoje wady, zalety i… problemy. W tym wpisie będzie o tym, czemu federacja nie zawsze jest dobrym pomysłem, jaki problem wprowadził z powodu wyboru sfederowanego modelu Mastodon. I co można z tym zrobić.

Wstęp

Na początek dla przypomnienia – albo dla kontekstu – Mastodon to serwer social media, w założeniu mający być – mniej więcej – alternatywą dla Twittera. Działaja w oparciu o protokół ActivityPub. Zamiast jednego, centralnego serwera, działającego pod jedną domeną[2] istnieje wiele serwerów. Każdy z nich ma swoją odrębną domenę, swojego administratora, swoją moderację i swoich użytkowników. A pod spodem – swoją własną bazę danych. Jednak przy tych wszystkich odrębnościach, w przeciwieństwie do sieci scentralizwoanych, serwery wymieniają się między sobą danymi, jeśli zachodzi taka potrzeba. Czyli na Bluesky nie polubimy tweeta, natomiast w przypadku wpisu na Mastodonie (toot) nie ma przeszkód by użytkownik jednego serwera polubił wpis z innego[3].

Typowo za przykład sieci zdecentralizowanej podawane są serwery popularnej usługi, jaką jest poczta elektroniczna (email). Niezależnie, czy „skrzynkę”[4] mamy na Gmail, Outlook, Onecie, Protonie czy własnym serwerze, możemy wysłać mail i za – pośrednictwem protokołu SMTP – dotrze on na serwer odbiorcy.

Osobiście uważam, że lepszym, bliższym przykładem usługi sfederowanej, do której można porównać Mastodona, są grupy dyskusyjne, działające w oparciu o protokół NNTP. Niestety, usługa nie jest już powszechnie używana czy znana, więc jako przykład przybliżający ideę słabo się nadaje. Jednak wydaje mi się lepsza, bo zachodziła interakcja między wieloma użytkownikami, którzy mogli swobodnie wchodzić w interakcję z treściami zamieszczonymi przez innych użytkowników. Nie było określonego przez nadawcę odbiorcy.

Technicznie działało to tak, że administrator uruchamiał serwer NNTP, ustalał z jakimi serwerami wymienia się treściami, jakie grupy, czyli treści będzie utrzymywał na swoim serwerze. I jacy użytkownicy mogą z jego serwera korzystać, czyli pobierać i zamieszczać treści. Z punktu widzenia użytkownika wyglądało to tak, że łączy się do jednego serwera, odbiera wiadomości z wybranych grup dyskusyjnych napisane przez różnych użytkowników. A jeśli coś napisze, to trafia to na wszystkie serwery, na których obsługiwana jest dana grupa.

Problem

Tyle tytułem wstępu, pora przejść do problemu. Serwer Mastodona może postawić każdy. Obecnie działa blisko 10 tys. serwerów Mastodon[5]. Gdy któryś z użytkowników zamieści toot z linkiem do strony WWW, to wszystkie serwery, na których na których znajdują się jego followers (obserwujący), generują podgląd strony. W tym celu każdy z serwerów wysyła żądanie do docelowego serwera WWW w celu pobrania strony? Gdzie problem? Ano w tym, że w przypadku kont z większą liczbą obserwujących, tych serwerów potrafi być wiele. I wysyłają te żądania w zbliżonym czasie. Z punktu widzenia ofiary, czyli serwera WWW do którego link zamieszczono to coś w rodzaju DDoS.

Temat nie jest nowy, był dokładnie opisany w 2022, z wykresami, schematem działania i ilością żądań. Gorąco polecam lekturę, szczególnie jeśli w moim opisie jest coś niejasnego. Jest tam też trochę o zasadności nazywania tego działania DDoSem. Oryginalne zgłoszenie na GitHub jest jeszcze starsze i pochodzi z roku 2017. Sam schemat „ataku” w pewnym sensie przypomina botnet, przy czym kontrolującym byłaby tu dowolna osoba zamieszczająca link w treści toota, a boty wykonują tylko jedno żądanie.

Tyle, że to wystarcza do zakłócenia działania zewnętrznych usług. O tym, że problem nie jest jedynie teoretyczny, świadczą niedawne przykłady z kraju:

Czy linki dodawane na fedi obciążają serwery www? Obciążają, bo po dodaniu linku, każdy sfederowany serwer zaciąga sobie jego podgląd.
[…]
Spotkałem się już z głosami, że to coraz poważniejszy problem, porównywalny z małym atakiem DDOS. Nie wiem na ile wpływa to na obciążenie mojej strony, ale na pewno jest zauważalne. Dlatego będę pamiętał, aby dodawać link nieco wcześniej lub później niż w innych mediach.
Źródło: https://101010.pl/@rdrozd/113668863306405283

To jest problem, który mnie dotknął (blog na WP z wtyczką ActivityPub), po przeprowadzce na mniejszy serwer.
Mimo tego, że śledzących na fedi mam raptem niecałe cztery dychy, to pierwsza publikacja nowego wpisu zamuliła mi stronę na jakieś pół godziny, może dłużej, a logi były pełne błędów 500 i 503 (w tysiącach).
Dzięki pomocy @m0bi ustaliłem co bardziej obciążające wtyczki, wywaliłem je i trochę innych, zostawiając pewnie z połowę. Do tego czyszczenie instalacji i takie tam, a i tak pomogło dopiero zwiększenie limitów serwera. Dzięki temu przydycha po publikacji „tylko” na 5-10 minut :/
Myślałem o rezygnacji z wtyczki AP, ale widzę, że musiałbym też odpuścić wrzucanie odnośników do wpisów na fedi.

To właściwie uniemożliwia funkcjonowanie w fediświecie malutkim amatorskim blogom bez wsparcia dużych platform.
Źródło: https://pol.social/@LukaszHorodecki/113685265406284436

Jeśli chodzi o mnie i ten blog, to z zupełnie innej okazji mam nieco stuningowaną konfigurację, relatywnie mało obserwujących, a serwer uruchomiony na dedykowanym VPSie. Więc jedyne co zauważam – poza wpisami w logach – to kilkusekundowa mniejsza responsywność serwera[6].

Dlaczego problem dotyczy Mastodona, a nie innych wspomnianych wcześniej sfederowanych usług? Powody są dwa. Po pierwsze, poczta elektroniczne czy grupy dyskusyjne działają wyłącznie same ze sobą, nie wchodząc w automatyczne, masowe interakcje z zewnętrznymi usługami. Po drugie, zjawisko popularny serwis linkuje do mniejszego i ten nie daje rady obsłużyć ruchu jest znane od dawna pod nazwą Slashdot effect. Tyle, że w tamtym przypadku ruch inicjowany był przez ludzi, a nie automatycznie. Czyli problem wynika z architektury rozwiązania i implementacji.

Rozwiązanie

Możliwych rozwiązań jest kilka. Pierwsze, najprostsze, to usunięcie interakcji z zewnętrznymi usługami w ogólności, a funkcjonalności generowania podglądu w szczególności. Tyle, że to obecnie trochę standard w social media i Mastodon wyglądałby ubogo.

Kolejne rozwiązanie to wprowadzenie jakiegoś rozwiązania typu cache, działającego w obrębie całej sieci. Czy to w stylu: serwer, którego użytkownik zamieszcza link, jego serwer generuje podgląd i rozsyła go razem z tootem. Czy też w postaci zewnętrznego, wspólnego dla wielu instancji Mastodon, serwisu służącego do generowania podglądu. Wreszcie można wyznaczyć główne serwery, które będą generować podgląd, a pozostałe będą polegać na ich danych. Tyle, że wszystkie te rozwiązania – może pierwsze najmniej – podważają niezależność działania poszczególnych serwerów.

Innym rozwiązaniem jest zmniejszenie ilości serwerów, czyli większa koncentracja użytkowników. Jednak nie zanosi się na to i trudno w praktyce na to liczyć.

Konsekwencje

Z jednej strony trudno posądzać autorów rozwiązania o celowe stworzenie takiej architektury, by powodowała problemy zewnętrznych serwisów, Z drugiej strony jeśli coś wygląda jak kaczka, chodzi jak kaczka i kwacze jak kaczka... Problem jest znany twórcom Mastodona od blisko dekady i… jest uparcie ignorowany.

Piszę o tym, bo co jakiś czas wraca temat wykorzystywania scentralizowanych platform social media (Facebook, X/Twitter) przez instytucje publicznie. I pojawia się pomysł/propozycja wykorzystania Mastodona jako alternatywy. Według mnie, przy obecnym stanie rzeczy, jest to pomysł niepoważny. Trudno oczekiwać, by instytucje państwowe czy samorządowe wykorzystywały narzędzia, o których wiadomo, że mogą być szkodliwe dla innych usług w sieci.

Mnie osobiście ten stan rzeczy zniechęca do korzystania z platformy. Nie czuję się komfortowo z tym, że mój błahy wpis może powodować problem u jakiejś strony trzeciej. Może nie na tyle, by przestać zupełnie z niej korzystać, ale na tyle, by ograniczyć aktywność. Staram się linkować tylko do swoich stron i nie podbijać (boost) wpisów z linkami.

UPDATE. Jeszcze – zanim nastąpi rotacja logów – ilość żądań GET do wpisu. Pierwsze odwołanie 16:44:36, następnie, per minuta:
16:44 – 67
16:45 – 201
16:46 – 3
16:47 – 42
16:48 – 22
16:49 – 5
Praktycznie wszystkie pochodzą od botów (zawierają słowo Bot).
Łączna ilość GET w dniu 06.03.2026 – 516, z czego 431 zawierało słowo Bot.

[1] Znany też jako zdecentralizowany.
[2] Uproszczenie, w praktyce scentralizowane serwisy mają wiele serwerów, ale dla łączącego z zewnątrz użytkownika jest to niezauważalne.
[3] Uproszczenie, serwery muszą dopuszczać federację między sobą, użytkownicy nie mogą się blokować. Jednak stan domyślny i wyjściowy jest taki, że mogą.
[4] Czyli adres email.
[5] Źródło, Marzec 2026, tylko serwery działające w oparciu o oprogramowanie Mastodon. W praktyce jest więcej kompatybilnego oprogramowania o podobnym schemacie działania.
[6] Dla pamięci: load average 9,95, 3,51, 1,25 w po kilkudziesięciu sekundach od zamieszczenia tego wpisu. Możliwe, że zasługa popularnych tagów, nie ilości obserwujących. Typowo jest load average: 0,17, 0,36, 0,18.

Mastodon a blokowanie

Mastodon chwali się, że daje możliwość kontroli widoczności. Na poziomie użytkownika posiada do tego celu dwie zbliżone opcje. Pierwsza z nich to mute, czyli wyciszenie, które, cytując komunikaty pojawiające się przy blokowaniu:

They won’t know they’ve been muted.
They can still see your posts, but you won’t see theirs.
You won’t see posts that mention them.
They can mention and follow you, but you won’t see them.

Druga z nich to block, która jest opisana jako:

They can see that they’re blocked.
They can’t see your posts and you won’t see theirs.
You won’t see posts that mention them.
They can’t mention or follow you.

Czyli w obu przypadkach nie widzimy postów w których jest wymieniane (mention) dane konto. Ma to nieco sensu, ale wykorzystując którąkolwiek z możliwości, zepsujemy sobie dostęp do treści. I to nie tylko pisanych przez zablokowane konto, ale także znikną nam wszystkie wiadomości w wątkach, w których jest wymienione to konto, niezależnie od tego, kto je napisał. Dość inwazyjne, zwłaszcza, że ludzie często zostawiają w wątkach wszystkie dotychczas wywołane osoby.

Jeśli chodzi o block, to osoba zablokowana widzi, że jest zablokowana. Przynajmniej teoretycznie, bo co prawda taka informacja jest dostępna (w API), ale nie ma żadnego miejsca, gdzie możemy sprawdzić jakie konta nas zablokowały. Nie dostajemy też informacji o blokowaniu. Co w praktyce możemy zauważyć? Zepsute wątki, zwłaszcza brakujące wiadomości. Choć wtedy może to wynikać także z wyciszenia przez nas innej wywołanej osoby, poprzez mute. Najlepszą metodą bez sięgania po API jest sprawdzenie, czy mamy możliwość obserwacji danego konta. Brak możliwości włączenia obserwacji danego konta – opcja niekatywna – oznacza, że zostaliśmy zablokowani.

Jeśli chodzi o they can’t mention to… nie działa. Jak najbardziej można zamieścić toot zawierający oznaczenie konta, które nas blokuje. Serwer podpowiada nicka i obsługuje go normalniew toocie. Zapewne wywołana osoba nie dowie się, że została oznaczona, ale to nie znaczy, że oznaczenie nie została. Co więcej, wszyscy inni użytkownicy będą widzieli to oznaczenie. Nie wiem jaki był zamysł autorów, ale wygląda na obietnicę bez pokrycia. Podobnie jak they can see that they’re blocked. Niby można się dokopać, ale czy widać? Polemizowałbym.

Jeśli chodzi o they can’t see your posts, to nie do końca jest to dowiezione. Zadziała tylko, jeśli mamy ograniczoną widoczność własnych tootów do zalogowanych kont. Co raczej nie jest popularnym ustawieniem. W przeciwnym razie wystarczy, że oni skorzystają z okna przeglądarki w trybie prywatnym.

Podsumowując, mam wrażenie, że z poziomu użytkownika blokowanie/wyciszanie na Mastodonie zrobione jest słabo. Skomplikowane (dwie różne metody), nie do końca działające zgodnie z opisem, za to bardzo inwazyjne. Wygląda, jakby ktoś projektując rozwiązanie mocno skupił się na aspektach technicznych, zapominając o „dużym obrazie” i skutkach. W efekcie użytkownicy nie dostają więcej niż na innych platformach, za to cierpi używalność platformy.

Wpis przeleżał nieco w szkicach, więc nadeszła pora na publikację…