PPTP server iza kućnog rutera: prvo popravite 1723 i GRE
Pokrenite PPTP iza kućnog rutera: TCP 1723, IP protokol 47, polje za propuštanje i MTU aritmetika, plus kada je L2TP ili OpenVPN bolja trgovina.
PPTP iza kućnog rutera pada na dva nepovezana načina, a njihovo miješanje potroši cijelu večer. Jedan kvar je praznina u prosljeđivanju: ruter propušta TCP 1723 i odbacuje IP protokol 47, pa klijent visi na grešci 619. Drugi je problem veličine: tunel se podigne, autentificira, a zatim se zamrzne kada mora proći paket pune veličine. Utvrditi koji od njih imate prvi je pravi korak; ostatak poredi šta vaš ruter može izraziti, a ne koja je marka bolja.
Dva transporta, a samo jedan ima port
PPTP se dijeli na dva transporta: kontrolnu vezu na TCP 1723 i PPP okvire umotane u prošireni GRE, koji je IP protokol 47. GRE nema broj porta, pa pravilo napisano kao prosljeđivanje porta 1723 ne može ga pokriti bez obzira kako web interfejs naziva to polje. Potrošački ruter obično nudi polje s nazivom PPTP propuštanje umjesto pravila protokola, a to polje radi dva posla: propušta protokol 47 kroz zaštitni zid i uči NAT kako da prati GRE tok. Na Linux ruteru ti su poslovi odvojeni moduli i odvojena pravila, zato napola konfigurisano propuštanje ipak daje radni kontrolni kanal. Otkrijte koja polovina postoji prije nego što bilo šta promijenite.
Vlastiti zaštitni zid servera takođe mora dozvoliti protokol 47 s adrese rutera. Zaštitni zid hosta koji prihvata samo 1723/tcp reprodukuje grešku 619 iznutra LAN-a, što pokvareno prosljeđivanje i pokvareno pravilo hosta čini identičnim.
sudo iptables -S FORWARD | grep -i gre
sudo nft list ruleset | grep -i gre
lsmod | grep -E 'nf_conntrack_proto_gre|nf_nat_proto_gre'
Ako moduli nedostaju, učitajte ih pomoću sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre i učinije učitavanje trajnim, jer restart koji zaboravi pomoćnika vraća radni tunel u grešku 619. Pravilo prosljeđivanja treba prihvatati protokol 47 samo prema adresi servera, ne cijelom LAN-u. Definicija RFC 2637 razdvaja kontrolnu i podatkovnu putanju, zato nijedan ekran za prosljeđivanje porta ne opisuje PPTP u potpunosti.
Polje za propuštanje ili izričito pravilo protokola
Polje za propuštanje koje samo otvara zaštitni zid bliže je ispravnom od ALG-a koji prepisuje identifikatore poziva. Polovina sa zaštitnim zidom je predvidljiva, jer se protokol 47 ili prihvata ili odbacuje, a brojači kažu šta je. Polovina s prepisivanjem je mjesto gdje se proizvođači razlikuju, jer su identifikatori poziva u PPTP-u za svaki tunel i NAT koji ih uređuje mora pratiti svaki poziv koji dotakne. Kada se jedan klijent poveže a dva ne, ALG je prvi osumnjičeni.
Pravilo odredišnog NAT-a za 1723 također ima problem vlasništva. Ako zastarjelo pravilo još šalje 1723 na host koji je prestao pokretati server, paketi završe na zatvorenom portu i ruterova vlastita PPTP usluga prestane odgovarati, što se čita kao kvar zaštitnog zida, ali je zapravo zastarjela meta. Pročitajte pravilo i njegovo odredište prije nego što dodate drugo. Na ruterima koji sami završavaju PPTP, WAN pravilo se takmiči s ugrađenom uslugom, pa izaberite jednog vlasnika za 1723 i protokol 47.
Dva klijenta iza istog NAT-a slučaj je koji razdvaja obično prosljeđivanje od pametnog. Prosljeđivanje protokola 47 bez prepisivanja identifikatora poziva obično se ponaša bolje od pomoćnika koji ih pokušava popraviti.
Izmjerite tunel prije nego okrivite ruter
PPTP smanjuje korisni teret, a to smanjenje je aritmetika, ne misterija. Svaki paket tunela nosi vanjski IP zaglavlje, prošireno GRE zaglavlje, PPP zaglavlje i, uz enkripciju, MPPE zaglavlje. Kada putanja ne može prenijeti nastali okvir, mali paketi prolaze, prijava se dovrši, a sesija stane prvi put kada prijenos datoteke ili TLS rukovanje pošalje paket pune veličine.
Izračunajte broj umjesto da ga pogađate. Prošireni GRE košta 8 bajtova, PPP košta 4, MPPE košta 4, a vanjsko IP zaglavlje košta 20, pa tunel pojede 36 bajtova prije ikakvog tereta. Na PPPoE WAN-u koji završava na 1492, najveći PPP MTU koji stane je 1492 minus 36, to jest 1456. Postavite mtu i mru na tu vrijednost u PPP opcijama i ponovo testirajte pingom bez fragmentacije.
ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd
Ping mjeri putanju, ne tunel: 1464 bajta tereta plus 28 bajtova IP i ICMP zaglavlja tačno ispunjavaju okvir od 1492 bajta. Ako taj ping ne prođe, snižavajte broj dok ne prođe i oduzmite 36 od rezultata. MTU tunela postavljen iznad ograničenja putanje stvara zamrzavanje bez ijedne linije u dnevniku koja spominje veličinu.
PPTP, L2TP/IPsec ili OpenVPN na istom ruteru
Isti ruter može nositi bilo koji od tri uobičajena tunela, a razlika je šta mora izraziti. PPTP traži dva pravila u dva različita sloja. L2TP preko IPsec-a traži UDP 500 i 4500 za razmjenu ključeva i, osim ako ga NAT-T nosi, protokol 50 za teret. OpenVPN traži jedan UDP port i nikakvog pomoćnika.
| Tunnel | What the router must allow | Practical note |
|---|---|---|
| PPTP | TCP 1723 and IP protocol 47 | Two transports, two rules |
| L2TP/IPsec | UDP 500, UDP 4500, protocol 50 without NAT-T | ESP has no port either |
| OpenVPN | UDP 1194 or a chosen TCP port | Single rule, no helper |
L2TP kolona nije automatski prijateljskija od GRE-a. ESP je IP protokol 50 i takođe nema port, pa se ruter koji se muči s protokolom 47 može mučiti s protokolom 50 iz istog razloga. NAT-T postoji da umota ESP unutar UDP 4500, i kada ga oba kraja podržavaju, pravilo za protokol 50 postaje nepotrebno. To je svojstvo krajnjih tačaka, a ne ruterovog PPTP polja. Potvrdite koje je enkapsulacije klijent zaista dogovorio prije nego što napišete pravila za oboje.
OpenVPN je opcija s najmanje pokretnih dijelova na strani rutera. Jedan UDP port, jedno prosljeđivanje, nikakav pomoćnik za praćenje veza i nikakvo prepisivanje identifikatora poziva. Trgovina je klijent koji se mora instalirati umjesto ugrađenog biranja, a to je često jedini razlog zašto PPTP ostaje u razgovoru.
Šta popraviti i šta zamijeniti
Popravka prosljeđivanja i MTU-a daje tunel koji radi, a ne onaj koji treba zadržati. PPTP-ova MSCHAPv2 autentifikacija napadljiva je godinama, a radni tunel prenosi podatke za prijavu koji se mogu vratiti izvan mreže. Ako udaljeni uređaj može pokrenuti L2TP/IPsec ili OpenVPN, tretirajte popravku kao privremenu mjeru s datumom.
Odluka se svodi na to šta podržava daleki kraj i koliko dogovor mora trajati. Naslijeđeni uređaj koji govori samo PPTP dobija popravku; sve što može instalirati klijent migrira se.
Prije zatvaranja zahtjeva potvrdite da klijent preživljava veliki prijenos, a ne prijavu, i da ruter i nakon restarta drži svoje pravilo za protokol 47. Tunel koji prođe jedno kopiranje datoteke i umre nakon sljedećeg ažuriranja firmvera nikada nije bio dovršen.