TCP 443 to droga zapasowa z warunkiem wstępnym, nie przebranie, które przemyka tunel obok dowolnego filtra. Pomaga, gdy operator już publikuje nasłuch TCP na tym porcie, a ścieżka znosi połączenie utrzymywane otwarte godzinami. Zawodzi, zwykle jako przekroczenie czasu, gdy brakuje jednego z tych dwóch, a przekroczenie czasu rzadko mówi którego. Decyzja o przełączeniu wymaga trzech pytań, a tylko jedno z nich dotyczy numeru portu.

Numer portu nie jest obietnicą transportu

Port nazywa punkt końcowy; TCP zamienia go w uporządkowany strumień bajtów; OpenVPN decyduje, co podróżuje w tym strumieniu. Serwer www na tym samym numerze używa zupełnie innego układu aplikacji, więc wspólny port 443 sprawia, że oba wyglądają dla filtra podobnie i nic więcej. Numer jest wskazówką, którą filtr czyta, a nie cechą zmieniającą zawartość pakietów. Traktowanie ich jako tego samego, bo dzielą port, jest błędem stojącym za większością tutejszego zamieszania.

Urządzenia pośredniczące rzadko podejmują prostą decyzję zezwól-albo-zablokuj dotyczącą portu. Wiele sprawdza pierwsze bajty, niektóre przypinają cel, a inne resetują połączenia pozostające zbyt długo otwarte. Dlatego ten sam profil może działać z jednej sieci i przekraczać czas z innej, i dlatego drogę zapasową warto testować jako wspieraną opcję, a nie ufać jej jak obietnicy. Gdy filtr bada ruch, numer portu jest tylko pierwszą rzeczą, na którą patrzy.

Potwierdź nasłuch, zanim dotkniesz profilu

Serwer musi być skonfigurowany dla TCP na tym porcie, a profil klienta musi prosić o ten sam transport. Przepisanie profilu UDP tak, by prosił o TCP, nie tworzy nasłuchu, a wynikłe przekroczenie czasu jest nieodróżnialne od zapory, która odrzuca port. Pobierz własny profil TCP operatora, gdy istnieje, bo niektóre usługi publikują osobny punkt końcowy i osobne ustawienia tożsamości dla każdego transportu. Ręczna edycja jest dobra do kontrolowanego testu i złym sposobem odgadywania zamierzonej konfiguracji dostawcy.

Obie strony tego dopasowania widać w konfiguracji, a opcje łącza projektu OpenVPN dokumentują oba warianty. Minimalna para wygląda tak:

# server: accept TCP on this port
proto tcp-server
port 443
# client: request the same transport
proto tcp
remote vpn.example.com 443

Trzy warunki decydują, czy droga zapasowa się opłaca

Pierwszy warunek to to, że operator w ogóle oferuje ten transport; bez tego nic innego się nie liczy. Drugi to utrzymanie długotrwałej sesji przez ścieżkę, ponieważ niektóre sieci resetują połączenia pozostające otwarte, zamiast blokować port całkowicie. Trzeci to pytanie, czy droga zapasowa jest świadomym wyjątkiem, czy obejściem ukrywającym usterkę, której nie naprawiono.

Każdy warunek ma tanią kontrolę. Niepowodzenie któregokolwiek z nich wygląda z perspektywy klienta tak samo:

ConditionHow to check itWhat a failure decides
The server offers TCPThe operator's profile list, or a listening-socket check on the serverNo client-side edit can help
The path keeps long sessionsA test connection left open for an hourReconnects will look like server faults
The fallback is deliberateA change record naming the UDP faultThe underlying fault stays invisible

Zanim porównasz transporty, dokończ każde logowanie w portalu przechwytującym. Sieć, która nie wpuściła twojego urządzenia, blokuje oba transporty, a porównanie mierzy wtedy portal, a nie tunel. Zaloguj się, potwierdź, że zwykłe przeglądanie działa, i dopiero potem rozpocznij test.

Koszt, który akceptujesz: TCP w TCP

TCP ponownie wysyła utracone segmenty i zachowuje ich kolejność. Gdy aplikacja, która także używa TCP, działa wewnątrz tunelu TCP, dwie warstwy odzyskiwania reagują na tę samą utratę, i właśnie ta interakcja sprawia, że tunel wydaje się wolny na ścieżce z utratami. Objawem jest opóźnienie i jitter, a nie czyste niepowodzenie, co ułatwia obwinianie drugiego końca. Mierz od klienta przy obu transportach, zanim wyciągniesz wniosek.

UDP unika tego zagnieżdżenia, i to jest główny powód, dla którego operatorzy wolą je i oferują TCP tylko jako alternatywę. Stabilne połączenie TCP jest wciąż użyteczniejsze niż nieosiągalne połączenie UDP, więc porównanie odbywa się między dwoma realnymi kosztami, a nie między dobrą i złą opcją. Utrzymuj urządzenie i sieć dostępową bez zmian podczas porównania, inaczej wynik opisze niewłaściwą zmienną.

Niektóre funkcje klienta są udokumentowane tylko dla jednego transportu, więc profil zapasowy może po cichu pominąć zachowanie, na którym polegałeś. Przeczytaj wymóg transportowy opcji, zanim potraktujesz profil TCP jako zwykłą zamianę.

Usterki, których inny transport nie dotyka

Wygasły certyfikat nadal wymaga sprawdzenia zegara lub odnowienia, a odrzucone konto nadal wymaga właściwych poświadczeń. Zachowaj kontrole tożsamości serwera dostarczone przez operatora, ponieważ znany numer portu nikogo nie uwierzytelnia. Port, który odpowiada, mówi tylko, że coś nasłuchuje.

Jeśli tunel wstanie, a cele nadal zawodzą, pozostałym problemem jest routing lub rozwiązywanie nazw po połączeniu, a nie transport. Podążaj tą ścieżką zamiast krążyć po portach, bo tak znika popołudnie. Profil mówi, którego transportu spróbować; nigdy nie mówi, dlaczego ścieżka UDP zawiodła.

Powiązane artykuły