Dva odvojena pravila odlučuju hoće li VPN tunel preživjeti firewall: port koji klijent bira i protokol koji nosi korisni teret. Otvorite samo prvo pa se tunel autentificira, a zatim ne prenosi podatke. Minimum je jedan TCP port plus GRE za PPTP, dva UDP porta plus ESP za L2TP/IPsec i IKEv2, i jedan port za SSTP, OpenVPN i WireGuard. Smjer, praćenje stanja i NAT odlučuju o ostalom.

Pođite od porta koji klijent bira

Svaka porodica ima ulaznu točku koju klijent prvo kontaktira, i upravo tu ulaznu točku vaše pravilo dopuštenja mora imenovati. PPTP klijenti se spajaju na TCP 1723. L2TP/IPsec započinje IKE na UDP 500 i prelazi na UDP 4500 kada se koristi NAT traversal, a sam L2TP okvir je na UDP 1701 unutar tunela. SSTP umotava sesiju u TLS na TCP 443, IKEv2 pregovara na UDP 500 i 4500, OpenVPN prema zadanim postavkama koristi UDP 1194 ali se često premješta na TCP 443, a WireGuard sluša 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

Tretirajte te brojeve kao zadane vrijednosti, a ne kao fiksna svojstva. WireGuard interfejs koristi koji god port za slušanje njegova konfiguracija navede, a OpenVPN server može stajati na bilo kojem portu koji je administrator odabrao. Pročitajte konfiguraciju servera prije nego napišete pravilo, jer firewall otvoren za 1194 ne čini ništa za server premješten na 443.

Treći stupac je mjesto gdje većina zahtjeva za promjenu pođe po zlu. Pravilo postoji, ali pokazuje na pogrešno odredište, pogrešan smjer ili pogrešan transport.

GRE i ESP su brojevi protokola, ne portovi

GRE i ESP uopće nemaju portove, pa firewall obrazac koji prihvaća samo brojeve portova ne može ih izraziti. GRE je IP protokol 47, a ESP IP protokol 50, i oba se uparuju preko polja protokola u IP zaglavlju. Pravilo napisano kao TCP port 47 ne uparuje ništa, i tako PPTP politika izgleda ispravno i ipak odbacuje svaki paket nakon rukovanja.

Potrošački routeri skrivaju to iza potvrdnog okvira za propuštanje koji instalira pravilo protokola i, za GRE, NAT pomoćnik potreban za praćenje toka. Na pravom firewallu protokol dodajete sami: dopustite IP protokol 47 prema PPTP serveru, dopustite IP protokol 50 prema IPsec gatewayu. Gdje platforma ne nudi polje protokola, izlaz je inkapsulacija, zato se IKEv2 može vratiti na UDP 4500 i zato OpenVPN i WireGuard nikad ne nailaze na problem.

Provjerite šta pravilo zapravo uparuje prije nego okrivite klijenta. Brojač paketa koji na gatewayu ostane na nuli kaže da pravilo nikad nije aktivirano, i nikakvo ponovno instaliranje na strani klijenta to ne mijenja.

Smjer, stanje i NAT mijenjaju odgovor

Klijent koji zove prema van i gateway koji sluša prema unutra su različiti zahtjevi, a ista lista portova može biti ispravna u jednom smjeru i pogrešna u drugom. Firewall sa stanjem prati UDP tok na 500 i 4500 i propušta odgovore natrag bez drugog pravila. ESP i GRE ne nose portove, pa NAT uređaj nema šta uhvatiti i treba mu pomoćnik ili inkapsulacija da prati sesiju.

NAT traversal je dio koji se propušta. IKEv2 počinje na UDP 500, otkrije NAT uređaj i nastavlja na UDP 4500, pa politika koja dopušta samo 500 daje tunel koji se uspostavi i onda utihne. L2TP/IPsec radi isti pokret. Ako vaše snimanje pokazuje prvu razmjenu ali ne i stalni promet, potražite pravilo koje staje na 500.

Zapišite smjer uz svako pravilo. „Dopusti UDP 4500“ ne znači ništa dok ne kažete odakle dokle, a pravilo koje je ispravno za klijenta u pokretu obično je pogrešno za lokal-uz-lokal partnera.

Provjerite svaku putanju snimanjem

Pokrenite snimanje na gatewayu, ne na klijentu: klijent bilježi samo ono što je stiglo. Ovi filteri pokrivaju gore navedene porodice i pokazuju koja faza nedostaje:

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

Čitajte izlaz kao niz. Kada se pojavi pregovaranje ali ne i protokol tereta, odbacivanje se događa negdje između klijenta i gatewaya. Kada se pojave oba a stranica i dalje ne uspijeva, firewall više nije osumnjičeni; pogledajte usmjeravanje, DNS ili bazen adresa koji je klijent dobio.

Na uređaju bez tcpdumpa iste dokaze daju brojači interfejsa i pravila. Bajtovi ulaze ali ne izlaze na interfejsu tunela — to upućuje na povratnu putanju, a ne na početno pravilo dopuštenja.

Ostavite skup pravila koji možete braniti

SSTP na TCP 443 ne razlikuje se od običnog HTTPS-a nijednom filteru zasnovanom na portovima, i to je smisao kada mreža dopušta samo web promet. Zato i pravilo za 443 mora kao odredište imenovati gateway, a ne cijeli internet. Brišite privremena pravila od-bilo-čega-do-bilo-čega čim tunel proradi. Zapišite koje je pravilo uparilo, broj protokola gdje ga ima i smjer, da sljedeća osoba krene od dokaza.

Cloud gatewayi od točke do lokacije čine izbor vidljivim: preuzeti profil koristi ili SSTP na 443 ili IKEv2 na 500 i 4500, i trebate otvoriti samo onaj koji profil doista odabere. PPTP ne vrijedi iznimke za GRE na modernoj mreži, jer mobilni operateri često odbacuju protokol 47 bez obzira na vaš firewall. Prije nego zatvorite zahtjev, potvrdite da pravilo odgovara portu u konfiguraciji servera, da je polje protokola postavljeno gdje porodica to traži i da je odredište gateway, a ne bilo koja adresa.

Povezani članci