Které porty VPN otevřít v bráně firewall: protokol po protokolu
PPTP potřebuje TCP 1723 plus GRE, L2TP/IPsec potřebuje UDP 500 a 4500 plus ESP a SSTP, OpenVPN a WireGuard potřebují každý jeden port. Tady je, co otevřít.
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.
| Family | Rule to add on the gateway | Typical mistake |
|---|---|---|
| WireGuard | UDP port from ListenPort, for the peer address | Assuming 51820 when the config says otherwise |
| OpenVPN | The configured UDP or TCP port, often 443 | Opening 1194 after the server moved |
| SSTP | TCP 443 limited to the gateway IP | Allowing 443 to any destination |
| IKEv2 | UDP 500 and UDP 4500, plus ESP | Allowing only 500 and losing NAT-T |
| L2TP/IPsec | UDP 500, 4500, ESP, and 1701 inside the tunnel | Exposing 1701 to the internet |
| PPTP | TCP 1723 and IP protocol 47 | Writing 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.