Připojte se k firemní VPN, spusťte malou službu na portu 8443, pošlete adresu tunelu kolegovi a sledujte, jak spojení selhává, zatímco klient stále hlásí, že je připojen. V tunelu není nic rozbité: adresa byla přidělena, relace běží a pakety, které by nesly odpověď, prostě nikdy neprojdou. Proveďte tři níže uvedené kontroly popořadě a zastavte se u té, která selže, protože každá má jinou opravu a jen jedna z nich se týká VPN.

Začněte tím, kam je socket skutečně navázán

Než se cokoli začne směrovat, musí něco naslouchat na adrese, kterou volající dosáhne. Vývojové servery bývají obvyklým viníkem, protože mnohé se ve výchozím nastavení navazují na loopback a přijímají jen spojení, která vznikají na stejném stroji. Adresa tunelu toto navázání nemění a operační systém spojení odmítne dávno předtím, než se VPN vůbec zapojí.

ss -ltnp | grep 8443
netstat -ano | findstr 8443

Čtěte sloupec místní adresy, ne stav. 127.0.0.1:8443 znamená jen loopback a opravou je navázání na 0.0.0.0 nebo přímo na adresu tunelu. 0.0.0.0:8443 přijímá na všech rozhraních, což je širší, než většina lidí zamýšlí, když má stroj i veřejnou adresu; 10.64.7.15:8443 je úzká verze, která naslouchá jen tam, kam se kolega dostane. Všimněte si i názvu procesu ve stejném výstupu, protože zbloudilá instance z dřívějšího testu bývá častou příčinou, že port vypadá otevřený a odpovídá špatným obsahem.

Pak se ptejte, zda k té adrese umí něco směrovat

Adresa tunelu má smysl jen pro protějšky nakonfigurované tak, aby tento prefix posílaly do tunelu. Kolegův stroj má vlastní tabulku, a pokud nemá trasu do podsítě tunelu, paket jde na výchozí bránu a zemře na místě, které o existenci adresy nemá tušení. To je otázka směrování na straně volajícího, ne oprávnění na vaší straně.

Symptom from the callerWhat it usually meansWhere to look next
Connection refused immediatelyNothing is listening on the address the packet reachedThe bind address and the process owning the port
Connection times out with no replyA policy dropped the packet, or no route returnsServer forwarding, host firewall, cloud security group
Works from the same machine onlyListener is on loopback, or no route reaches the tunnel addressBind address, then the caller's route to that prefix

Server mezi oběma klienty je stejně důležitý. V obvyklém návrhu vzdáleného přístupu otevírá každý klient odchozí spojení k bráně a brána si drží stav těchto toků, takže odpovědi se vracejí cestou, kterou už zná. Spojení z jednoho klienta na druhého je nový tok, který brána musí přijmout a předat, a mnohá nasazení to záměrně vypínají, aby klienty udržela navzájem izolované. Spotřebitelské VPN služby obvykle izolují ve výchozím nastavení; podnikové brány to někdy povolují po skupinách.

Ověřte směr, než na hostiteli cokoli změníte. Pokud adresa tunelu odpovídá z brány samotné, ale ne od protějšku, rozdílem je nastavení brány klient-klient a žádné úpravy místního firewallu to nenahradí.

Nakonec najděte politiku, která tok povoluje

Mezi směrovaným paketem a službou, která odpovídá, stojí tři vrstvy politiky: rozhodnutí VPN serveru o předávání, firewall hostitele a jakákoli cloudová bezpečnostní skupina před instancí. Všechny tři musí souhlasit a selhávají různými způsoby, proto je symptom v tabulce výše užitečnější než chybová zpráva v prohlížeči.

Firewall hostitele je vrstva, na kterou lidé po úspěšném navázání zapomínají, protože pravidlo, které povoluje port na rozhraní LAN, jej automaticky nepovolí na rozhraní tunelu. Pravidla omezená na rozhraní jsou správný návrh a zároveň obvyklá příčina služby, která funguje z kanceláře a ne z domova. Čtěte rozsah pravidla, ne číslo portu.

Filtrování se stavem vysvětluje opačný případ. Odchozí spojení z vašeho notebooku vytvoří stav a odpovědi na něj procházejí bez příchozího pravidla. Kolegovo spojení je zcela nový tok bez stavu za sebou, takže potřebuje výslovné povolení. Tato asymetrie je celý důvod, proč funkční relace prohlížeče na vašem stroji nic neříká o tom, zda je služba dostupná zvenčí.

Když jedna kontrola selže, změňte návrh, ne tunel

Pokud je požadavkem, aby kolega otevřel vaši místní službu, poctivou odpovědí je obvykle mechanismus postavený pro příchozí přístup. Reverzní SSH tunel je nejmenší: váš stroj se odchozím spojením připojí k hostiteli, který kolega už dosáhne, a naslouchač existuje na onom hostiteli.

ssh -N -R 8443:127.0.0.1:8443 [email protected]

Přeposílač potřebuje GatewayPorts clientspecified ve své konfiguraci SSH serveru, jinak se předaný naslouchač naváže na loopback na přeposílači a kolega narazí na stejné odmítnutí jako předtím. Pro cokoli, co vydrží déle než odpoledne, je lepším nástrojem vyvažovač zátěže nebo ingress s kontrolou stavu a certifikátem pro zveřejněné jméno, a tunel mezi lokalitami s trasami pro obě podsítě je správná odpověď, když spolu dvě sítě opravdu potřebují mluvit.

Každý z těchto návrhů činí expozici explicitní, a o to jde. VPN přenáší pakety mezi sítěmi, které jste už směli používat; nepublikuje službu a nemění notebook v hostitele obráceného do internetu. Úkolem je rozhodnout, kterou ze tří vrstev změnit, a tunel mezi nimi bývá jen zřídka.

Související články