O tunelu VPN rozhodují dvě samostatná pravidla: port, na který klient vytáčí spojení, a protokol, který přenáší užitečné zatížení. Otevřete jen první a tunel se ověří, ale pak už nepřenese žádná data. Minimum je jeden port TCP plus GRE pro PPTP, dva porty UDP plus ESP pro L2TP/IPsec a IKEv2 a jediný port pro SSTP, OpenVPN a WireGuard. O zbytek se postará směr, sledování stavu a NAT.

Začněte portem, na který klient vytáčí spojení

Každá rodina má vstupní bod, který klient kontaktuje jako první, a právě ten musí vaše povolovací pravidlo pojmenovat. Klienti PPTP se připojují k TCP 1723. L2TP/IPsec začíná IKE na UDP 500 a po zapnutí průchodu NAT přechází na UDP 4500, přičemž samotný rámec L2TP je na UDP 1701 uvnitř tunelu. SSTP zabaluje relaci do TLS na TCP 443, IKEv2 vyjednává na UDP 500 a 4500, OpenVPN standardně používá UDP 1194, ale často se přesouvá na TCP 443, a WireGuard poslouchá na UDP 51820.

FamilyRule to add on the gatewayTypical mistake
WireGuardUDP port from ListenPort, for the peer addressAssuming 51820 when the config says otherwise
OpenVPNThe configured UDP or TCP port, often 443Opening 1194 after the server moved
SSTPTCP 443 limited to the gateway IPAllowing 443 to any destination
IKEv2UDP 500 and UDP 4500, plus ESPAllowing only 500 and losing NAT-T
L2TP/IPsecUDP 500, 4500, ESP, and 1701 inside the tunnelExposing 1701 to the internet
PPTPTCP 1723 and IP protocol 47Writing a rule for TCP 47

Berte ta čísla jako výchozí hodnoty, ne jako pevné vlastnosti. Rozhraní WireGuard používá jakýkoli port pro naslouchání, který ohlásí jeho konfigurace, a server OpenVPN může sedět na kterémkoli portu, který správce zvolil. Přečtěte si konfiguraci serveru, než pravidlo napíšete, protože brána otevřená pro 1194 neudělá nic pro server přesunutý na 443.

Třetí sloupec je místo, kde většina požadavků na změnu skončí špatně. Pravidlo existuje, ale míří na špatné cílové umístění, špatný směr nebo špatný transport.

GRE a ESP jsou čísla protokolů, ne porty

GRE a ESP nemají vůbec žádné porty, takže formulář brány, který přijímá jen čísla portů, je nemůže vyjádřit. GRE je IP protokol 47 a ESP je IP protokol 50, oba se párují podle pole protokolu v hlavičce IP. Pravidlo napsané jako TCP port 47 neodpovídá ničemu, a tak politika PPTP vypadá správně a přesto zahodí každý paket po navázání spojení.

Domácí routery to schovávají za zaškrtávacím políčkem průchodu, které nainstaluje pravidlo protokolu a u GRE i pomocníka NAT potřebného ke sledování toku. Na skutečné bráně přidáte protokol sami: povolte IP protokol 47 k serveru PPTP, povolte IP protokol 50 k bráně IPsec. Kde platforma pole protokolu nenabízí, je východiskem zapouzdření, a proto se IKEv2 může vrátit na UDP 4500 a proto OpenVPN a WireGuard na problém nikdy nenarazí.

Než obviníte klienta, zkontrolujte, čemu pravidlo skutečně odpovídá. Čítač paketů, který na bráně zůstane na nule, říká, že pravidlo nikdy nevystřelilo, a žádné přeinstalování na straně klienta to nezmění.

Směr, stav a NAT mění odpověď

Klient, který vytáčí ven, a brána, která poslouchá dovnitř, jsou různé požadavky a stejný seznam portů může být správný v jednom směru a špatný ve druhém. Stavová brána sleduje tok UDP na 500 a 4500 a pustí odpovědi zpět bez druhého pravidla. ESP a GRE nenesou porty, takže zařízení NAT nemá na co navázat a potřebuje pomocníka nebo zapouzdření, aby relaci sledovalo.

Průchod NAT je část, která se přehlíží. IKEv2 začíná na UDP 500, rozpozná zařízení NAT a pokračuje na UDP 4500, takže politika povolující jen 500 dá tunel, který se naváže a pak ztichne. L2TP/IPsec udělá stejný pohyb. Pokud váš odposlech ukáže první výměnu, ale ne trvalý provoz, hledejte pravidlo, které končí na 500.

Zapisujte směr u každého pravidla. „Povolit UDP 4500“ neznamená nic, dokud neřeknete odkud kam, a pravidlo správné pro roamingového klienta je obvykle špatné pro protějšek typu lokalita-lokalita.

Ověřte každou cestu odposlechem

Spusťte odposlech na bráně, ne na klientovi: klient zaznamená jen to, co dorazilo. Tyto filtry pokrývají rodiny výše a ukážou, která etapa chybí:

sudo tcpdump -ni any tcp port 1723
sudo tcpdump -ni any udp port 500 or udp port 4500
sudo tcpdump -ni any proto gre
sudo tcpdump -ni any proto 50

Čtěte výstup jako posloupnost. Když se objeví vyjednávání, ale protokol užitečného zatížení ne, zahození nastává někde mezi klientem a bránou. Když se objeví obojí a stránka stále nefunguje, brána už není podezřelá; podívejte se na směrování, DNS nebo fond adres přidělený klientovi.

Na stroji bez tcpdump přinesou stejný důkaz čítače rozhraní a pravidel. Bajty, které na rozhraní tunelu vstupují, ale nevystupují, ukazují na zpáteční cestu, nikoli na počáteční povolovací pravidlo.

Nechte po sobě sadu pravidel, kterou umíte obhájit

SSTP na TCP 443 je pro každý filtr založený na portech nerozeznatelné od běžného HTTPS, a to je smysl, když síť povoluje jen webový provoz. Proto má pravidlo pro 443 jako cíl jmenovat bránu, a ne celý internet. Dočasná pravidla typu cokoli-kamkoli mažte, jakmile tunel funguje. Zapište, které pravidlo odpovídalo, číslo protokolu, kde nějaké je, a směr, aby příští člověk začal od důkazů.

Cloudové brány typu bod-lokalita volbu zviditelní: stažený profil používá buď SSTP na 443, nebo IKEv2 na 500 a 4500, a otevřít máte jen ten, který profil skutečně zvolí. PPTP za výjimku pro GRE v moderní síti nestojí, protože mobilní operátoři často zahazují protokol 47 bez ohledu na vaši bránu. Než požadavek zavřete, ověřte, že pravidlo odpovídá portu v konfiguraci serveru, že pole protokolu je nastaveno tam, kde ho rodina potřebuje, a že cílem je brána, a ne jakákoli adresa.

Související články