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

Підключений префікс конкретніший за маршрут за замовчуванням

Тунель зазвичай встановлює маршрут за замовчуванням або набір префіксів, тоді як локальний інтерфейс несе підключений префікс і маршрут до всієї локальної мережі. Між ними вирішує збіг найдовшого префікса, тому призначення всередині префікса локальної мережі ніколи не потрапляє в тунель. Тому принтер, сторінка адміністрування маршрутизатора й локальний NAS залишаються доступними, поки VPN увімкнено. Тому ж віддалений ресурс усередині перекритого діапазону йде на неправильну машину.

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

Прочитайте вибір, який зробило б ядро

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

ip route get 10.20.30.41
ip route show table all | grep -E '10\.|default'
ip rule show

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

Локальний доступ — окремий дозвіл

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

Два рівні відмовляють по-різному. Заблокований локальний шлях дає тайм-аут, хоча маршрут існує, а перекритий маршрут дає відповідь від неправильного хоста. Розрізнити їх коштує одного запиту й економить півдня змін брандмауера, а схема пересилання описана в нотатки strongSwan про пересилання.

Усуньте перекриття без нагромадження хост-маршрутів

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

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

Схожі статті