PPTP kotireitittimen takana epäonnistuu kahdella toisistaan riippumattomalla tavalla, ja niiden sekoittaminen maksaa kokonaisen illan. Yksi vika on välitysaukko: reititin päästää TCP 1723:n läpi ja pudottaa IP-protokollan 47, joten asiakas jää roikkumaan virheeseen 619. Toinen on kokoon liittyvä ongelma: tunneli nousee, todennus onnistuu ja sitten jäätyy, kun täysikokoisen paketin täytyy kulkea. Sen selvittäminen, kumpi sinulla on, on ensimmäinen todellinen askel; loppu vertaa sitä, mitä reitittimesi pystyy ilmaisemaan, ei sitä, mikä merkki on parempi.

Kaksi kuljetusta, ja vain toisella on portti

PPTP jakautuu kahteen kuljetukseen: ohjausyhteys TCP 1723:ssa ja PPP-kehykset laajennetun GRE:n sisään käärittyinä, eli IP-protokolla 47. GRE:llä ei ole porttinumeroa, joten portin 1723 välitykseksi kirjoitettu sääntö ei voi kattaa sitä, riippumatta siitä, miksi verkkokäyttöliittymä kentän nimeää. Kuluttajareititin tarjoaa yleensä protokollasäännön sijaan valintaruudun nimeltä PPTP-läpikulku, ja se ruutu tekee kaksi työtä: se päästää protokollan 47 palomuurin läpi ja opettaa NAT:in seuraamaan GRE-virtaa. Linux-reitittimessä nämä työt ovat erillisiä moduuleja ja erillisiä sääntöjä, minkä vuoksi puoliksi määritetty läpikulku tuottaa silti toimivan ohjauskanavan. Selvitä, kumpi puoli on läsnä, ennen kuin muutat mitään.

Palvelimen oman palomuurin on myös sallittava protokolla 47 reitittimen osoitteesta. Isäntäpalomuuri, joka hyväksyy vain 1723/tcp:n, toistaa virheen 619 lähiverkon sisältä, jolloin rikkinäinen välitys ja rikkinäinen isäntäsääntö näyttävät samalta.

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'

Jos moduulit puuttuvat, lataa ne komennolla sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre ja tee latauksesta pysyvä, sillä uudelleenkäynnistys, joka unohtaa auttajan, muuttaa toimivan tunnelin jälleen virheeksi 619. Välityssäännön on hyväksyttävä protokolla 47 vain palvelimen osoitteeseen, ei koko lähiverkkoon. RFC 2637 -määritelmä erottaa ohjaus- ja datapolut, minkä vuoksi mikään yksittäinen portinvälitysnäkymä ei kuvaa PPTP:tä täysin.

Läpikulkuvalintaruutu vai nimenomainen protokollasääntö

Läpikulkuvalintaruutu, joka vain avaa palomuurin, on lähempänä oikeaa kuin ALG, joka kirjoittaa puhelutunnisteet uudelleen. Palomuuripuoli on ennustettava, koska protokolla 47 joko hyväksytään tai pudotetaan, ja laskurit kertovat kumman. Uudelleenkirjoituspuoli on kohta, jossa valmistajat eroavat, koska PPTP:n puhelutunnisteet ovat tunnelikohtaisia ja NAT, joka niitä muokkaa, joutuu seuraamaan jokaista koskettamaansa puhelua. Kun yksi asiakas yhdistää ja kaksi ei, ALG on ensimmäinen epäilty.

Kohde-NAT-säännöllä portille 1723 on myös omistajuusongelma. Jos vanha sääntö lähettää yhä 1723:n isännälle, joka lopetti palvelimen ajamisen, paketit päätyvät suljettuun porttiin ja reitittimen oma PPTP-palvelu lakkaa vastaamasta, mikä näyttää palomuurivialta mutta on todella vanhentunut kohde. Lue sääntö ja sen kohde ennen kuin lisäät toisen. Reitittimissä, jotka itse päättävät PPTP:n, WAN-sääntö kilpailee sisäänrakennetun palvelun kanssa, joten valitse yksi omistaja portille 1723 ja protokollalle 47.

Kaksi asiakasta saman NAT:in takana on tapaus, joka erottaa yksinkertaisen välityksen ovelasta. Protokollan 47 välittäminen ilman puhelutunnisteiden uudelleenkirjoitusta käyttäytyy yleensä paremmin kuin auttaja, joka yrittää korjata ne.

Mittaa tunneli ennen kuin syytät reititintä

PPTP kutistaa käytettävissä olevaa hyötykuormaa, ja kutistuminen on aritmetiikkaa, ei mysteeri. Jokainen tunnelipaketti kuljettaa ulkoista IP-otsikkoa, laajennettua GRE-otsikkoa, PPP-otsikkoa ja salauksen kanssa MPPE-otsikkoa. Kun polku ei pysty kuljettamaan syntyvää kehystä, pienet paketit menevät läpi, kirjautuminen valmistuu ja istunto pysähtyy ensimmäisen kerran, kun tiedostonsiirto tai TLS-kättely lähettää täysikokoisen paketin.

Laske luku sen sijaan, että arvaisit. Laajennettu GRE maksaa 8 tavua, PPP 4, MPPE 4 ja ulkoinen IP-otsikko 20, joten tunneli syö 36 tavua ennen mitään hyötykuormaa. PPPoE-WAN:issa, joka päättyy 1492:een, suurin mahtuva PPP-MTU on 1492 miinus 36, eli 1456. Aseta mtu ja mru tähän arvoon PPP-asetuksissa ja testaa uudelleen pingillä, joka ei fragmentoi.

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

Ping mittaa polkua, ei tunnelia: 1464 tavua hyötykuormaa plus 28 tavua IP- ja ICMP-otsikoita täyttää täsmälleen 1492 tavun kehyksen. Jos ping epäonnistuu, laske lukua, kunnes se menee läpi, ja vähennä tuloksesta 36. Polun rajan yläpuolelle asetettu tunnelin MTU aiheuttaa jäätymisen ilman yhtäkään lokiriviä, joka mainitsisi koon.

PPTP, L2TP/IPsec tai OpenVPN samassa reitittimessä

Sama reititin voi kuljettaa mitä tahansa kolmesta tavallisesta tunnelista, ja ero on siinä, mitä sen on ilmaistava. PPTP tarvitsee kaksi sääntöä kahdessa eri kerroksessa. L2TP IPsecin päällä tarvitsee UDP 500 ja 4500 avainten vaihtoon ja, ellei NAT-T kuljeta sitä, protokollan 50 hyötykuormalle. OpenVPN tarvitsee yhden UDP-portin eikä lainkaan auttajaa.

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

L2TP-sarake ei ole automaattisesti GRE:tä ystävällisempi. ESP on IP-protokolla 50, eikä siinäkään ole porttia, joten reitittimellä, jolla on vaikeuksia protokollan 47 kanssa, voi olla samasta syystä vaikeuksia protokollan 50 kanssa. NAT-T on olemassa kääriäkseen ESP:n UDP 4500:n sisään, ja kun molemmat päät tukevat sitä, protokollan 50 sääntö käy tarpeettomaksi. Se on päiden ominaisuus, ei reitittimen PPTP-ruudun. Vahvista, minkä kapseloinnin asiakas todella neuvotteli, ennen kuin kirjoitat säännöt molemmille.

OpenVPN on vaihtoehto, jossa on reitittimen puolella vähiten liikkuvia osia. Yksi UDP-portti, yksi välitys, ei yhteyksien seuranta-auttajaa eikä puhelutunnisteiden uudelleenkirjoitusta. Vaihtokaupassa on asiakasohjelma, joka on asennettava sisäänrakennetun valitsimen sijaan, ja usein se on ainoa syy, miksi PPTP pysyy keskustelussa.

Mitä korjata ja mitä vaihtaa

Välityksen ja MTU:n korjaaminen antaa tunnelin, joka toimii, ei sellaista joka sinun pitäisi pitää. PPTP:n MSCHAPv2-todennus on ollut hyökättävissä vuosia, ja toimiva tunneli siirtää tunnistetietoja, jotka voidaan palauttaa offline-tilassa. Jos etälaitteesi pystyy ajamaan L2TP/IPsecin tai OpenVPN:n, käsittele korjausta päivämäärällä varustettuna väliaikaisena toimenpiteenä.

Ratkaisu riippuu siitä, mitä etäpää tukee ja kuinka kauan järjestelyn on kestettävä. Vanha laite, joka puhuu vain PPTP:tä, saa korjauksen; kaikki, mihin voi asentaa asiakasohjelman, siirretään.

Ennen kuin suljet tiketin, varmista, että asiakas selviää suuresta siirrosta eikä vain kirjautumisesta, ja että reititin pitää yhä protokollan 47 sääntönsä uudelleenkäynnistyksen jälkeen. Tunneli, joka selviää yhdestä tiedostokopiosta ja kuolee seuraavan laiteohjelmistopäivityksen jälkeen, ei ollut koskaan valmis.

Aiheeseen liittyvät artikkelit