OpenVPN se v hotelové Wi-Fi nepřipojí? Zkuste TCP 443
Profil, který doma funguje a v hotelové nebo kampusové Wi-Fi se zasekne, ztrácí svůj transport. Dokažte blokování, přesuňte listener na TCP 443 a poznejte cenu.
Otevřete klienta, stiskněte Connect a čtěte stavový řádek místo dialogu, který po něm následuje. Profil, který se po hotelové, kampusové nebo mobilní síti zasekne na Connecting nebo Waiting for server, obvykle ztratil transport někde na cestě, ne své přihlašovací údaje. Užitečným dalším krokem je zjistit, co tato síť přenáší, než se dotknete serveru. Neměňte nic, dokud stejný profil nefunguje jinde.
Nejprve to vyzkoušejte z mobilního hotspotu. Pokud tam tunel naskočí, server, certifikát i účet jsou v pořádku a jedinou zbývající proměnnou je síť před vámi.
Začněte u klienta: přečtěte stavový řádek
Stavový řádek říká, která fáze selhala. Klient zaseknutý na Connecting stále překládá jméno hostitele nebo otevírá vnější socket; ten, který dosáhne Waiting for server, má cestu, ale žádnou odpověď; ten, který se autentizuje a pak spadne, má úplně jiný problém. Klientský log a vlastní pole remote a proto profilu ukazují, co se klient snaží dělat, a --verb 4 u klienta z příkazové řádky vypíše stejné podrobnosti. Právě srovnání se sítí před vámi mění tvrzení „VPN je blokovaná“ v konkrétní výrok.
Poté sondujte síť nástroji, které už máte. nc -vzu 203.0.113.10 1194 odešle UDP datagram, curl -v telnet://203.0.113.10:443 hlásí, zda se dokončí TCP handshake, a prohlížeč, který načte HTTPS stránku, dokazuje jen to, že odchozí 443 dosáhne na tento jediný hostitel. Malé sondy odpovídají na to, co VPN klient nedokáže: který port a protokol vůbec opouštějí tuto síť.
Tři síťová chování vypadají z klienta stejně a vyžadují různé odpovědi. Odchozí 443 může být otevřený, může být povolen jen proxy, nebo se 443 může průhledně přeposílat do inspekčního boxu, který nedokáže přečíst, co nese. První řeší změna profilu níže, druhé nastavení proxy a třetí může dokončit handshake a pak se zaseknout, když inspektor usoudí, že mu ten tok nesedí. Vědět, se kterým z nich se potýkáte, je rozdíl mezi změnou na deset minut a odpolednem reinstalace klientů.
Přesuňte listener i profil společně
Na straně serveru nastavte listener na to, co síť dovoluje: port 443 a proto tcp v konfiguraci serveru, poté restartujte službu a ověřte socket pomocí ss -lntp. Na straně klienta musí profil souhlasit, protože transport a port stojí mimo tunel: proto tcp a port 443 v .ovpn, nebo odpovídající pole na obrazovce nastavení aplikace. Profil stále mířící na UDP 1194 selže přesně jako dřív a pokušení je obviňovat firewall, který je už opravený. Pokud stejný hostitel odpovídá i na HTTPS na 443, dva listenery nemohou sdílet tuto adresu a protokol; dejte VPN druhou adresu nebo před ni postavte demultiplexor.
Sledujte první spojení pomocí tcpdump -ni any port 443 na obou koncích. Pakety, které opustí klienta a nikdy nedorazí, znamenají, že síť přece jen filtruje, nebo že adresa v profilu není ta, kterou předpokládáte. Pakety, které dorazí bez odpovědi, vás vrátí k serverovému logu, kde se nesoulad protokolu okamžitě projeví jako zahozený paket.
Když ze sítě vychází jen proxy
Některé hostitelské sítě nepovolují nic než HTTP proxy, což je jiné omezení než zavřený port a vylučuje víc než OpenVPN. Klienti, kteří mluví jen PPTP, L2TP/IPsec nebo holým IPsec, přes ni nemají cestu, protože tyto konstrukce čekají, že jejich vnější protokol dosáhne serveru přímo. OpenVPN to umí, s http-proxy proxy.example.net 8080 v klientském profilu, pokud proxy povoluje metodu CONNECT na váš port. SOCKS proxy je ještě snazší, protože předává tok bez ohledu na to, co je uvnitř.
Kde klient nemá podporu proxy, obvykle zbývá SSH tunel přes 443. Přidává druhou vrstvu a provozovatel sítě k němu může mít výhrady, takže ho berte jako most na jednu cestu, ne jako architekturu.
Cenu záložního řešení si spočítejte, než si ho necháte
TCP uvnitř TCP má známou cenu. Když je vnější spojení TCP a užitečné zatížení také TCP, ztracený segment spustí retransmisi na obou vrstvách a vnitřní spojení couvne před ztrátou, kterou nevidí. Prohlížení to přežije; interaktivní relace a hovory to pocítí. Ponechte listener TCP 443 jako zálohu pro sítě, které ho vyžadují, a UDP nechte jako výchozí pro vše, co ho ještě propouští.
Zapište volbu do názvu profilu a do poznámek podpory: který port, který protokol a která síť ji vyvolala. Potom se zeptejte správce sítě, zda tento port zůstane otevřený i po příští obnově vybavení, protože záloha, která tiše zmizí, je horší než žádná záloha.