Katere VPN-vrata odpreti na požarnem zidu: protokol za protokolom
PPTP potrebuje TCP 1723 in GRE, L2TP/IPsec potrebuje UDP 500 in 4500 ter ESP, SSTP, OpenVPN in WireGuard pa potrebujejo vsak ena vrata. Tu je, kaj odpreti.
O tunelu VPN odločata dve ločeni pravili: vrata, na katera kliče odjemalec, in protokol, ki prenaša tovor. Odprite samo prvo in tunel se overi, nato pa ne premakne nobenih podatkov. Najmanj je ena vrata TCP in GRE za PPTP, dve vrati UDP in ESP za L2TP/IPsec in IKEv2 ter ena vrata za SSTP, OpenVPN in WireGuard. Smer, sledenje stanja in NAT odločajo o ostalem.
Začnite pri vratih, na katera kliče odjemalec
Vsaka družina ima vstopno točko, ki jo odjemalec prvič kontaktira, in prav to vstopno točko mora imenovati vaše pravilo dovoljenja. Odjemalci PPTP se povežejo na TCP 1723. L2TP/IPsec začne IKE na UDP 500 in preide na UDP 4500, ko se uporablja prehod NAT, medtem ko je sam okvir L2TP na UDP 1701 znotraj tunela. SSTP zavije sejo v TLS na TCP 443, IKEv2 se pogaja na UDP 500 in 4500, OpenVPN privzeto uporablja UDP 1194, a se pogosto premakne na TCP 443, WireGuard pa posluša 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 |
Te številke obravnavajte kot privzete vrednosti in ne kot nespremenljive lastnosti. Vmesnik WireGuard uporablja katera koli vrata za poslušanje, ki jih navaja njegova konfiguracija, strežnik OpenVPN pa lahko stoji na katerih koli vratih, ki jih je izbral skrbnik. Preberite konfiguracijo strežnika, preden napišete pravilo, ker požarni zid, odprt za 1194, ne naredi ničesar za strežnik, prestavljen na 443.
Tretji stolpec je mesto, kjer gre večina zahtevkov za spremembo narobe. Pravilo obstaja, a kaže na napačen cilj, napačno smer ali napačen prenos.
GRE in ESP sta številki protokola, ne vrata
GRE in ESP sploh nimata vrat, zato obrazec požarnega zidu, ki sprejema samo številke vrat, tega ne more izraziti. GRE je protokol IP 47 in ESP je protokol IP 50, oba se ujemata prek polja protokola v glavi IP. Pravilo, napisano kot vrata TCP 47, se ne ujema z ničimer, in tako je politika PPTP videti pravilna in vseeno zavrže vsak paket po rokovanju.
Domači usmerjevalniki to skrijejo za potrditvenim poljem prehoda, ki namesti pravilo protokola in pri GRE še pomočnika NAT, potrebnega za preslikavo toka. Na pravem požarnem zidu protokol dodate sami: dovolite protokol IP 47 do strežnika PPTP, dovolite protokol IP 50 do prehoda IPsec. Kjer platforma ne ponuja polja protokola, je izhod zapiranje v ovoje, zato se lahko IKEv2 vrne na UDP 4500 in zato OpenVPN in WireGuard nikoli ne naletita na težavo.
Preverite, s čim se pravilo dejansko ujema, preden obtožite odjemalca. Števec paketov, ki na prehodu ostane na ničli, pove, da pravilo ni nikoli sprožilo, in nobena ponovna namestitev na strani odjemalca tega ne spremeni.
Smer, stanje in NAT spremenijo odgovor
Odjemalec, ki kliče navzven, in prehod, ki posluša navznoter, sta različni zahtevi, in isti seznam vrat je lahko pravilen v eni smeri in napačen v drugi. Požarni zid s stanjem spremlja tok UDP na 500 in 4500 ter spusti odgovore nazaj brez drugega pravila. ESP in GRE ne nosita vrat, zato naprava NAT nima česa prijeti in potrebuje pomočnika ali zapiranje v ovoje, da sledi seji.
Prehod NAT je del, ki se pozabi. IKEv2 se začne na UDP 500, zazna napravo NAT in nadaljuje na UDP 4500, zato politika, ki dovoljuje samo 500, da tunel, ki se vzpostavi in nato utihne. L2TP/IPsec naredi enako potezo. Če vaš posnetek pokaže prvo izmenjavo, ne pa stalnega prometa, poiščite pravilo, ki se ustavi pri 500.
Zapišite smer pri vsakem pravilu. „Dovoli UDP 4500“ ne pomeni ničesar, dokler ne poveste od kod do kod, in pravilo, ki je pravilno za gibljivega odjemalca, je običajno napačno za partnerja od lokacije do lokacije.
Preverite vsako pot s posnetkom
Posnetek zaženite na prehodu, ne na odjemalcu: odjemalec zabeleži le tisto, kar je prispelo. Ti filtri pokrivajo zgornje družine in pokažejo, katera stopnja manjka:
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
Izhod berite kot zaporedje. Ko se pogajanje pojavi, tovorni protokol pa ne, se zavrženje zgodi nekje med odjemalcem in prehodom. Ko se pojavita oba in stran še vedno ne uspe, požarni zid ni več osumljenec; poglejte usmerjanje, DNS ali nabor naslovov, ki ga je dobil odjemalec.
Na napravi brez tcpdump enake dokaze dajo števci vmesnika in pravil. Bajti vstopajo, ne izstopajo pa na vmesniku tunela — to kaže na povratno pot in ne na začetno pravilo dovoljenja.
Pustite nabor pravil, ki ga lahko branite
SSTP na TCP 443 se ne razlikuje od običajnega HTTPS za noben filter, ki temelji na vratih, in to je smisel, ko omrežje dovoljuje le spletni promet. Zato mora pravilo za 443 kot cilj imenovati prehod in ne celega interneta. Izbrišite začasna pravila od karkoli do karkoli takoj, ko tunel deluje. Zapišite, katero pravilo se je ujemalo, številko protokola, kjer je, in smer, da bo naslednja oseba začela z dokazi.
Oblačni prehodi od točke do lokacije naredijo izbiro vidno: preneseni profil uporablja bodisi SSTP na 443 bodisi IKEv2 na 500 in 4500, odpreti pa bi morali le tisto, kar profil zares izbere. PPTP si v sodobnem omrežju ne zasluži izjeme za GRE, ker mobilni operaterji pogosto zavržejo protokol 47 ne glede na vaš požarni zid. Preden zaprete zahtevek, potrdite, da pravilo ustreza vratom v konfiguraciji strežnika, da je polje protokola nastavljeno tam, kjer ga družina potrebuje, in da je cilj prehod in ne kateri koli naslov.