Един маршрут до хост, един адрес и ping се проваля веднага с General failure вместо заявката да изтече. Тази разлика е целият диагноз. Изтичане означава, че пакетът е излязъл и нещо го е игнорирало. General failure означава, че Windows изобщо не е могъл да предаде пакета на нито един интерфейс.

Затова, когато таблицата с маршрути изглежда безупречна, а грешката все още е General failure, блокирането се случва под решението за маршрутизиране и клиентът на доставчика е това, което работи там.

Прочетете грешката преди таблицата с маршрути

Windows връща тази грешка, когато не намери интерфейс, по който да изпрати, и не казва нищо за това какво би направила дестинацията с пакета. Достижимостта, защитните стени в далечния край и наличността на услугата са все въпроси надолу по веригата, до които още не сте стигнали.

Класическата конфигурация за този случай е маршрут до хост, който насочва един LAN адрес към физическия шлюз, за да заобиколи тунела. route add го приема, route print го показва, а ping все още се проваля, защото филтърният драйвер вече е решил, че пакетът няма право да излиза.

Преди да приемете това обяснение, потвърдете, че маршрутът наистина се избира: проверете индекса на интерфейса и метриката и се уверете, че записът не е остарял след повторно свързване. Маршрут, който сочи към интерфейс, който вече не съществува, дава подобна грешка по много по-безинтересна причина.

Три слоя, три различни собственика

Печели слоят, който работи последен, а тези три не са в реда, който повечето хора предполагат.

LayerWhat it decides
Routing tableWhich interface and next hop should carry the packet
Client filter driverWhether this packet is permitted to leave outside the tunnel at all
Client featureWhether 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 филтриране, и то трябва да бъде възпроизведено умишлено или прието като отсъстващо.

Каквото и да изберете, запишете кой слой е бил собственик на блокирането. Пакет, който така и не е напуснал машината, е резултат от филтър и никаква промяна в маршрутизацията не може да поправи филтър.

Подобни статии