Två separata regler avgör om en VPN-tunnel överlever en brandvägg: porten klienten ringer och protokollet som bär nyttolasten. Öppna bara den första och tunneln autentiseras, men därefter flyttas inga data. Minimumet är en TCP-port plus GRE för PPTP, två UDP-portar plus ESP för L2TP/IPsec och IKEv2, och en enda port för SSTP, OpenVPN och WireGuard. Riktning, tillståndsspårning och NAT avgör resten.

Börja med porten klienten ringer

Varje familj har en ingångspunkt som klienten kontaktar först, och det är den ingångspunkten din tillåtelseregel måste namnge. PPTP-klienter ansluter till TCP 1723. L2TP/IPsec startar IKE på UDP 500 och går över till UDP 4500 när NAT-traversering används, medan själva L2TP-ramen ligger på UDP 1701 inne i tunneln. SSTP packar in sessionen i TLS på TCP 443, IKEv2 förhandlar på UDP 500 och 4500, OpenVPN använder UDP 1194 som standard men flyttas ofta till TCP 443, och WireGuard lyssnar på 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

Behandla dessa tal som standardvärden och inte som fasta egenskaper. Ett WireGuard-gränssnitt använder den lyssningsport som konfigurationen anger, och en OpenVPN-server kan sitta på vilken port administratören valde. Läs serverkonfigurationen innan du skriver regeln, för en brandvägg som öppnats för 1194 gör ingenting för en server som flyttats till 443.

Den tredje kolumnen är där de flesta ändringsärenden går fel. Regeln finns, men den pekar på fel mål, fel riktning eller fel transport.

GRE och ESP är protokollnummer, inte portar

GRE och ESP har inga portar alls, så ett brandväggsformulär som bara tar emot portnummer kan inte uttrycka dem. GRE är IP-protokoll 47 och ESP är IP-protokoll 50, båda matchas via protokollfältet i IP-huvudet. En regel skriven som TCP-port 47 matchar ingenting, och så kan en PPTP-policy se korrekt ut och ändå släppa varje paket efter handskakningen.

Konsumentroutrar gömmer detta bakom en genomgångsruta som installerar protokollregeln och, för GRE, den NAT-hjälpare som behövs för att kartlägga flödet. På en riktig brandvägg lägger du till protokollet själv: tillåt IP-protokoll 47 till PPTP-servern, tillåt IP-protokoll 50 till IPsec-gatewayen. Där plattformen inte erbjuder något protokollfält är inkapsling vägen ut, därför kan IKEv2 falla tillbaka på UDP 4500 och därför stöter OpenVPN och WireGuard aldrig på problemet.

Kontrollera vad regeln faktiskt matchar innan du skyller på klienten. En paketräknare som står kvar på noll i gatewayen säger att regeln aldrig utlöstes, och ingen mängd ominstallation på klientsidan ändrar det.

Riktning, tillstånd och NAT ändrar svaret

En klient som ringer ut och en gateway som lyssnar in är olika krav, och samma portlista kan vara rätt i en riktning och fel i den andra. En tillståndsbaserad brandvägg spårar UDP-flödet på 500 och 4500 och släpper tillbaka svaren utan en andra regel. ESP och GRE bär inga portar, så en NAT-enhet har ingenting att fästa vid och behöver en hjälpare eller en inkapsling för att följa sessionen.

NAT-traversering är den del som glöms bort. IKEv2 börjar på UDP 500, upptäcker en NAT-enhet och fortsätter på UDP 4500, så en policy som bara tillåter 500 ger en tunnel som etableras och sedan tystnar. L2TP/IPsec gör samma rörelse. Om din inspelning visar det första utbytet men inte varaktig trafik, leta efter en regel som stannar vid 500.

Anteckna riktningen med varje regel. ”Tillåt UDP 4500” betyder ingenting förrän du säger varifrån och vart, och en regel som är rätt för en roamingklient är oftast fel för en site-till-site-peer.

Kontrollera varje väg med en inspelning

Kör inspelningen i gatewayen, inte på klienten: en klient registrerar bara det som kommit fram. Dessa filter täcker familjerna ovan och visar vilket steg som saknas:

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

Läs utdata som en sekvens. När förhandlingen dyker upp men nyttolastprotokollet inte, sker tappet någonstans mellan klient och gateway. När båda visas och sidan ändå misslyckas är brandväggen inte längre misstänkt; titta på routing, DNS eller adresspoolen klienten fick.

På en maskin utan tcpdump kommer samma bevis från gränssnitts- och regelräknare. Byte som kommer in men inte ut på tunnelgränssnittet pekar på returvägen och inte på den ursprungliga tillåtelseregeln.

Lämna ett regelverk du kan försvara

SSTP på TCP 443 går inte att skilja från vanlig HTTPS för något portbaserat filter, och det är poängen när ett nätverk bara tillåter webbtrafik. Det är också skälet till att 443-regeln bör namnge gatewayen som mål i stället för hela internet. Radera tillfälliga regler från vad-som-helst-till-vad-som-helst så snart tunneln fungerar. Skriv ned vilken regel som matchade, protokollnumret där det finns och riktningen, så att nästa person börjar med bevis.

Molnbaserade punkt-till-plats-gatewayer gör valet synligt: profilen du laddar ned använder antingen SSTP på 443 eller IKEv2 på 500 och 4500, och du bör bara öppna den profilen faktiskt väljer. PPTP är inte värt GRE-undantaget i ett modernt nätverk, eftersom mobiloperatörer ofta släpper protokoll 47 oavsett din brandvägg. Innan du stänger ärendet, bekräfta att regeln matchar porten i serverkonfigurationen, att protokollfältet är satt där familjen behöver det och att målet är gatewayen och inte vilken adress som helst.

Relaterade artiklar