Chýba priechod PPTP: oprava chyby 807 vo Windows VPN
Presmerovanie TCP 1723 samo o sebe neodstráni chybu PPTP 807. GRE je protokol číslo 47 v hlavičke IP, takže router potrebuje priechod alebo výslovné pravidlo pre protokol.
Presmerovanie TCP 1723 často vyrieši len prvú časť PPTP a zvyšok nechá pokazený, takže Windows pri pokuse stále vráti chybu 807. Ďalší inštinkt je pridať pravidlo pre port 47, a práve tento krok premrhá popoludnie: GRE je číslo protokolu v hlavičke IP, nie port, na ktorý sa dá smerovacia tabuľka napasovať. Kým router neprepustí protokol 47 a neprepojí ho s tým istým spojením, tunel sa nemôže spustiť. Nasledujúce časti oddeľujú dva kanály a potom ich testujú jeden po druhom.
Tabuľka portov nemá riadok pre číslo protokolu
PPTP používa dve konverzácie, ktoré zlyhávajú rôznymi spôsobmi. Tá na TCP 1723 spustí spojenie, odovzdá informácie o linke a ukončí ho, keď sa používateľ odpojí. Dátová strana beží vnútri GRE, ktoré hlavička IP označuje číslom protokolu 47, a vnútri tohto tunela PPP dohodne linku, zatiaľ čo MS-CHAPv2 overuje prihlasovacie údaje.
Keďže GRE nenesie žiadnu transportnú hlavičku, nevykazuje žiadne porty, takže pravidlo napísané pre porty nemá čo zhodnotiť. Router, ktorý presmerúva 1723, vytvorí mapovanie pre túto TCP reláciu a tam skončí. Firmvér, ktorý zvládne druhú polovicu, nazýva túto funkciu PPTP passthrough alebo PPTP ALG a niektorý firmvér neponúka ani jedno a medzeru vôbec nespomína. Menej ako označenie zaškrtávacieho políčka záleží na tom, či je protokol 47 vôbec rozpoznaný.
Čo Windows hlási, keď dátová cesta zlyhá
Chyba 807 hovorí, že spojenie nebolo možné dokončiť, čo v praxi znamená, že hovor dosiahol server a dátový kanál sa nespustil. Je to verdikt o transporte, nie o účte. Chyba 691 je tá, ktorá ukazuje na prihlasovacie údaje alebo na nezhodu autentifikačného protokolu, takže vás pošle úplne inam.
Predtým, než sa dotknete hesla, pracujte na transporte. Zmena prihlasovacích údajov pri prenasledovaní 807 nechá skutočnú chybu na mieste a ďalší pokus sa číta ťažšie.
Prečo druhý klient pokazí fungujúci tunel
Bez portov na ich rozlíšenie nedokáže zariadenie NAT oddeliť dvoch klientov PPTP tak, ako oddeľuje dve relácie HTTPS. Mnohé spotrebiteľské zariadenia preto povoľujú jedno spojenie PPTP a sledujú ho podľa zdrojovej adresy. Notebook, ktorý fungoval sám, prestane spojenie dokončovať, keď zavolá druhý stroj, a z pohľadu klienta zlyhanie vyzerá náhodne. Ten vzorec patrí firmvéru a žiadna zmena profilu ho nezmení.
Sledujte tabuľku spojení, kým volajú obaja klienti. Ak mapovanie drží vždy len prvý hostiteľ, router dosiahol hranicu svojich možností a žiadne nastavenie na strane klienta s tým nepohne.
Dokážte, ktorá polovica zlyháva
Predtým, než na routeri čokoľvek zmeníte, overte, že TCP 1723 prichádza, pretože táto odpoveď rozhoduje, ktorú polovicu testujete. Spustite ich z klienta Windows proti vlastnému názvu servera. Prvý vypíše, či port odpovedal, a druhý volá bez dialógu, čo robí opakované pokusy porovnateľnými.
Test-NetConnection vpn.example.com -Port 1723
rasdial "Work VPN"
Pravdivý výsledok portového testu znamená, že riadiaci kanál je otvorený a GRE je zostávajúci podozrivý. Nepravdivý výsledok znamená, že smerovanie, filter alebo presmerovanie je pokazené, a žiadna zmena GRE to nezachráni. Dátovú stranu treba pozorovať tam, kde ju vidieť, na strane servera alebo na routeri.
tcpdump -ni any proto 47
Ekvivalent vo Wiresharku je zobrazovací filter ip proto 47, ktorý sa ľahšie podáva niekomu, komu shell nie je pohodlný. GRE, ktoré prichádza a nič neodchádza späť, znamená, že návratovú cestu treba opraviť.
Čo chybu skutočne opraví
Tam, kde router nastavenie sprístupňuje, povoľte PPTP passthrough, alebo na firmvéri, ktorý prijíma pravidlá, výslovne povoľte protokol 47. Na RouterOS pravidlo forward zhoduje protokol priamo, čo presmerovanie založené na portoch nikdy nedokázalo. Spotrebiteľský firmvér zvyčajne skrýva to isté rozhodnutie za zaškrtávacím políčkom, niekedy v bezpečnostných nastaveniach namiesto presmerovania portov. Ak takáto možnosť neexistuje, nič na strane klienta to nenahradí.
/ip firewall filter add chain=forward protocol=gre action=accept
/ip firewall filter print where protocol=gre
Nahradenie PPTP je druhá možnosť a často tá lacnejšia. Router, ktorý VPN sám ukončuje, sa vyhne dvojitému NAT pre prichádzajúcich klientov a protokol, ktorý NAT založený na portoch už zvláda, nepotrebuje žiadny passthrough: OpenVPN cez UDP, SSTP cez TCP 443 alebo L2TP/IPsec s NAT-T, ktoré zabalí ESP do UDP 4500. PPTP tiež závisí od MS-CHAPv2, ktorého zdokumentované slabiny z neho robia zlú voľbu pre nové nasadenie aj po odstránení chyby.
Zapíšte si, ktoré pravidlo pomohlo, pretože tá istá lokalita narazí na ten istý limit, keď druhý používateľ požiada o prístup. Oprava na úrovni protokolu patrí do sieťových poznámok, kde sa pozrie ďalší inžinier.