Чому ваша таблиця маршрутизації VPN у Windows показує 0.0.0.0/1 і 128.0.0.0/1
Опція шлюзу за замовчуванням додає два половинні маршрути, а не один. Прочитайте префікс, метрику й інтерфейс, перш ніж додати або видалити маршрут на клієнті.
Підключіться до VPN у Windows і відкрийте таблицю маршрутизації, і два записи впадають в око: 0.0.0.0/1 і 128.0.0.0/1. Це не друкарська помилка, і вони не замінюють маршрут за замовчуванням. Їхня поява залежить від однієї опції профілю, а пара — це спосіб побудови повного тунелю, а не функція розділеного тунелю. Прочитайте опцію, префікс і інтерфейс разом, перш ніж змінити хоча б один рядок.
Що встановлює опція шлюзу за замовчуванням
Опція профілю, яка надсилає все через тунель, працює, додаючи ці два префікси. Зніміть опцію — і вони зникнуть, залишивши маршрут, що охоплює лише підмережу, видану адаптеру тунелю. Прапорець керує парою; він не переписує єдиний маршрут за замовчуванням. Тому таблиця після зняття позначки виглядає як частковий перезапис, а не як видалення.
0.0.0.0/1 охоплює нижню половину простору IPv4, а 128.0.0.0/1 — верхню, тому разом вони охоплюють кожну одноадресну адресу. Кожен із них конкретніший за маршрут за замовчуванням 0.0.0.0/0, а отже, збіг за найдовшим префіксом надсилає звичайний трафік у тунель, тоді як фізичний маршрут за замовчуванням залишається на місці. Зберігати цей маршрут — не косметика: пакети, що обгортають зашифроване корисне навантаження, адресовані публічній адресі сервера й мають виходити через фізичний адаптер. Замініть маршрут за замовчуванням замість того, щоб ділити його, і транспорт самого тунелю спробує увійти в тунель, що є петлею, а не з’єднанням.
Тому буквальний 0.0.0.0/0, що вказує на адаптер VPN, варто зупинити й розглянути. Вбудований клієнт зазвичай такого не пише, отже, ручний маршрут або конфігурація іншого клієнта змінили таблицю у вас за спиною. Знайдіть його, перш ніж налагоджувати будь-що нижче.
Розбирання дешевше за збереження шлюзу
Розбирання — практичний аргумент на користь двох записів замість одного. Підключений клієнт володіє рівно двома маршрутами й видаляє їх під час відключення, залишаючи те, що фізичний адаптер має в цей момент. Клієнту, який замінив би єдиний маршрут за замовчуванням, довелося б пам’ятати попередній шлюз, а після зміни оренди DHCP він міг би відновити той, якого вже немає. Два власні записи такого стану не несуть.
Інші клієнти доходять до того самого рішення. Профіль OpenVPN з redirect-gateway def1 встановлює ці два префікси замість видалення маршруту за замовчуванням, і клієнт Windows дотримується цієї схеми з тієї самої причини маршрутизації.
Саме тому таблиця може виглядати як повний тунель, коли ви чекали на розділення. Пара — це спосіб побудови повного тунелю, а не доказ помилки розділеного тунелю. Якщо профіль налаштований на використання віддаленого шлюзу, маршрутизується все, чого б не досяг один локальний застосунок.
Найдовший префікс перемагає до будь-якої метрики
Довжина префікса визначає пошук раніше за будь-яке інше поле. Метрика лише розриває нічию між маршрутами з однаковим префіксом, тому запис /1 перемагає маршрут за замовчуванням /0 навіть за гіршої метрики. Прив’язка до інтерфейсу визначає, що залишиться, коли два маршрути поділяють префікс і Windows має вибрати, який адаптер надішле пакет.
route print -4
Get-NetRoute -AddressFamily IPv4 | Sort-Object DestinationPrefix
Find-NetRoute -RemoteIPAddress 10.50.5.20
Таблиця розділеного тунелю містить фізичний маршрут за замовчуванням, два половинні, маршрут підмережі тунелю й будь-який доданий офісний префікс. Фізичний маршрут за замовчуванням може мати нижчу або вищу метрику залежно від клієнта й профілю, і поки пара /1 існує, ця різниця нічого не змінює. Вона змінює все в момент видалення пари, і тоді виявляється застарілий шлюз або неправильний інтерфейс. Читайте всю таблицю, а не той один рядок, який ви збиралися змінити.
Виберіть одного власника офісного префікса
Для розділеного тунелю називайте лише той префікс, який має використовувати VPN, і виберіть один спосіб ним володіти. Спрямування маршруту на призначену адресу тунелю працює, доки ця адреса не зміниться, тоді як прив’язка до інтерфейсу переживає зміну адреси, але ламається, коли індекс призначається заново після перебудови профілю. Cmdlet, прив’язаний до профілю, уникає обох проблем ціною потреби в профілі.
route -p add 10.50.0.0 mask 255.255.0.0 172.16.8.1
route -p add 10.50.0.0 mask 255.255.0.0 0.0.0.0 IF 31
Add-VpnConnectionRoute -ConnectionName Office -DestinationPrefix 10.50.0.0/16
Cmdlet прив’язує префікс до названого профілю, тому маршрут з’являється разом із з’єднанням і зникає разом із ним, чого й хоче керований ноутбук. Постійний маршрут переживає перезавантаження й переживає профіль, який його спричинив, і саме так виведений з експлуатації VPN залишає записи на роки. Виберіть один метод на префікс і запишіть вибір, бо постійний маршрут плюс маршрут профілю для того самого префікса створюють дублікати, які болісно розплутувати під час розбирання. Що б ви не вибрали, володіння має бути видно в заявці, а не лише на машині.
Володіння — це питання, на яке відповідає цей розділ, а не синтаксис. Два власники одного префікса — це режим відмови, якого варто уникати.
Перевіряйте за призначенням, а не за сайтом
Перевірте призначення, яке має пройти через тунель, а не сайт, що повідомляє адресу виходу. Find-NetRoute повертає вибраний маршрут і адресу джерела, тож ви бачите, чи переміг офісний префікс, чи фізичний маршрут за замовчуванням, і потім відкриваєте саму спільну папку.
Find-NetRoute -RemoteIPAddress 10.50.5.20
Get-VpnConnection -Name Office
Сайт з адресою виходу — слабка перевірка, бо DNS, IPv6 і проксі браузера можуть надіслати цей запит кожен своїм шляхом. IPv4 і IPv6 також мають окремі налаштування в тому самому діалозі, і зняття одного прапорця залишає іншу родину недоторканою, тож машина з подвійним стеком може вести IPv6 через тунель, поки IPv4 іде розділеним маршрутом. Перевірте обидві родини, перш ніж називати профіль розділеним. Якщо маршрут правильний, а служба все одно не працює, залишений шар — фільтрування, а не маршрутизація.
Керований клієнтом брандмауер може блокувати офісну підмережу навіть за бездоганної таблиці маршрутизації. Ця політика належить тому, хто розгорнув профіль, а не тому, хто редагує маршрути.