Прапуск PPTP адсутнічае: выпраўленне памылкі Windows VPN 807
Перасылка TCP 1723 сама па сабе не прыбірае памылку PPTP 807. GRE — гэта пратакол IP 47, таму маршрутызатару патрэбен прапуск або яўнае правіла для пратакола.
Перасылка TCP 1723 часта адкрывае першую частку PPTP і пакідае астатняе зламаным, таму Windows па-ранейшаму вяртае памылку 807 пры спробе. Наступны інстынкт — дадаць правіла для порта 47, і менавіта гэты крок марнуе палову дня: GRE — гэта нумар пратакола ў загалоўку IP, а не порт, які можа супаставіць табліца перасылкі. Пакуль маршрутызатар не прапусціць пратакол 47 і не прывяжа яго да таго ж выкліку, тунель не можа пачацца. Раздзелы ніжэй раздзяляюць два каналы, а затым правяраюць іх па чарзе.
У табліцы портаў няма радка для нумара пратакола
PPTP выкарыстоўвае дзве размовы, якія ламаюцца па-рознаму. Размова на TCP 1723 пачынае выклік, перадае інфармацыю аб злучэнні і сканчае яго, калі карыстальнік адключаецца. Бок даных працуе ўнутры GRE, які загаловак IP пазначае нумарам пратакола 47, і ўнутры гэтага тунелю PPP узгадняе злучэнне, а MS-CHAPv2 правярае ўліковыя даныя.
Паколькі GRE не мае загалоўка транспарту, ён не адкрывае ніякіх портаў, таму правіла, напісанае для портаў, не мае з чым супаставіцца. Маршрутызатар, які перасылае 1723, стварае адпаведнасць для гэтай сесіі TCP і спыняецца там. Прашыўка, якая апрацоўвае другую палову, называе гэтую функцыю прапускам PPTP або PPTP ALG, а некаторыя прашыўкі не прапануюць ні таго, ні іншага і ніколі не згадваюць пра прабел. Надпіс на сцяжку значыць менш, чым тое, ці распазнаецца пратакол 47 наогул.
Што паведамляе Windows, калі шлях даных памірае
Памылка 807 кажа, што злучэнне не ўдалося завяршыць, а на практыцы гэта азначае, што выклік дайшоў да сервера, а канал даных не ўзняўся. Гэта вырак пра транспарт, а не вырак пра ўліковы запіс. Памылка 691 — тая, што ўказвае на ўліковыя даныя або на неадпаведнасць пратакола аўтэнтыфікацыі, таму яна накіроўвае вас зусім у іншае месца.
Працуйце з транспартам, перш чым чапаць пароль. Змена ўліковых даных, каб дагнаць 807, пакідае сапраўдную няспраўнасць на месцы і робіць наступную спробу цяжэйшай для чытання.
Чаму другі кліент ламае працуючы тунель
Паколькі партоў, якія б іх адрознілі, няма, прылада NAT не можа раздзяліць двух кліентаў PPTP так, як яна раздзяляе дзве сесіі HTTPS. Таму многія спажывецкія прылады дазваляюць адзін выклік PPTP і адсочваюць яго па адрасе крыніцы. Ноўтбук, які працаваў адзін, перастае завяршаць злучэнне, як толькі другая машына набірае нумар, і з боку кліента збой выглядае выпадковым. Гэтая заканамернасць належыць прашыўцы, і ніякая змена профілю яе не зменіць.
Назірайце за табліцай злучэнняў, пакуль абодва кліенты набіраюць. Калі адпаведнасць заўсёды трымае толькі першы хост, маршрутызатар дасягнуў мяжы сваіх магчымасцей, і ніякая налада на баку кліента яго не зрушыць.
Дакажыце, якая палова збаіць
Пераканайцеся, што TCP 1723 даходзіць, перш чым нешта мяняць на маршрутызатары, бо гэты адказ вырашае, якую палову вы правяраеце. Запусціце гэта з кліента Windows супраць уласнай назвы сервера. Першая каманда друкуе, ці адказаў порт, а другая набірае нумар без дыялогу, што робіць паўторныя спробы параўнальнымі.
Test-NetConnection vpn.example.com -Port 1723
rasdial "Work VPN"
Праўдзівы вынік тэсту порта азначае, што кантрольны канал адкрыты і GRE — астатні падазроны. Ілжывы вынік азначае, што зламаныя маршрутызацыя, фільтр або перасылка, і ніякая змена GRE гэтага не выратуе. За бокам даных трэба назіраць там, дзе яго відаць: на серверы або на маршрутызатары.
tcpdump -ni any proto 47
Эквівалент у Wireshark — гэта фільтр адлюстравання ip proto 47, які прасцей перадаць таму, хто не пачуваецца ўпэўнена ў камандным радку. GRE, які прыходзіць без нічога ў адказ, азначае, што зваротны шлях трэба выправіць.
Што сапраўды выпраўляе памылку
Там, дзе маршрутызатар паказвае наладу, уключыце прапуск PPTP або дазвольце пратакол 47 яўна на прашыўцы, якая прымае правілы. На RouterOS правіла перасылкі супастаўляецца з пратаколам напрамую, чаго перасылка на аснове портаў не магла б ніколі. Спажывецкая прашыўка звычайна хавае тое ж рашэнне за сцяжком, часам у наладах бяспекі, а не ў перасылцы портаў. Калі такога кіравання няма, нішто на кліенце гэтага не кампенсуе.
/ip firewall filter add chain=forward protocol=gre action=accept
/ip firewall filter print where protocol=gre
Замяніць PPTP — другі варыянт і часта больш танны. Маршрутызатар, які сам завяршае VPN, пазбягае падвойнага NAT для ўваходных кліентаў, а пратакол, з якім ужо спраўляецца NAT на аснове портаў, зусім не патрабуе прапуску: OpenVPN праз UDP, SSTP праз TCP 443 або L2TP/IPsec з NAT-T, які заварочвае ESP у UDP 4500. PPTP таксама залежыць ад MS-CHAPv2, і яго дакументаваныя слабасці робяць яго дрэнным выбарам для новага разгортвання нават пасля знікнення памылкі.
Запішыце, якое правіла зрабіла розніцу, бо той самы сайт сутыкнецца з той самай мяжой, калі другі карыстальнік папросіць доступ. Выпраўленне на ўзроўні пратакола належыць у сеткавыя нататкі, дзе будзе глядзець наступны інжынер.