PPTP za domačim usmerjevalnikom odpove na dva nepovezana načina, njuno mešanje pa stane cel večer. Ena okvara je vrzel pri posredovanju: usmerjevalnik spusti TCP 1723 in zavrže protokol IP 47, zato odjemalec obvisi na napaki 619. Druga je težava z velikostjo: tunel se dvigne, se overi in nato zamrzne, ko mora skozi paket polne velikosti. Ugotoviti, katero od obeh imate, je prvi resnični korak; preostanek primerja, kaj lahko vaš usmerjevalnik izrazi, ne katera znamka je boljša.

Dva prenosa in samo eden ima vrata

PPTP se deli na dva prenosa: krmilno povezavo na TCP 1723 in okvire PPP, ovite v razširjeni GRE, to je protokol IP 47. GRE nima številke vrat, zato pravilo, napisano kot posredovanje vrat 1723, tega ne more pokriti, ne glede na to, kako spletni vmesnik imenuje polje. Domači usmerjevalnik običajno ponudi polje z imenom prepuščanje PPTP namesto pravila protokola, to polje pa opravi dve nalogi: spusti protokol 47 skozi požarni zid in nauči NAT slediti toku GRE. Na usmerjevalniku Linux so te naloge ločeni moduli in ločena pravila, zato na pol nastavljeno prepuščanje še vedno daje delujoč krmilni kanal. Ugotovite, katera polovica je prisotna, preden karkoli spremenite.

Tudi požarni zid strežnika mora dovoliti protokol 47 z naslova usmerjevalnika. Požarni zid gostitelja, ki sprejema samo 1723/tcp, poustvari napako 619 znotraj LAN, zato sta pokvarjeno posredovanje in pokvarjeno pravilo gostitelja videti enako.

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'

Če modulov ni, jih naložite z sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre in nalaganje naredite trajno, ker ponovni zagon, ki pozabi pomočnika, delujoči tunel spet spremeni v napako 619. Pravilo posredovanja mora sprejemati protokol 47 le proti naslovu strežnika, ne proti celemu LAN. Definicija v RFC 2637 ločuje krmilno in podatkovno pot, zato noben posamezen zaslon posredovanja vrat ne opiše PPTP v celoti.

Polje prepuščanja ali izrecno pravilo protokola

Polje prepuščanja, ki samo odpre požarni zid, je bližje pravilnemu kot ALG, ki prepisuje identifikatorje klicev. Polovica s požarnim zidom je predvidljiva, saj je protokol 47 bodisi sprejet bodisi zavržen, števci pa povedo, katero. Polovica s prepisovanjem je kraj, kjer se proizvajalci razlikujejo, ker so identifikatorji klicev PPTP za vsak tunel in mora NAT, ki jih ureja, slediti vsakemu klicu, ki se ga dotakne. Ko se poveže en odjemalec in dva ne, je ALG prvi osumljenec.

Pravilo NAT cilja za 1723 ima tudi težavo z lastništvom. Če staro pravilo še vedno pošilja 1723 gostitelju, ki je prenehal izvajati strežnik, paketi pristanejo na zaprtih vratih in lastna storitev PPTP usmerjevalnika preneha odgovarjati, kar se bere kot okvara požarnega zidu, v resnici pa je zastarel cilj. Preberite pravilo in njegov cilj, preden dodate drugo. Na usmerjevalnikih, ki sami zaključujejo PPTP, pravilo WAN tekmuje z vgrajeno storitvijo, zato izberite enega lastnika za 1723 in protokol 47.

Dva odjemalca za istim NAT sta primer, ki loči preprosto posredovanje od prebrisanega. Posredovanje protokola 47 brez prepisovanja identifikatorjev klicev se običajno obnaša bolje kot pomočnik, ki jih poskuša popraviti.

Izmerite tunel, preden obtožite usmerjevalnik

PPTP zmanjša uporabno obremenitev, in to zmanjšanje je aritmetika, ne uganka. Vsak paket tunela nosi zunanjo glavo IP, razširjeno glavo GRE, glavo PPP in ob šifriranju glavo MPPE. Ko pot ne more prenesti nastalega okvira, majhni paketi gredo skozi, prijava se dokonča in seja se ustavi prvič, ko prenos datoteke ali rokovanje TLS pošlje paket polne velikosti.

Izračunajte število, namesto da bi ugibali. Razširjeni GRE stane 8 bajtov, PPP stane 4, MPPE stane 4, zunanja glava IP pa stane 20, zato tunel požre 36 bajtov pred kakršno koli obremenitvijo. Na WAN PPPoE, ki se konča pri 1492, je največji PPP MTU, ki se prilega, 1492 minus 36, torej 1456. V možnostih PPP nastavite mtu in mru na to vrednost in znova preizkusite s pingom brez fragmentacije.

ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd

Ping meri pot, ne tunela: 1464 bajtov obremenitve plus 28 bajtov glav IP in ICMP natanko zapolni okvir s 1492 bajti. Če ta ping ne uspe, znižujte število, dokler ne gre skozi, in od rezultata odštejte 36. MTU tunela, nastavljen nad mejo poti, povzroči zamrznitev brez ene same vrstice dnevnika, ki bi omenjala velikost.

PPTP, L2TP/IPsec ali OpenVPN na istem usmerjevalniku

Isti usmerjevalnik lahko nosi katerega koli od treh običajnih tunelov, razlika pa je v tem, kaj mora izraziti. PPTP potrebuje dve pravili v dveh različnih plasteh. L2TP čez IPsec potrebuje UDP 500 in 4500 za izmenjavo ključev in, če ga NAT-T ne nosi, protokol 50 za obremenitev. OpenVPN potrebuje ena vrata UDP in nobenega pomočnika.

TunnelWhat the router must allowPractical note
PPTPTCP 1723 and IP protocol 47Two transports, two rules
L2TP/IPsecUDP 500, UDP 4500, protocol 50 without NAT-TESP has no port either
OpenVPNUDP 1194 or a chosen TCP portSingle rule, no helper

Stolpec L2TP ni samodejno prijaznejši od GRE. ESP je protokol IP 50 in tudi nima vrat, zato ima lahko usmerjevalnik, ki se mu zatika pri protokolu 47, težave tudi pri protokolu 50 iz istega razloga. NAT-T obstaja zato, da ovije ESP v UDP 4500, in ko ga podpirata oba konca, pravilo protokola 50 postane nepotrebno. To je lastnost koncev, ne polja PPTP na usmerjevalniku. Potrdite, katero enkapsulacijo je odjemalec v resnici dogovoril, preden napišete pravila za oba.

OpenVPN je možnost z najmanj gibljivimi deli na strani usmerjevalnika. Ena vrata UDP, eno posredovanje, nobenega pomočnika za sledenje povezavam in nobenega prepisovanja identifikatorjev klicev. Zamenjava je odjemalec, ki ga je treba namestiti namesto vgrajenega izbiralnika, in to je pogosto edini razlog, da PPTP ostaja v pogovoru.

Kaj popraviti in kaj zamenjati

Popravilo posredovanja in MTU vam da tunel, ki deluje, ne takega, ki bi ga morali obdržati. Preverjanje MSCHAPv2 pri PPTP je že leta napadljivo, delujoč tunel pa prenaša poverilnice, ki jih je mogoče obnoviti brez povezave. Če lahko oddaljena naprava izvaja L2TP/IPsec ali OpenVPN, obravnavajte popravilo kot začasen ukrep z datumom.

Odločitev se skrči na to, kaj podpira oddaljeni konec in kako dolgo mora ureditev zdržati. Starejša naprava, ki govori samo PPTP, dobi popravilo; vse, na kar je mogoče namestiti odjemalca, se preseli.

Preden zaprete zahtevek, potrdite, da odjemalec prenese velik prenos in ne le prijave, ter da usmerjevalnik tudi po ponovnem zagonu drži pravilo protokola 47. Tunel, ki prenese eno kopijo datoteke in umre po naslednji posodobitvi vdelane programske opreme, nikoli ni bil dokončan.

Sorodni članki