PPTP splitst tunnelen wurket net: meitsje earst it GRE-paad rjocht
PPTP splitst tunnelen mislearret om twa ferskillende redenen: GRE is blokkearre, of de ynterne rûte ûntbrekt. Testearje earst it ferfier, dan it belied.
Sjoch in PPTP-ferbining omheech komme en it is maklik om te leauwen dat it dreechste part dien is: de klient autentisearret, in ppp0-adapter of WAN Miniport ferskynt, en it statusfinster wurdt grien. Dan rint it earste fersyk nei in ynterne host yn in time-out, en it profyl krijt de skuld. Yn ’e praktyk moat men twa ûnôfhinklike lagen romje: it bûtenste ferfier dat TCP 1723 en GRE draacht, en it ynterne belied dat beslút hokker bestimmingen de PPP-ynterface brûke. In griene status bewiist allinnich dat de earste laach ûnderhannele hat; oer de twadde seit it neat.
Folgje de klient fan profyl oant behearsokket
Iepenje it klientlogboek en fyn it punt dêr’t it de tsjinner kontaktet. PPTP iepenet earst in TCP-ferbining nei poarte 1723 en ûnderhannelet tunnelparameters oer dat kanaal. As dizze stap mislearret, docht neat letter ta, en de flater neamt meastentiids it tsjinneradres of in time-out.
Befêstigje de behearferbining op ’e tried foardat jo in rûte oanreitsje. Op ’e klient as in spegelpoarte, fange TCP 1723 foar ien ferbiningspoging:
sudo tcpdump -ni any 'tcp port 1723' -c 20
In foltôge hânskodding en in oprjochte sesje betsjutte dat it bûtenste behearkanaal wurket. In SYN dat nea in SYN-ACK krijt, wiist op in firewall, in ferkeard tsjinneradres, of in oanbieder dy’t de poarte filteret. In hânskodding folge troch in direkte reset betsjut faak dat de tsjinner de legitimaaasjes of it tunneltype wegere.
GRE is in twadde protokol, net in poarte
PPTP draacht de PPP-lading yn fersterke GRE, IP-protokol 47, dat gjin poartenûmer hat foar in router om te folgjen. Dêrom kin in regel dy’t TCP 1723 tastiet, de tunnel dochs sûnder datapaad litte. Stateful NAT-apparaten moatte de oprop-ID yn GRE begripe om antwurden werom te mappen, en in protte dogge dat net. De PPTP-spesifikaasje hâldt it behearkanaal en de GRE-lading as aparte stikken, en dat moat jo testplan ek dwaan.
Pas op protokol 47 yn deselde opname, fergelykje dan wat útgiet mei wat weromkomt:
sudo tcpdump -ni any 'proto gre' -c 20
Pakketten dy’t sûnder antwurden útgiet, wylst TCP 1723 sûn bliuwt, binne de klassike blokkearre-GRE-hantekening. PPTP-passthrough op in konsuminterrouter is in funksje fan dy spesifike firmware, dus in wurkjend hotelnetwurk bewiist neat oer it folgjende. As de router gjin passthrough biedt en jo kinne it net feroarje, is de protokolkar it probleem, net de rûtetabel.
Bewiis dat de tunnel ien pakket ferpleatst
Sadree’t GRE floeit, jout PPP-ûnderhanneling in adres oan ’e klientynterface. Lês de tawizing ynstee fan dy oan te nimmen:
ip -4 addr show ppp0
Ping it peer-adres dat as bestimming fan ’e punt-nei-punt-keppeling toand wurdt. In antwurd yn dit stadium bewiist dat it ynkapsulearre paad fan ein oant ein wurket en dat de tsjinner yn ’e tunnel antwurdet. As de peer antwurdet mar ynterne hosts net, is it bûtenste ferfier yn oarder en is de fout nei binnen ferhuze.
Doch dit foardat jo in splitste rûte tafoegje. In rûteferoaring dy’t makke wurdt wylst it ferfier stikken is, makket in twadde fariabele en ferberget de earste.
Skriuw it splitste belied, DNS ynbegrepen
Splitst rûterjen is in list fan besluten, net in oanfinkfakje. Elk privee-prefix dat de tunnel oerstekke moat, hat in rûte fia de PPP-ynterface nedich, en elk prefix dat lokaal bliuwe moat, moat dêryn ûntbrekke. In rûte foar in applikaasje-subnet sûnder in byhearrende rûte nei syn privee resolvers is in folsleine manier om in útfal te meitsjen dat der as in stikken app útsjocht.
Kontrolearje de beslissing dy’t de kernel foar ien adres yn elke kategory nimt:
ip route get 10.20.5.10
ip route get 203.0.113.25
De earste moat ppp0 neame, de twadde de gewoane gateway. As beide deselde ynterface neame, is it belied hielendal net splitst. Foegje it adres fan ’e DNS-tsjinner sels ta oan ’e tunnellist, oars ferlit namme-oplossing foar ynterne hosts fia de lokale resolver en jout neat nuttich werom.
In werhellbere kontrôle yn fiif stappen
Rin de lagen yn folchoarder troch en stop by de earste dy’t misrint: behearkanaal, GRE-sichtberens, PPP-peer-antwurd, splitste rûte foar ien yntern adres, en in applikaasjeferfyk oer de tunnel. Elke stap hat syn eigen kommando, sadat in mislearring taskreaun wurde kin ynstee fan mysterieus te wêzen.
In kompakte ferzje foar in Linux-klient sjocht der sa út:
sudo tcpdump -ni any 'tcp port 1723 or proto gre' -c 40
ip -4 addr show ppp0
ping -c 3 192.0.2.1
ip route get 10.20.5.10
Op Windows jildt deselde folchoarder mei route print en de adapterstatus dy’t yn ’e klient toand wurdt. PPTP is in ferâldere protokol, en as de tsjinner SSTP of IKEv2 biedt, is ferhúzjen meastentiids in better brûken fan tiid as it ôfstimmen fan in paad dat ôfhinklik is fan protokol 47 dat elke hop passearret. Kontrolearje it sertifikaat en it autentikaasjekontrakt fan ’e ferfanging ynstee fan in âld profyl yn in nije ferzje te kopiearjen.