Сеанс завершився кілька годин тому, адаптер зник, а маршрут досі в таблиці й указує на інтерфейс 42. Видалити цей рядок — одна команда; вирішити, що це правильний рядок, — чотири перевірки. Таблиця маршрутів спільна, тому широке видалення прибирає шляхи, якими ще користуються інші з'єднання, зокрема той, що несе тунель. Кожен крок нижче звужує ціль, доки збігтися не зможе лише один запис.

1. Вирішіть, чи запис застарів, чи зроблений навмисно

Запис, що пережив перезавантаження, був десь записаний, і це місце зазвичай рішення, а не випадковість. Розділений тунель покладається на маршрути, які виглядають точно як залишки, а політику, що проштовхує один префікс через тунель, в одному списку не відрізнити від застарілого запису. Запитайте, коли маршрут з'явився: той, що існує лише поки тунель піднятий, належить конфігурації клієнта, тож команда очищення — неправильний інструмент. Видаліть навмисний маршрут, і наступне з'єднання впаде на кроці, за яким ніхто не стежить.

Маршрут до кінцевої точки заслуговує на окреме попередження. Коли клієнт додає маршрут до вузла VPN-сервера, щоб зашифровані пакети доходили до нього через локальне з'єднання, видалення цього маршруту обвалює тунель під час наступного перепідключення, і симптом читається як збій сервера. Перш ніж щось чіпати, порівняйте призначення з адресою, до якої підключається клієнт: єдина публічна адреса, що збігається з VPN-сервером, — це зовнішній шлях, а не сміття.

2. Запишіть чотири поля, які називають запис

Сам префікс — не ідентичність, бо два інтерфейси можуть мати маршрути до одного призначення. Запишіть префікс призначення, індекс інтерфейсу, наступний стрибок і сховище політик, оскільки ці чотири значення описують рівно один запис. Один список дає їх усі:

Get-NetRoute -AddressFamily IPv4 | Sort-Object RouteMetric

Сортування за метрикою піднімає маршрути, яким машина справді віддає перевагу, і зазвичай саме там сидить залишок. Порівняйте запис, поки тунель піднятий, і знову після його падіння: маршрут, що зникає разом з адаптером, належав клієнтові, а той, що лишається, записало щось інше. Сховище політик — поле, яке люди пропускають, і саме воно пояснює повторну появу, бо запис, видалений з активного сховища, повертається після наступного оновлення політик. Запишіть чотири значення, перш ніж запускати щось, що змінює стан.

3. Перегляньте видалення, потім видаліть один запис

Remove-NetRoute приймає той самий префікс та індекс інтерфейсу, що їх надрукував Get-NetRoute, і має перемикач попереднього перегляду, тож нічого не треба вгадувати. Запустіть пару в такому порядку:

Remove-NetRoute -DestinationPrefix 10.20.0.0/16 -InterfaceIndex 42 -WhatIf
Remove-NetRoute -DestinationPrefix 10.20.0.0/16 -InterfaceIndex 42

Попередній перегляд друкує об'єкт, який було б видалено, тому перед тим як відпустити перемикач, порівняйте префікс, інтерфейс і наступний стрибок зі своїми нотатками. Жоден рядок не сягає постійного запису, бо активне сховище типове; додайте -PolicyStore PersistentStore, коли знайдений маршрут живе там, інакше видалення виглядатиме успішним, а запис повернеться під час наступного оновлення політик. Тримайте позасмуговий шлях відновлення, коли сеанс віддалений, оскільки видалення маршруту, що несе ваше власне з'єднання, обриває його. Ніколи не тягніться до команди, яка очищує таблицю.

4. Знайдіть компонент, який повертає її

Видалення не є виправленням, доки власник усе ще налаштований встановлювати маршрут. Власник зазвичай один із трьох: профіль VPN-клієнта зі списком розділеного тунелю, скрипт або заплановане завдання, що додає маршрути під час входу, або доменна політика, застосована до машини. Спершу перевірте профіль, бо він виконується під час кожного з'єднання:

Get-VpnConnection | Select-Object Name,SplitTunneling,ServerAddress
Get-NetRoute -PolicyStore PersistentStore

Постійні записи видно без підключення чогось, тож маршрут, який повертається після перезавантаження без сеансу VPN, майже завжди живе в тому сховищі або в стартовому скрипті. Виправте там власника, і ручне видалення стане перевіркою замість лікування.

5. Перевірте пошук, сусідів і нотатку

Чистий результат — це не «маршрут зник», а пошук, який тепер вибирає очікуваний інтерфейс. Запитайте машину, куди піде пакет до ураженого префікса, бо залишок досі називає мертвий індекс, а чиста відповідь називає інтерфейс на зв'язку або правильний шлюз. Find-NetRoute відповідає на це для однієї адреси за раз:

Find-NetRoute -RemoteIPAddress 10.20.4.7

Потім перевірте сусіда: виберіть другий префікс, який ще потрібен розділеному тунелю, і підтвердьте, що його пошук не змінився, оскільки прибрати один маршрут зайвим — помилка, до якої запрошує це очищення. Повторіть спробу застосунку, що спочатку впав, і запишіть, який компонент тепер володіє префіксом. Документація Microsoft з Get-NetRoute перелічує поля, які ви записали на другому кроці. Через пів року саме ця нотатка не дасть діагностувати той самий запис двічі.

Схожі статті