Памылка General failure пры ping LAN-адраса з уключаным кліентам VPN
Windows паведамляе, што зусім не можа дасягнуць адаптара, хоць табліца маршрутызацыі выглядае правільна. Вызначце, што блакуе: маршрутызацыя, фільтрацыя ці кліент.
Адзін маршрут да хоста, адзін адрас, і ping адразу правальваецца з General failure замест таго, каб запыт скончыўся тайм-аўтам. Гэта розніца і ёсць увесь дыягназ. Тайм-аўт азначае, што пакет выйшаў і нешта яго праігнаравала. General failure азначае, што Windows наогул не змог перадаць пакет ні аднаму інтэрфейсу.
Таму, калі табліца маршрутаў выглядае бездакорна, а памылка ўсё яшчэ General failure, блакаванне адбываецца ніжэй за рашэнне аб маршрутызацыі, і кліент правайдэра — гэта тое, што працуе там.
Прачытайце памылку раней за табліцу маршрутаў
Windows вяртае гэтую памылку, калі не можа знайсці інтэрфейс для адпраўкі, і нічога не кажа пра тое, што зрабіў бы пункт прызначэння з пакетам. Дасягальнасць, міжсеткавыя экраны на далёкім баку і даступнасць сэрвісу — усе гэта наступныя пытанні, да якіх вы яшчэ не дайшлі.
Класічная канфігурацыя для гэтага выпадку — маршрут да хоста, які накіроўвае адзін LAN-адрас на фізічны шлюз, каб ён абыходзіў тунель. route add яго прымае, route print яго паказвае, а ping усё роўна правальваецца, бо драйвер фільтра ўжо вырашыў, што пакету выходзіць нельга.
Перш чым прыняць гэтае тлумачэнне, пераканайцеся, што маршрут сапраўды выбіраецца: праверце індэкс інтэрфейса і метрыку, і ўпэўніцеся, што запіс не састарэў пасля перападключэння. Маршрут, які паказвае на інтэрфейс, якога ўжо няма, дае падобную памылку з куды менш цікавай прычыны.
Тры ўзроўні, тры розныя ўладальнікі
Перамагае той узровень, які працуе апошнім, і гэтыя тры ідуць не ў тым парадку, які большасць людзей мяркуе.
| Layer | What it decides |
|---|---|
| Routing table | Which interface and next hop should carry the packet |
| Client filter driver | Whether this packet is permitted to leave outside the tunnel at all |
| Client feature | Whether a named feature, such as LAN blocking, is active right now |
Сярэдні ўзровень — прычына таго, што маршрут можа быць адначасова правільным і бескарысным. Кліенты правайдэраў усталёўваюць фільтр і правілы міжсеткавага экрана, каб трафік па-за тунелем адкідваўся, і гэта той самы механізм, які рэалізуе іх kill switch. Нішто ў табліцы маршрутаў не ўдзельнічае ў гэтым рашэнні.
Трэці ўзровень тлумачыць дзіўную справаздачу, якая прыходзіць рэгулярна: лакальная падсетка недасягальная нават пасля адключэння кліента. Сэрвіс усё яшчэ працуе, а фільтр усё яшчэ ўсталяваны, таму «не падключаны» не тое самае, што «не фільтруе». Зачыніце кліент, а не проста адключыце яго, перш чым рабіць любыя высновы.
Што паспрабаваць, па чарзе
Пачніце з выдалення функцый, якія танна выдаляць і лёгка вяртаць. Выяўленне LAN, часам званае нябачнасцю ў LAN, блакуе трафік да прыватных дыяпазонаў адрасоў, каб машына заставалася схаванай ад суседзяў. Прынтары, лакальныя файлавыя серверы і сам роўтар знікаюць за гэтым пераключальнікам. Функцыі абароны ад пагроз, якія фільтруюць DNS, усталёўваюць свае ўласныя перахопнікі, і паведамляецца, што яны гэтак жа ламаюць лакальную дасягальнасць.
Выключыце абодва, цалкам зачыніце кліент, затым праверце адрас. Гэтая паслядоўнасць аддзяляе функцыю, якая блакуе трафік, ад тунеля, які маршрутызуе яго няправільна, і займае дзве хвіліны замест паўдня статычных маршрутаў.
ping 192.168.1.50
tracert -d 192.168.1.50
route print -4
Калі адрас адказвае, як толькі функцыі выключаны, вы маеце рашэнне палітыкі, а не няспраўнасць: выбірайце паміж тым, каб пакінуць функцыю выключанай, дадаць выключэнне або прыняць, што машына застанецца нябачнай у лакальнай сетцы.
Выкарыстоўвайце выключэнне кліента, вузка
Калі функцыя павінна заставацца ўключанай, уласнае раздзеленае тунеляванне кліента — гэта падтрыманы выхад. Трымайце выключэнне настолькі малым, наколькі дазваляе патрабаванне, што звычайна азначае адзін адрас хоста для аднаго сервера або адзін прэфікс для аднаго сегмента. Правіла, якое пакрывае ўвесь прыватны дыяпазон, — гэта пастаянная дзірка, якую ніхто не ўспомніць, што дадаў, і ніхто не адважыцца выдаліць.
Затым правярайце спачатку па адрасе, а потым па імені. Калі адрас адказвае з першым хопам на фізічным шлюзе, выключэнне працуе. Калі імя ўсё яшчэ не працуе, вы перайшлі да DNS, бо рэзалвер тунеля не ведае лакальнай зоны, і ніякае змяненне маршрутызацыі яго не навучыць.
Пакіньце маршрут або выключэнне, але не абодва, плюс нататку пра тое, што з іх робіць працу. Два механізмы, што перакрываюцца, хаваюць адзін аднаго, і наступны чалавек, які будзе адладжваць гэтую машыну, выдаліць адзін з іх і не ўбачыць змен.
Калі кліент — перашкода
Некаторыя зборкі фільтруюць трафік так, што ні статычны маршрут, ні выключэнне кліента не могуць гэтага перамагчы. Калі выснова такая, сумленныя варыянты — чакаць функцыю абыходу або падключыцца звычайным кліентам OpenVPN з уласным профілем правайдэра, што і рэкамендаваў адказ падтрымкі вытворцы ў першапачатковай справаздачы.
Зразумейце кампраміс, перш чым рабіць такую замену. Звычайны профіль паводзіць сябе як любы звычайны тунель: ён усталёўвае свае маршруты і не перабудоўвае астатні стек, таму вузкі маршрут да хоста па-ранейшаму паводзіць сябе так, як вы чакаеце. Вы губляеце ўсё, што брэндавы кліент рэалізаваў вакол тунеля, уключаючы kill switch і фільтрацыю DNS, і гэта трэба свядома аднавіць або прыняць як адсутнасць.
Што б вы ні выбралі, запішыце, які ўзровень валодаў блакаваннем. Пакет, які так і не пакінуў машыну, — гэта вынік фільтра, і ніякае змяненне маршрутызацыі не выправіць фільтр.