Sledujte, ako sa PPTP spojenie nadväzuje, a ľahko uveríte, že ťažká časť je hotová: klient sa overí, objaví sa adaptér ppp0 alebo WAN Miniport a stavové okno zozeleňuje. Potom prvý príkaz na vnútorný host vyprší a profil je obviňovaný. V praxi treba prejsť dve nezávislé vrstvy: vonkajší transport, ktorý nesie TCP 1723 a GRE, a vnútornú politiku, ktorá rozhoduje, ktoré ciele používajú rozhranie PPP. Zelený stav dokazuje len to, že prvá vrstva sa dohodla; o druhej nehovorí nič.

Sledujte klienta od profilu k riadiacemu socketu

Otvorte log klienta a nájdite miesto, kde kontaktuje server. PPTP najprv otvorí TCP spojenie na port 1723 a cez tento kanál vyjedná parametre tunela. Ak tento krok zlyhá, nič ďalšie nehrá rolu a chyba zvyčajne uvádza adresu servera alebo vypršanie časového limitu.

Predtým než sa dotknete akejkoľvek trasy, potvrďte riadiace spojenie v sieti. Na klientovi alebo zrkadlovom porte zachyťte TCP 1723 pre jeden pokus o pripojenie:

sudo tcpdump -ni any 'tcp port 1723' -c 20

Dokončený handshake a nadviazaná relácia znamenajú, že vonkajší riadiaci kanál funguje. SYN, ktorý nikdy nedostane SYN-ACK, ukazuje na firewall, nesprávnu adresu servera alebo poskytovateľa, ktorý port filtruje. Handshake nasledovaný okamžitým resetom často znamená, že server odmietol prihlasovacie údaje alebo typ tunela.

GRE je druhý protokol, nie port

PPTP nesie užitočné zaťaženie PPP v rozšírenom GRE, IP protokole 47, ktorý nemá číslo portu, ktoré by router mohol sledovať. Preto pravidlo povoľujúce TCP 1723 môže tunel stále nechať bez dátovej cesty. Stavové NAT zariadenia musia rozumieť ID volania v GRE, aby mapovali odpovede späť, a mnohé to nevedia. Špecifikácia PPTP drží riadiaci kanál a užitočné zaťaženie GRE ako oddelené časti, a taký musí byť aj váš testovací plán.

Sledujte protokol 47 v tom istom zachytení a potom porovnajte, čo odchádza, s tým, čo sa vracia:

sudo tcpdump -ni any 'proto gre' -c 20

Pakety odchádzajúce bez odpovedí, kým TCP 1723 zostáva zdravé, sú klasickým podpisom zablokovaného GRE. Priechod PPTP na domácom routeri je vlastnosťou daného firmvéru, takže fungujúca hotelová sieť nič nedokazuje o tej ďalšej. Ak router priechod neponúka a nemôžete ho zmeniť, problémom je voľba protokolu, nie smerovacia tabuľka.

Dokážte, že tunel prenesie jeden paket

Keď GRE prúdi, vyjednávanie PPP priradí adresu klientskému rozhraniu. Prečítajte si priradenie, namiesto toho, aby ste ho predpokladali:

ip -4 addr show ppp0

Pingnite adresu partnera zobrazenú ako cieľ spoja bod-bod. Odpoveď v tejto fáze dokazuje, že zapuzdrená cesta funguje od konca do konca a že server odpovedá vnútri tunela. Ak partner odpovedá, ale vnútorné hosty nie, vonkajší transport je v poriadku a porucha sa presunula dovnútra.

Urobte to pred pridaním akejkoľvek rozdelenej trasy. Zmena trasy vykonaná pri pokazenom transporte vytvára druhú premennú a skrýva tú prvú.

Napíšte rozdelenú politiku vrátane DNS

Rozdelené smerovanie je zoznam rozhodnutí, nie zaškrtávacie políčko. Každý privátny prefix, ktorý musí prejsť tunelom, potrebuje trasu cez rozhranie PPP, a každý prefix, ktorý má zostať lokálny, v ňom musí chýbať. Trasa k podsieti aplikácie bez zodpovedajúcej trasy k jej privátnemu resolveru je častý spôsob, ako vytvoriť výpadok, ktorý vyzerá ako pokazená aplikácia.

Skontrolujte rozhodnutie, ktoré jadro urobí pre jednu adresu v každej kategórii:

ip route get 10.20.5.10
ip route get 203.0.113.25

Prvá by mala uviesť ppp0, druhá bežnú bránu. Ak obe uvádzajú rovnaké rozhranie, politika vôbec nie je rozdelená. Pridajte vlastnú adresu DNS servera do tunelového zoznamu, inak preklad mien pre vnútorné hosty odchádza cez lokálny resolver a nevracia nič užitočné.

Opakovateľná kontrola v piatich krokoch

Prejdite vrstvy v poradí a zastavte sa pri prvej, ktorá zlyhá: riadiaci kanál, viditeľnosť GRE, odpoveď partnera PPP, rozdelená trasa pre jednu vnútornú adresu a požiadavka aplikácie cez tunel. Každý krok má svoj príkaz, takže porucha je priraditeľná, nie záhadná.

Kompaktná verzia pre klienta Linux vyzerá takto:

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

V systéme Windows platí rovnaké poradie s route print a stavom adaptéra zobrazeným v klientovi. PPTP je zastaraný protokol, a ak server ponúka SSTP alebo IKEv2, prechod je zvyčajne lepšie využitie času než ladenie cesty, ktorá závisí od prechodu protokolu 47 každým skokom. Skontrolujte certifikát a zmluvu o overovaní náhrady, namiesto kopírovania starého profilu do nového vydania.

Súvisiace články