O tuneli VPN rozhodujú dve samostatné pravidlá: port, na ktorý klient vytáča spojenie, a protokol, ktorý prenáša užitočné zaťaženie. Otvorte iba prvé a tunel sa overí, no potom už neprenesie žiadne dáta. Minimum je jeden port TCP plus GRE pre PPTP, dva porty UDP plus ESP pre L2TP/IPsec a IKEv2 a jediný port pre SSTP, OpenVPN a WireGuard. O zvyšok sa postará smer, sledovanie stavu a NAT.

Začnite portom, na ktorý klient vytáča spojenie

Každá rodina má vstupný bod, ktorý klient kontaktuje ako prvý, a práve ten musí pomenovať vaše povoľovacie pravidlo. Klienti PPTP sa pripájajú k TCP 1723. L2TP/IPsec začína IKE na UDP 500 a po zapnutí priechodu NAT prechádza na UDP 4500, pričom samotný rámec L2TP je na UDP 1701 vnútri tunela. SSTP zabalí reláciu do TLS na TCP 443, IKEv2 vyjednáva na UDP 500 a 4500, OpenVPN štandardne používa UDP 1194, ale často sa presúva na TCP 443, a WireGuard počúva 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 tie čísla ako predvolené hodnoty, nie ako pevné vlastnosti. Rozhranie WireGuard používa akýkoľvek port na počúvanie, ktorý ohlási jeho konfigurácia, a server OpenVPN môže sedieť na ktoromkoľvek porte, ktorý správca zvolil. Prečítajte si konfiguráciu servera, kým pravidlo napíšete, pretože firewall otvorený pre 1194 neurobí nič pre server presunutý na 443.

Tretí stĺpec je miesto, kde väčšina požiadaviek na zmenu skončí zle. Pravidlo existuje, ale mieri na nesprávny cieľ, nesprávny smer alebo nesprávny transport.

GRE a ESP sú čísla protokolov, nie porty

GRE a ESP nemajú vôbec žiadne porty, takže formulár firewallu, ktorý prijíma len čísla portov, ich nemôže vyjadriť. GRE je IP protokol 47 a ESP je IP protokol 50, oba sa párujú podľa poľa protokolu v hlavičke IP. Pravidlo napísané ako TCP port 47 nezodpovedá ničomu, a tak politika PPTP vyzerá správne a napriek tomu zahodí každý paket po nadviazaní spojenia.

Domáce routery to skrývajú za zaškrtávacím políčkom priechodu, ktoré nainštaluje pravidlo protokolu a pri GRE aj pomocníka NAT potrebného na sledovanie toku. Na skutočnom firewalle pridáte protokol sami: povoľte IP protokol 47 k serveru PPTP, povoľte IP protokol 50 k bráne IPsec. Kde platforma pole protokolu neponúka, východiskom je zapuzdrenie, a preto sa IKEv2 môže vrátiť na UDP 4500 a preto OpenVPN a WireGuard na problém nikdy nenarazia.

Skôr než obviníte klienta, skontrolujte, čomu pravidlo skutočne zodpovedá. Počítadlo paketov, ktoré na bráne zostane na nule, hovorí, že pravidlo nikdy nevystrelilo, a žiadne preinštalovanie na strane klienta to nezmení.

Smer, stav a NAT menia odpoveď

Klient, ktorý vytáča von, a brána, ktorá počúva dovnútra, sú rôzne požiadavky a ten istý zoznam portov môže byť správny v jednom smere a nesprávny v druhom. Stavový firewall sleduje tok UDP na 500 a 4500 a pustí odpovede späť bez druhého pravidla. ESP a GRE nenesú porty, takže zariadenie NAT nemá na čo nadviazať a potrebuje pomocníka alebo zapuzdrenie, aby reláciu sledovalo.

Priechod NAT je časť, ktorá sa prehliada. IKEv2 začína na UDP 500, rozpozná zariadenie NAT a pokračuje na UDP 4500, takže politika povoľujúca len 500 dá tunel, ktorý sa nadviaže a potom stíchne. L2TP/IPsec urobí ten istý pohyb. Ak váš odposluch ukáže prvú výmenu, ale nie trvalú prevádzku, hľadajte pravidlo, ktoré sa končí na 500.

Zapisujte smer pri každom pravidle. „Povoliť UDP 4500“ neznamená nič, kým nepoviete odkiaľ kam, a pravidlo správne pre roamingového klienta je zvyčajne nesprávne pre partnera typu lokalita-lokalita.

Overte každú cestu odposluchom

Spustite odposluch na bráne, nie na klientovi: klient zaznamená len to, čo dorazilo. Tieto filtre pokrývajú rodiny vyššie a ukážu, ktorá etapa chýba:

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

Čítajte výstup ako postupnosť. Keď sa objaví vyjednávanie, ale protokol užitočného zaťaženia nie, zahodenie nastáva niekde medzi klientom a bránou. Keď sa objavia obe a stránka stále nefunguje, brána už nie je podozrivá; pozrite sa na smerovanie, DNS alebo fond adries pridelený klientovi.

Na stroji bez tcpdump prinesú rovnaký dôkaz počítadlá rozhrania a pravidiel. Bajty, ktoré na rozhraní tunela vstupujú, ale nevystupujú, ukazujú na spiatočnú cestu, nie na pôvodné povoľovacie pravidlo.

Nechajte po sebe sadu pravidiel, ktorú viete obhájiť

SSTP na TCP 443 je pre každý filter založený na portoch nerozoznateľné od bežného HTTPS, a to je zmysel, keď sieť povoľuje len webovú prevádzku. Preto má pravidlo pre 443 ako cieľ menovať bránu a nie celý internet. Dočasné pravidlá typu čokoľvek-kamkoľvek mažte hneď, ako tunel funguje. Zapíšte, ktoré pravidlo zodpovedalo, číslo protokolu, kde nejaké je, a smer, aby ďalší človek začal od dôkazov.

Cloudové brány typu bod-lokalita zviditeľnia voľbu: stiahnutý profil používa buď SSTP na 443, alebo IKEv2 na 500 a 4500, a otvoriť máte len ten, ktorý profil skutočne zvolí. PPTP nestojí za výnimku pre GRE v modernej sieti, keďže mobilní operátori často zahadzujú protokol 47 bez ohľadu na váš firewall. Pred zatvorením požiadavky overte, že pravidlo zodpovedá portu v konfigurácii servera, že pole protokolu je nastavené tam, kde ho rodina potrebuje, a že cieľom je brána a nie akákoľvek adresa.

Súvisiace články