Nedostaje PPTP passthrough: ispravite pogrešku 807 u Windows VPN-u
Prosljeđivanje TCP-a 1723 samo po sebi ne uklanja PPTP pogrešku 807. GRE je IP protokol 47, pa usmjerivaču treba passthrough ili izričito pravilo za protokol.
Prosljeđivanje TCP-a 1723 često otvori prvi dio PPTP-a, a ostatak ostavi slomljenim, pa Windows pri pokušaju i dalje vraća pogrešku 807. Sljedeći poriv je dodati pravilo za port 47, i upravo taj korak potroši cijelo poslijepodne: GRE je broj protokola u IP zaglavlju, a ne port koji tablica prosljeđivanja može prepoznati. Dok usmjerivač ne propusti protokol 47 i ne veže ga uz isti poziv, tunel ne može započeti. Odjeljci u nastavku razdvajaju dva kanala, a zatim ih ispituju jedan po jedan.
Tablica portova nema redak za broj protokola
PPTP koristi dva razgovora koji otkazuju na različite načine. Onaj na TCP-u 1723 započinje poziv, prenosi podatke o vezi i prekida ga kad se korisnik odspoji. Strana s podacima radi unutar GRE-a, koji IP zaglavlje označava brojem protokola 47, a unutar tog tunela PPP dogovara vezu dok MS-CHAPv2 provjerava vjerodajnice.
Budući da GRE ne nosi transportno zaglavlje, ne otkriva nikakve portove, pa pravilo napisano za portove nema što prepoznati. Usmjerivač koji prosljeđuje 1723 stvara mapiranje za tu TCP sesiju i tu se zaustavlja. Firmware koji obrađuje drugu polovicu tu funkciju naziva PPTP passthrough ili PPTP ALG, a neki firmware ne nudi ni jedno ni drugo i nikad ne spominje prazninu. Natpis na potvrdnom okviru manje je važan od toga prepoznaje li se protokol 47 uopće.
Što Windows javlja kad podatkovni put umre
Pogreška 807 kaže da veza nije mogla biti dovršena, što u praksi znači da je poziv stigao do poslužitelja, a podatkovni kanal nije oživio. To je presuda o transportu, a ne o računu. Pogreška 691 je ona koja upućuje na vjerodajnice ili na nesklad protokola provjere autentičnosti, pa vas šalje sasvim drugamo.
Radite na transportu prije nego dotaknete lozinku. Mijenjanje vjerodajnica u lovu na 807 ostavlja pravi kvar na mjestu i sljedeći pokušaj čini teže čitljivim.
Zašto drugi klijent kvari tunel koji radi
Kad nema portova koji bi ih razlikovali, NAT uređaj ne može razdvojiti dva PPTP klijenta kako razdvaja dvije HTTPS sesije. Zato mnogi potrošački uređaji dopuštaju jedan PPTP poziv i prate ga po izvornoj adresi. Prijenosnik koji je radio sam prestaje dovršavati kad se javi drugi stroj, a s klijentske strane kvar izgleda slučajno. Taj obrazac pripada firmwareu i nikakva promjena profila neće ga izmijeniti.
Promatrajte tablicu veza dok se oba klijenta javljaju. Ako mapiranje uvijek drži samo prvi host, usmjerivač je dosegao granicu svojih mogućnosti i nijedna klijentska postavka to neće pomaknuti.
Dokažite koja polovica otkazuje
Potvrdite da TCP 1723 stiže prije nego išta promijenite na usmjerivaču, jer taj odgovor određuje koju polovicu ispitujete. Pokrenite ovo s Windows klijenta prema vlastitom nazivu poslužitelja. Prva naredba ispisuje je li port odgovorio, a druga poziva bez dijaloga, što ponovljene pokušaje čini usporedivima.
Test-NetConnection vpn.example.com -Port 1723
rasdial "Work VPN"
Istinit rezultat na testu porta znači da je kontrolni kanal otvoren i da je GRE preostali osumnjičenik. Lažan rezultat znači da su usmjeravanje, filtar ili prosljeđivanje slomljeni i nikakva promjena GRE-a to neće spasiti. Podatkovnu stranu treba promatrati ondje gdje se može vidjeti, na poslužitelju ili na usmjerivaču.
tcpdump -ni any proto 47
Ekvivalent u Wiresharku je filtar prikaza ip proto 47, koji je lakše predati nekome kome naredbeni redak nije ugodan. GRE koji stiže bez ičega u odgovoru znači da povratni put treba popraviti.
Što zapravo ispravlja pogrešku
Gdje usmjerivač izlaže postavku, uključite PPTP passthrough ili izričito dopustite protokol 47 na firmwareu koji prihvaća pravila. Na RouterOS-u pravilo prosljeđivanja izravno prepoznaje protokol, što prosljeđivanje temeljeno na portovima nikad ne bi moglo. Potrošački firmware obično skriva istu odluku iza potvrdnog okvira, ponekad pod sigurnosnim postavkama, a ne pod prosljeđivanjem portova. Ako takva kontrola ne postoji, ništa na klijentu to neće nadoknaditi.
/ip firewall filter add chain=forward protocol=gre action=accept
/ip firewall filter print where protocol=gre
Zamjena PPTP-a druga je opcija i često jeftinija. Usmjerivač koji sam završava VPN izbjegava dvostruki NAT za dolazne klijente, a protokol koji NAT temeljen na portovima već obrađuje ne treba passthrough: OpenVPN preko UDP-a, SSTP preko TCP-a 443 ili L2TP/IPsec s NAT-T-jem koji umata ESP u UDP 4500. PPTP također ovisi o MS-CHAPv2, čije dokumentirane slabosti čine ga lošim izborom za novu implementaciju čak i nakon što pogreška nestane.
Zapišite koje je pravilo napravilo razliku, jer će isto mjesto naići na isto ograničenje kad drugi korisnik zatraži pristup. Ispravak na razini protokola spada u mrežne bilješke, gdje će sljedeći inženjer pogledati.