Пускането на два VPN клиента едновременно е спор за маршрутизация, а не настройка за поверителност. Който тунел притежава по-конкретния маршрут, получава трафика, а другият остава свързан, но бездействащ. Тогава корпоративният шлюз вижда връзка, идваща от личния изход, докато корпоративният клиент на вашата машина все още вижда всеки адаптер. Да решите кой от тези два факта е важен — това е цялото упражнение.

Таблицата за маршрути избира един победител

Заснемете таблицата преди и след стартирането на корпоративния клиент и четете колоната на интерфейса, а не само дестинацията. Обикновеният маршрут по подразбиране от външния тунел лесно се измества, защото двойка /1 е по-конкретна от /0. Буквалната двойка 0.0.0.0/1 и 128.0.0.0/1 покрива цялото IPv4 пространство на две половини и побеждава всеки единичен маршрут по подразбиране. След като се инсталира, външният тунел все още изглежда свързан и не носи нищо.

ip route show default
ip route show | grep -E '^(0.0.0.0/1|128.0.0.0/1)'

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

ip rule show

Windows решава въпроса с метрики

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

route print -4
Get-NetIPConfiguration | Select-Object InterfaceAlias, IPv4DefaultGateway

Сравнете двата изхода и назовете интерфейса, който притежава 0.0.0.0/0. Ако и двата клиента претендират за него, решава метриката, поради което тест на реда на свързване може да изглежда непоследователен на различни машини. Ако нито един изход не показва шлюз по подразбиране, клиентът не работи в пълен тунел и аргументът за веригата е безсмислен.

Два наблюдателя, два различни погледа

Отдалеченият шлюз вижда една връзка, идваща от външния изход, плюс всичко, което клиентът препредава в своя тунел. Локалният клиент вижда адаптери, маршрути и съществуването на друг тунел, защото работи с права да ги създава. Разделянето на тези погледи е смисълът; твърдението, че клиентът не може да забележи, не е.

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

DNS и IPv6 са местата, където веригата тече

DNS следва която и настройка на резолвера да победи и това не е непременно пътят, по който минават пакетите. Корпоративен резолвер, достигнат през корпоративния тунел, е в съответствие с дизайна; локален резолвер, достигнат извън него, не е, и той разкрива имена, които тунелът е трябвало да скрие. IPv6 е вторият теч: хост с двоен стек продължава да използва IPv6 към дестинации, които тунелът носи само през IPv4. Проверявайте семействата поотделно, защото тунел само за IPv4 не казва нищо за маршрути или резолвери IPv6.

ip -6 route show default
resolvectl status | grep -A2 'DNS Servers'

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

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