Sledujte, jak se PPTP spojení navazuje, a snadno uvěříte, že ta těžká část je hotová: klient se ověří, objeví se adaptér ppp0 nebo WAN Miniport a stavové okno zezelená. Pak první požadavek na vnitřní host vyprší a profil je obviňován. V praxi je třeba projít dvě nezávislé vrstvy: vnější transport, který nese TCP 1723 a GRE, a vnitřní politiku, která rozhoduje, které cíle používají rozhraní PPP. Zelený stav dokazuje jen to, že první vrstva se dohodla; o druhé neříká nic.

Sledujte klienta od profilu k řídicímu socketu

Otevřete log klienta a najděte místo, kde kontaktuje server. PPTP nejprve otevře TCP spojení na port 1723 a přes tento kanál vyjedná parametry tunelu. Pokud tento krok selže, nic dalšího nehraje roli a chyba obvykle uvádí adresu serveru nebo vypršení časového limitu.

Potvrďte řídicí spojení na síti, než se dotknete jakékoli trasy. Na klientovi nebo zrcadlovém portu zachyťte TCP 1723 pro jeden pokus o připojení:

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

Dokončené handshake a navázaná relace znamenají, že vnější řídicí kanál funguje. SYN, který nikdy nedostane SYN-ACK, ukazuje na firewall, špatnou adresu serveru nebo poskytovatele, který port filtruje. Handshake následovaný okamžitým resetem často znamená, že server odmítl přihlašovací údaje nebo typ tunelu.

GRE je druhý protokol, ne port

PPTP nese užitečné zatížení PPP uvnitř rozšířeného GRE, IP protokolu 47, který nemá číslo portu, jež by router mohl sledovat. Proto pravidlo povolující TCP 1723 může tunel stále nechat bez datové cesty. Stavové NAT zařízení musí rozumět ID volání uvnitř GRE, aby mapovala odpovědi zpět, a mnohá to neumí. Specifikace PPTP drží řídicí kanál a užitečné zatížení GRE jako oddělené části, a takový musí být i váš testovací plán.

Sledujte protokol 47 ve stejném zachycení a pak porovnejte, co odchází, s tím, co se vrací:

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

Pakety odcházející bez odpovědí, zatímco TCP 1723 zůstává zdravé, jsou klasickým podpisem blokovaného GRE. Průchod PPTP na domácím routeru je vlastnost daného firmwaru, takže fungující hotelová síť nic nedokazuje o té další. Pokud router průchod nenabízí a nemůžete ho změnit, problémem je volba protokolu, ne směrovací tabulka.

Dokažte, že tunel přenese jeden paket

Jakmile GRE proudí, vyjednávání PPP přiřadí adresu klientskému rozhraní. Přečtěte si přiřazení, místo abyste ho předpokládali:

ip -4 addr show ppp0

Pingněte adresu protějšku zobrazenou jako cíl spoje bod-bod. Odpověď v této fázi dokazuje, že zapouzdřená cesta funguje od konce ke konci a že server odpovídá uvnitř tunelu. Pokud protějšek odpovídá, ale vnitřní hostitelé ne, vnější transport je v pořádku a porucha se přesunula dovnitř.

Udělejte to před přidáním jakékoli rozdělené trasy. Změna trasy provedená při rozbitém transportu vytváří druhou proměnnou a skrývá tu první.

Napište rozdělenou politiku, včetně DNS

Rozdělené směrování je seznam rozhodnutí, ne zaškrtávací políčko. Každý privátní prefix, který musí projít tunelem, potřebuje trasu přes rozhraní PPP, a každý prefix, který má zůstat lokální, v něm musí chybět. Trasa k podsíti aplikace bez odpovídající trasy k jejímu privátnímu resolveru je častý způsob, jak vytvořit výpadek, který vypadá jako rozbitá aplikace.

Zkontrolujte rozhodnutí, které jádro udělá pro jednu adresu v každé kategorii:

ip route get 10.20.5.10
ip route get 203.0.113.25

První by měla uvést ppp0, druhá běžnou bránu. Pokud obě uvádějí stejné rozhraní, politika vůbec není rozdělená. Přidejte vlastní adresu DNS serveru do tunelového seznamu, jinak překlad jmen pro vnitřní hostitele odchází přes lokální resolver a nevrací nic užitečného.

Opakovatelná kontrola v pěti krocích

Projděte vrstvy v pořadí a zastavte se u první, která selže: řídicí kanál, viditelnost GRE, odpověď protějšku PPP, rozdělená trasa pro jednu vnitřní adresu a požadavek aplikace přes tunel. Každý krok má svůj příkaz, takže porucha je přiřaditelná, ne záhadná.

Kompaktní verze pro klienta Linux vypadá 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

Ve Windows platí stejné pořadí s route print a stavem adaptéru zobrazeným v klientovi. PPTP je zastaralý protokol, a pokud server nabízí SSTP nebo IKEv2, přechod je obvykle lepší využití času než ladění cesty, která závisí na průchodu protokolu 47 každým skokem. Zkontrolujte certifikát a smlouvu o ověřování náhrady, místo abyste kopírovali starý profil do nové verze.

Související články