Kuriuos VPN prievadus atidaryti užkardoje: protokolas po protokolo
PPTP reikia TCP 1723 ir GRE, L2TP/IPsec reikia UDP 500 ir 4500 bei ESP, o SSTP, OpenVPN ir WireGuard kiekvienam reikia vieno prievado. Štai ką atidaryti.
Dvi atskiros taisyklės nusprendžia, ar VPN tunelis įveiks užkardą: prievadas, į kurį skambina klientas, ir protokolas, kuris neša naudingąją apkrovą. Atidarykite tik pirmąjį, ir tunelis autentifikuosis, bet po to nejudės jokie duomenys. Minimumas yra vienas TCP prievadas ir GRE PPTP, du UDP prievadai ir ESP L2TP/IPsec bei IKEv2, ir vienas prievadas SSTP, OpenVPN bei WireGuard. Kryptis, būsenos sekimas ir NAT nulemia likusią dalį.
Pradėkite nuo prievado, į kurį skambina klientas
Kiekviena šeima turi įėjimo tašką, su kuriuo klientas susisiekia pirmiausia, ir būtent tą įėjimo tašką turi įvardyti jūsų leidimo taisyklė. PPTP klientai jungiasi prie TCP 1723. L2TP/IPsec pradeda IKE UDP 500 ir pereina prie UDP 4500, kai naudojamas NAT perėjimas, o pats L2TP kadras yra UDP 1701 tunelio viduje. SSTP apvynioja sesiją TLS TCP 443, IKEv2 derasi UDP 500 ir 4500, OpenVPN pagal nutylėjimą naudoja UDP 1194, bet dažnai perkeliamas į TCP 443, o WireGuard klausosi 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 |
Laikykite šiuos skaičius numatytosiomis reikšmėmis, o ne fiksuotomis savybėmis. WireGuard sąsaja naudoja bet kurį klausymosi prievadą, kurį deklaruoja jos konfigūracija, o OpenVPN serveris gali stovėti bet kuriame administratoriaus pasirinktame prievade. Perskaitykite serverio konfigūraciją prieš rašydami taisyklę, nes užkarda, atidaryta 1194, nieko neduoda į 443 perkeltam serveriui.
Trečiasis stulpelis yra vieta, kur dauguma pakeitimo tiketų nueina ne taip. Taisyklė egzistuoja, bet ji nurodo netinkamą paskirties vietą, netinkamą kryptį arba netinkamą transportą.
GRE ir ESP yra protokolų numeriai, o ne prievadai
GRE ir ESP visai neturi prievadų, todėl užkardos forma, priimanti tik prievadų numerius, negali jų išreikšti. GRE yra IP protokolas 47, o ESP yra IP protokolas 50, abu derinami pagal IP antraštės protokolo lauką. Taisyklė, parašyta kaip TCP prievadas 47, nieko neatitinka, ir taip PPTP politika atrodo teisinga, o vis tiek numeta kiekvieną paketą po rankos paspaudimo.
Namų maršrutizatoriai tai slepia už perdavimo žymės langelio, kuris įdiegia protokolo taisyklę ir, GRE atveju, NAT pagalbininką, reikalingą srautui susieti. Tikroje užkardoje protokolą pridedate patys: leiskite IP protokolą 47 į PPTP serverį, leiskite IP protokolą 50 į IPsec šliuzą. Ten, kur platforma nesiūlo protokolo lauko, išeitis yra inkapsuliavimas, todėl IKEv2 gali atsitraukti į UDP 4500 ir todėl OpenVPN bei WireGuard niekada nesusiduria su šia problema.
Prieš kaltindami klientą patikrinkite, ką taisyklė iš tikrųjų atitinka. Šliuze nulyje stovintis paketų skaitiklis sako, kad taisyklė niekada nebuvo suaktyvinta, ir joks kliento pusės perdiegimas to nepakeis.
Kryptis, būsena ir NAT pakeičia atsakymą
Į išorę skambinantis klientas ir į vidų klausantis šliuzas yra skirtingi reikalavimai, ir tas pats prievadų sąrašas gali būti teisingas viena kryptimi ir neteisingas kita. Būseną sekanti užkarda stebi UDP srautą 500 ir 4500 ir leidžia atsakymams grįžti be antros taisyklės. ESP ir GRE neperduoda prievadų, todėl NAT įrenginys neturi už ko užkabinti ir jam reikia pagalbininko arba inkapsuliavimo, kad sektų sesiją.
NAT perėjimas yra ta dalis, kuri praleidžiama. IKEv2 pradeda UDP 500, aptinka NAT įrenginį ir tęsia UDP 4500, todėl politika, leidžianti tik 500, duoda tunelį, kuris susikuria ir tada nutyla. L2TP/IPsec atlieka tą patį judesį. Jei jūsų įrašas rodo pirmąjį mainus, bet ne nuolatinį srautą, ieškokite taisyklės, kuri sustoja ties 500.
Užrašykite kryptį prie kiekvienos taisyklės. „Leisti UDP 4500“ nieko nereiškia, kol nepasakote iš kur ir į kur, o taisyklė, teisinga keliaujančiam klientui, paprastai neteisinga vietos su vietos partneriui.
Patikrinkite kiekvieną kelią įrašu
Vykdykite įrašą šliuze, o ne kliente: klientas įrašo tik tai, kas atėjo. Šie filtrai apima aukščiau išvardytas šeimas ir parodo, kurio etapo trūksta:
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
Skaitykite išvestį kaip seką. Kai derybos pasirodo, o naudingosios apkrovos protokolas ne, numetimas įvyksta kažkur tarp kliento ir šliuzo. Kai pasirodo abu, o puslapis vis tiek nepavyksta, užkarda nebėra įtariamasis; žiūrėkite maršrutizavimą, DNS ar klientui duotą adresų baseiną.
Įrenginyje be tcpdump tuos pačius įrodymus duoda sąsajos ir taisyklių skaitikliai. Baitai įeina, bet neišeina tunelio sąsajoje — tai rodo grįžimo kelią, o ne pradinę leidimo taisyklę.
Palikite taisyklių rinkinį, kurį galite apginti
SSTP TCP 443 yra neatskiriamas nuo įprasto HTTPS bet kuriam prievadais pagrįstam filtrui, ir tai yra esmė, kai tinklas leidžia tik žiniatinklio srautą. Todėl 443 taisyklė turėtų nurodyti šliuzą kaip paskirties vietą, o ne visą internetą. Ištrinkite laikinąsias bet ko į bet ką taisykles, kai tik tunelis pradeda veikti. Užsirašykite, kuri taisyklė atitiko, protokolo numerį, kur jis yra, ir kryptį, kad kitas žmogus pradėtų nuo įrodymų.
Debesų taško į vietą šliuzai padaro pasirinkimą matomą: atsisiųstas profilis naudoja arba SSTP 443, arba IKEv2 500 ir 4500, todėl atidaryti turėtumėte tik tą, kurį profilis iš tikrųjų pasirenka. PPTP nevertas GRE išimties šiuolaikiniame tinkle, nes mobilieji operatoriai dažnai numeta 47 protokolą nepriklausomai nuo jūsų užkardos. Prieš uždarydami tiketą patvirtinkite, kad taisyklė atitinka serverio konfigūracijos prievadą, kad protokolo laukas nustatytas ten, kur šeimai jo reikia, ir kad paskirties vieta yra šliuzas, o ne bet koks adresas.