Jak uruchomić most Tor z obfs4 na VPS
Instrukcja konfiguracji mostu Tor z protokołem obfs4 na serwerze VPS. Dowiedz się, jak edytować plik torrc, otworzyć porty w firewallu i zweryfikować działanie w logach.
Czym jest most Tor i dlaczego istnieje
Most Tor to punkt wejścia do sieci Tor, którego adres nie jest publikowany na publicznej liście przekaźników. Lista ta, zwana konsensusem, jest podpisanym dokumentem, który każdy może pobrać, co czyni również cenzor. Zablokowanie sieci Tor na podstawie tej listy zajmuje jedno popołudnie: wystarczy pobrać konsensus, a następnie odrzucić na granicy sieci każdy zawarty w nim adres. Mosty istnieją, ponieważ opublikowana lista jest słabym punktem. Adresy mostów są udostępniane po kilka sztuk, więc pojedyncze żądanie nie ujawnia całego zestawu.
Niepubliczny adres to tylko połowa rozwiązania. Głęboka inspekcja pakietów (DPI), która klasyfikuje ruch na podstawie jego zawartości, a nie adresu, rozpoznaje połączenie Tor po charakterystyce jego uzgadniania TLS (transport layer security). Cenzor nieposiadający listy nadal może stwierdzić, że "to wygląda jak Tor" i zerwać połączenie. Pluggable transport usuwa ten sygnał. Opakowuje on strumień Tor w inny protokół po stronie klienta, a most go rozpakowuje.
obfs4 to transport używany przez większość mostów. Przekształca on strumień w bajty bez nagłówka i bez stałego schematu uzgadniania, więc DPI nie znajduje wzorca do dopasowania. Protokół ten również uwierzytelnia klienta. Wartość cert= w linii mostu to klucz, który klient musi posiadać, aby most w ogóle odpowiedział. Zapobiega to aktywnemu sondowaniu: cenzor, który łączy się z adresem, aby sprawdzić, czy obsługuje on protokół Tor, nie otrzymuje żadnej odpowiedzi i nie uzyskuje żadnych informacji.
Który pluggable transport uruchomić?
- obfs4 wymaga jednego VPS, dwóch portów TCP i nie potrzebuje nazwy domeny. Jest to najprostsze użyteczne rozwiązanie, które można uruchomić i jest ono przedmiotem niniejszego przewodnika.
- WebTunnel ukrywa połączenie wewnątrz zwykłego ruchu HTTPS kierowanego do rzeczywistej witryny internetowej. Tor Project określa wymagania jako: statyczny adres IPv4, kontrolowana domena, działający serwer WWW, taki jak NGINX lub Apache, ważny certyfikat TLS oraz co najmniej 1 GB pamięci RAM (zalecane 4 GB). Rozwiązanie to sprawdza się w sieciach, w których ruch o losowym wyglądzie jest sam w sobie podejrzany, ponieważ państwo zezwalające na niewiele więcej niż przeglądanie stron WWW nadal dopuszcza ruch HTTPS.
- Snowflake to inny rodzaj wkładu. Wolontariusze uruchamiają krótkotrwałe proxy WebRTC, dzięki czemu punkty wejściowe stale się zmieniają i nie ma stałego adresu, który cenzor mógłby zablokować. W tym przypadku nie obsługuje się mostka. Uruchamia się proxy, które nie wymaga stałego adresu.
Należy zacząć od obfs4. Mostek WebTunnel można dodać później, na drugim adresie: uruchomienie obu na jednym IP oznacza, że zablokowanie jednego adresu wyeliminuje oba rozwiązania.
Jakie są koszty utrzymania mostka?
The data behind this chart
[
{
"label": "Bridge, minimum",
"min_upstream_mbit": 1
},
{
"label": "Guard or middle relay, minimum",
"min_upstream_mbit": 10
},
{
"label": "Guard or middle relay, recommended",
"min_upstream_mbit": 16
}
]Według stanu na sierpień 2026 r. Tor Project wymaga od mostka przepustowości wysyłania i pobierania na poziomie co najmniej 1 Mbit/s. W przypadku przekaźnika typu guard lub middle wymagane jest 10 Mbit/s, przy czym zalecane jest 16 Mbit/s. Są to opublikowane wymagania, a nie pomiary. Nowy mostek zazwyczaj przez wiele tygodni utrzymuje się znacznie poniżej tych minimów. Ta sama strona z wymaganiami określa zapotrzebowanie przekaźnika na co najmniej 100 GB ruchu wychodzącego miesięcznie, co pokrywają już najmniejsze plany hostingowe, dlatego przed wyborem większej instancji warto sprawdzić ile faktycznie kosztuje mały VPS miesięcznie.
Powierzchnia ataku jest niewielka i jest to kwestia często błędnie interpretowana. Mostek stanowi pierwszy przeskok. Ruch opuszczający serwer trafia do innego przekaźnika sieci Tor, a nie bezpośrednio do witryny wybranej przez użytkownika. Adres IP operatora nigdy nie pojawia się w logach serwerów WWW jako źródło żądania, więc wiadomości z reklamacjami, z którymi mierzą się operatorzy przekaźników wyjściowych (exit relays), tutaj nie docierają. Mimo to należy sprawdzić politykę dozwolonego użytkowania (AUP) dostawcy, ponieważ niektórzy usługodawcy traktują każdą usługę sieci Tor jako przypadek szczególny. Mostek i usługa onion są pod tym względem swoimi lustrzanymi odbiciami: mostek jest użyteczny tylko wtedy, gdy jego adres jest osiągalny i ostatecznie udostępniany, podczas gdy usługa v3 onion na tym samym typie VPS jest użyteczna tylko wtedy, gdy publiczny adres IP pozostaje ukryty.
Czego nie należy robić: nie należy przekształcać istniejącego publicznego przekaźnika w mostek pod tym samym adresem. Zalecenie Tor Project w takim przypadku brzmi: należy zmienić „adres IP, nazwę oraz odcisk palca (fingerprint)”, ponieważ stary adres znajduje się już w konsensusie pobieranym przez systemy cenzurujące. Mostek, który w poprzednim tygodniu był publicznym przekaźnikiem, jest mostkiem, który już znajduje się na czarnej liście.
Czas pracy (uptime) jest ważniejszy niż prędkość. Wymagania dotyczące przekaźników wskazują, że „jeśli przekaźnik nie działa przez ponad 2 godziny dziennie, jego użyteczność jest ograniczona”. W przypadku mostka sytuacja jest jeszcze trudniejsza, ponieważ każdy klient posiada jeden adres i brak mechanizmu awaryjnego. Restart powoduje rozłączenie wszystkich użytkowników. Warto skonfigurować sprawdzanie portu TCP w Uptime Kuma dla portu obfs4, aby otrzymać powiadomienie w dniu, w którym usługa przestanie odpowiadać.
Instalacja Tor z repozytorium Tor Project
Pakiety dystrybucyjne są przestarzałe, a bridge jest oprogramowaniem zabezpieczającym, które powinno być aktualne. Najpierw należy dodać repozytorium projektu.
sudo apt update
sudo apt install -y apt-transport-https gnupg wget lsb-release
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/nullTeraz należy utworzyć plik źródłowy. Linia Suites: musi zawierać nazwę kodową wydania, dlatego należy odczytać ją z systemu zamiast wpisywać z pamięci.
sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $(lsb_release -cs)
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring obfs4proxyJeśli apt update zgłosi, że repozytorium nie posiada pliku Release dla danej nazwy kodowej, oznacza to, że Tor Project nie wspiera tego wydania. Należy usunąć /etc/apt/sources.list.d/tor.sources, ponownie uruchomić sudo apt update i zainstalować pakiet tor dostarczany przez dystrybucję. Wszystkie poniższe kroki pozostają bez zmian.
Pakiet obfs4proxy pochodzi bezpośrednio z repozytoriów Debian i Ubuntu (wersja 0.0.14 w Debian 13, stan na sierpień 2026). Należy potwierdzić lokalizację pliku binarnego, ponieważ jego ścieżka jest wymagana w konfiguracji:
command -v obfs4proxy || command -v lyrebirdTwórcy zmienili nazwę projektu na lyrebird, więc nowszy pakiet może instalować /usr/bin/lyrebird. Należy użyć ścieżki zwróconej przez to polecenie.
Konfiguracja mostka w /etc/tor/torrc
BridgeRelay 1
ORPort 8443
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:9443
ExtORPort auto
ContactInfo you@example.com
Nickname PickANickname
BridgeDistribution anyKażda z tych linii wiąże się z ryzykiem błędu, dlatego należy je analizować pojedynczo.
BridgeRelay 1 nakazuje tor wysyłanie deskryptora do urzędu mostków (bridge authority) zamiast do publicznego konsensusu. Ta pojedyncza linia sprawia, że przekaźnik nie jest wymieniony na publicznej liście.
ORPort to właściwy port Tor. Musi być on osiągalny z Internetu, ponieważ tor testuje go i odmawia opublikowania deskryptora, dopóki test nie zakończy się powodzeniem.
ServerTransportPlugin przekazuje tor polecenie uruchomienia. tor uruchamia obfs4proxy jako proces potomny i komunikuje się z nim przez potok, dlatego obfs4proxy nie posiada własnej jednostki serwisowej i nigdy nie pojawia się w systemctl status.
ServerTransportListenAddr ustala port, na którym nasłuchuje obfs4proxy. Pominięcie tej linii spowoduje, że obfs4proxy wybierze wolny port przy starcie, a inny po większości restartów, przez co każda udostępniona linia mostka będzie wskazywać na port, na którym nic nie nasłuchuje. Klienci otrzymają odmowę połączenia i przestaną podejmować próby.
ExtORPort auto otwiera rozszerzony ORPort, czyli kanał loopback, którego obfs4proxy używa do przekazywania zakończonych połączeń z powrotem do tor wraz z adresem klienta. Przewodnik konfiguracji Tor Project uwzględnia go w każdym mostku, ponieważ bez niego transport nie może przekazać tego adresu do tor.
ContactInfo oraz Nickname są publiczne. Należy użyć adresu, który jest sprawdzany, ponieważ w ten sposób Tor Project kontaktuje się w sprawie niedziałającego mostka, oraz wybrać pseudonim, który nie identyfikuje użytkownika, jeśli wymagana jest dyskrecja.
BridgeDistribution określa dystrybutora, który przekazuje adres użytkownikom. Akceptowane wartości to https, email, telegram, settings, none oraz any. Należy użyć any dla pierwszego mostka i pozwolić systemowi na wybór. Należy użyć none dla prywatnego mostka udostępnianego samodzielnie, co całkowicie wyklucza adres z publicznej dystrybucji.
Dlaczego wybór portu ma znaczenie
Należy unikać używania portu 9001 dla obu usług. Tor Project wyraźnie odradza to rozwiązanie, ponieważ 9001 jest tradycyjnym portem ORPort, a systemy cenzury skanują pod tym kątem zasoby internetowe. Oba porty muszą być różne, ponieważ tor oraz obfs4proxy uruchamiają własne procesy nasłuchujące.
Najlepszym wyborem dla obfs4 jest port 443. Ruch wychodzący na porcie 443 jest dozwolony w niemal każdej ograniczonej sieci, a długotrwałe połączenie z nim przypomina standardową sesję przeglądarki. Powiązanie portu poniżej 1024 wymaga dodatkowego kroku, ponieważ obfs4proxy nie działa z uprawnieniami root:
sudo setcap cap_net_bind_service=+ep /usr/bin/obfs4proxy
sudo systemctl edit tor@.service tor@default.serviceW każdym otwartym edytorze należy dodać następujące dwie linie:
[Service]
NoNewPrivileges=noSama zdolność (capability) nie wystarcza. Ustawienie NoNewPrivileges w systemd uniemożliwia procesowi uzyskanie jakichkolwiek uprawnień, których nie posiadał proces nadrzędny, a zdolność pliku jest właśnie takim uprawnieniem. W rezultacie obfs4proxy nie może powiązać portu 443, dopóki to ustawienie pozostaje aktywne.
Jeśli ten krok ma zostać pominięty, należy wybrać niepozorny port z wysokiego zakresu i zapisać go. Niezależnie od wyboru, portu obfs4 nie należy później zmieniać. Linia mostka (bridge line) wiąże ze sobą adres, port, odcisk palca (fingerprint) oraz certyfikat, więc każda kopia zapisana w przeglądarce użytkownika przestanie działać w momencie zmiany portu.
Otwarcie portów na obu zaporach sieciowych
sudo ufw allow 8443/tcp
sudo ufw allow 9443/tcp
sudo ufw statusOba porty muszą być otwarte. Większość dostawców stosuje dodatkową zaporę sieciową w panelu sterowania, o której ufw nie posiada informacji. Reguła istniejąca na serwerze, lecz nieobecna w panelu, tworzy most, który pozostaje nieosiągalny i nigdy nie publikuje deskryptora. Jeśli którykolwiek z tych elementów jest nowy, reguły ufw wymagane dla nowego VPS oraz czym w rzeczywistości jest port nasłuchujący w systemie Linux zawierają stosowne wyjaśnienia. Przy okazji warto zabezpieczyć SSH za pomocą kluczy oraz wzmocnionej konfiguracji sshd. Niezabezpieczony most na serwerze z uwierzytelnianiem SSH hasłem nadal pozostaje serwerem z uwierzytelnianiem SSH hasłem.
Uruchomienie i odczyt dziennika
sudo systemctl enable --now tor.service
sudo systemctl restart tor.service
sudo journalctl -e -u tor@defaultSystemy Debian i Ubuntu dostarczają dwie jednostki. tor.service to niewielki skrypt opakowujący, a tor@default.service to proces wykonujący właściwą pracę. Dlatego journalctl -u tor wydaje się niemal pusty, podczas gdy dziennik, którego szukasz, znajduje się pod tor@default.
Dwie linie potwierdzają poprawne działanie:
Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Registered server transport 'obfs4' at '0.0.0.0:9443'Pierwsza oznacza, że test osiągalności zakończył się powodzeniem, a deskryptor został wysłany do urzędu mostów (bridge authority). Jeśli komunikat się nie pojawia, oznacza to, że coś pomiędzy Internetem a serwerem blokuje ruch do obfs4 na porcie ORPort. Druga linia musi wskazywać port, który został skonfigurowany. Inny port oznacza, że tor nie zastosował ServerTransportListenAddr. Najczęstszą przyczyną jest niezgodność nazwy transportu: musi ona brzmieć obfs4 w obu dyrektywach.
Potwierdź istnienie dwóch procesów nasłuchujących:
sudo ss -lntp | grep -E 'tor|obfs4|lyrebird'Gdzie znajduje się moja linia bridge?
Narzędzie obfs4proxy zapisuje szablon w katalogu danych usługi tor:
sudo cat /var/lib/tor/pt_state/obfs4_bridgeline.txtKatalog ten należy do użytkownika tor i posiada uprawnienia 700, dlatego bez sudo wystąpi błąd Permission denied. Plik zawiera linię o następującym formacie:
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=<CERTIFICATE> iat-mode=0Zastąp <IP ADDRESS> publicznym adresem serwera, <PORT> portem obfs4 (nie ORPort), a <FINGERPRINT> odciskiem palca (fingerprint) tożsamości, który usługa tor zapisała w swoim katalogu danych:
sudo cat /var/lib/tor/fingerprint
sudo cat /var/lib/tor/hashed-fingerprintPierwszy plik zawiera nazwę (nickname) oraz odcisk palca tożsamości, który należy umieścić w linii bridge. Drugi plik zawiera zahaszowany odcisk palca, który wkleja się w Relay Search, aby sprawdzić, czy bridge działa i ilu klientów mniej więcej z niego korzysta. Te dwie wartości nie są zamienne. Linia bridge zawierająca wartość zahaszowaną nie pasuje do klucza tożsamości prezentowanego przez bridge, przez co klient odrzuci nawiązane połączenie.
W jaki sposób bridge dociera do użytkowników?
Bridge line nie jest przekazywany nikomu bezpośrednio. Gdy deskryptor dotrze do bridge authority, system dystrybucji (rdsys, następca BridgeDB) przypisuje bridge do jednego z dystrybutorów, od którego użytkownicy pobierają adresy. Według stanu na sierpień 2026 r. dostępne są następujące ścieżki:
- Formularz internetowy pod adresem bridges.torproject.org/options, który udostępnia bridge lines po rozwiązaniu captcha.
- Wiadomość e-mail wysłana na adres bridges@torproject.org z konta Gmail lub Riseup, w odpowiedzi na którą przesyłane są bridge lines. Ograniczenie dostawców wynika z faktu, że nieograniczone darmowe konta pozwoliłyby cenzorowi na wyliczenie wszystkich dostępnych bridge'y.
- Bot w serwisie Telegram o nazwie @GetBridgesBot. Należy wysłać
/start, a następnie/obfs4lub/webtunnel. - Przeglądarka Tor Browser, w sekcji Ustawienia, a następnie Połączenie, gdzie opcja "Request bridges" pobiera je za pośrednictwem kanału moat.
Nowy bridge pojawia się w Relay Search około trzy godziny po konfiguracji. Użytkownicy pojawiają się znacznie później: według oficjalnej dokumentacji Tor Project "może minąć kilka dni lub tygodni, zanim zaobserwuje się stałą grupę użytkowników". Spokojne pierwsze dwa tygodnie są zjawiskiem normalnym, a nie błędem.
Ustawienie BridgeDistribution none wyłącza wszystkie powyższe mechanizmy. W takim przypadku bridge line należy przekazać samodzielnie osobom, które go potrzebują, korzystając z kanału komunikacji, który nie jest monitorowany przez cenzora.
Gdy coś nie działa
Brak linii autotestu w logu. ORPort jest nieosiągalny. Przetestuj go z innej maszyny za pomocą nc -vz your.ip 8443. Zawieszenie oznacza, że pakiety są odrzucane, więc sprawdź ufw oraz panel dostawcy. Odmowa połączenia oznacza, że tor nie nasłuchuje, więc sprawdź ss -lntp i przeczytaj log w poszukiwaniu błędu konfiguracji.
Zarejestrowany transport wskazuje port, którego nie wybrano. tor zignorował ServerTransportListenAddr. Nazwa transportu musi być dokładnie zgodna z tą w ServerTransportPlugin, a obie muszą być obfs4.
obfs4proxy nie może powiązać portu 443. Potwierdź uprawnienia za pomocą getcap /usr/bin/obfs4proxy, a następnie sprawdź, czy nadpisanie dotarło do jednostki za pomocą systemctl show tor@default -p NoNewPrivileges. Jeśli polecenie zwróci NoNewPrivileges=yes, plik typu drop-in został przypisany do jednostki, która nie jest uruchomiona.
Brak zawartości w /var/lib/tor/pt_state/. tor nigdy nie uruchomił transportu, co oznacza, że ścieżka w ServerTransportPlugin jest błędna. Porównaj ją z wynikiem command -v obfs4proxy.
Klienci przestali się łączyć po wprowadzeniu zmian. Każda zmiana adresu lub portu obfs4 unieważnia wszystkie linie bridge, które zostały już rozpowszechnione. Sprawdź, czy publiczny adres IP serwera również uległ zmianie, co zdarza się przy przebudowie instancji u niektórych dostawców.
tor w ogóle się nie uruchamia. Uruchom sudo -u debian-tor tor --verify-config -f /etc/tor/torrc. Polecenie to analizuje plik, wyświetla linię, do której zgłasza zastrzeżenia, i nie ingeruje w działającą usługę.
FAQ
Czy dostawca VPS będzie zgłaszał zastrzeżenia do mostka Tor?
Mostek jest punktem wejściowym, więc ruch opuszczający serwer kierowany jest do innych przekaźników sieci Tor, a nie do witryn odwiedzanych przez użytkowników. Adres IP serwera nie pojawia się w logach stron jako źródło żądania, co eliminuje skargi, z którymi mierzą się operatorzy przekaźników wyjściowych. Zasady hostingu bywają różne, a niektórzy dostawcy traktują każdą usługę Tor w sposób szczególny. Należy zapoznać się z regulaminem świadczenia usług przed rozpoczęciem pracy i podać adres e-mail do kontaktu w ContactInfo.
Ile pasma zużywa mostek Tor?
Publikowane minimum to 1 Mbit/s w górę i w dół, w porównaniu do 10 Mbit/s dla przekaźnika typu guard lub middle. Rzeczywiste zużycie zaczyna się od zera, ponieważ mostek obsługuje ruch tylko dla użytkowników skierowanych przez dystrybutorów. Aby nałożyć sztywny limit, należy skonfigurować RelayBandwidthRate oraz RelayBandwidthBurst w pliku torrc.
Dlaczego nikt nie łączy się z moim nowym mostkiem?
Pojawienie się mostka w Relay Search zajmuje około trzech godzin, a według wytycznych Tor Project zbudowanie stałej grupy użytkowników trwa od kilku dni do kilku tygodni. Należy sprawdzić, czy deskryptor został opublikowany (wiersz self-testing w journalctl -u tor@default), wyszukać haszowany odcisk palca (fingerprint) w Relay Search i potwierdzić, że BridgeDistribution nie jest ustawione na none.
Czy uruchomić obfs4 czy WebTunnel?
W przypadku pierwszego mostka należy wybrać obfs4: jeden VPS, dwa porty, brak domeny, brak certyfikatu. WebTunnel należy uruchomić tam, gdzie blokowany jest ruch wyglądający na nietypowy, ponieważ wymaga on posiadania domeny, działającego serwera WWW, ważnego certyfikatu TLS oraz co najmniej 1 GB pamięci RAM. W przypadku uruchamiania obu usług należy przypisać je do różnych adresów IP, ponieważ zablokowanie jednego adresu spowoduje wyłączenie obu mostków jednocześnie.
Co się stanie, jeśli później zmienię port obfs4?
Każda udostępniona wcześniej linia mostka przestanie działać. Linia mostka wiąże ze sobą adres, port, odcisk palca oraz certyfikat, więc klient posiadający starą linię otworzy połączenie do portu, na którym nic nie nasłuchuje, i przerwie próbę połączenia. To samo dotyczy zmiany publicznego adresu IP serwera. Port należy wybrać podczas konfiguracji i pozostawić go bez zmian.