Лише включення чи лише виключення в розділеному тунелі: що взяти за замовчування?
Виберіть типовий варіант до того, як будувати список: пускати в тунель лише назване чи пускати все й вирізати винятки. Потім перевірте застосунок, якого ні в кого немає в списку.
Відкрийте розділ маршрутизації у клієнті VPN, і ви побачите два по-різному влаштовані елементи керування, які часто носять той самий напис. Один просить перелічити адресати, що мають потрапити в тунель, а все інше й далі йде через локальну мережу. Другий виходить із того, що в тунель іде все, і питає, що треба вирізати назад. Обидва на першій перевірці дають робочий тунель, і обидва підтримуються додаванням рядків до списку, тому різниця лишається непомітною, доки хтось не встановить щось нове.
Це вибір типового значення, а не функція. Вирішіть це, поки в списку немає двадцяти записів.
Читайте типове значення в клієнті, а не в брошурі
У WireGuard це рішення незвично наочне, бо AllowedIPs — це список включення і більше нічого. Пір із 0.0.0.0/0, ::/0 тунелює все, а пір із 10.20.0.0/16 — лише цю мережу. Синтаксису виключень немає, тож якщо треба залишити одну підмережу ззовні, доведеться або перелічити всі інші префікси, або додати політичну маршрутизацію поза інтерфейсом.
OpenVPN приходить до того самого з протилежного боку: redirect-gateway def1 ставить повний тунель, а окремі директиви route додають або переписують конкретні префікси. Комерційні клієнти зазвичай ховають і те, і те за прапорцем і таблицею адресатів, тож перш ніж довіряти напису, прочитайте, що саме править таблиця.
Питати треба не про те, як називається прапорець. Питати треба про те, що відбувається з пакетом, адресата якого немає в жодному списку. Дайте на це письмову відповідь, і решта конфігурації випливе з неї. Пропустіть це питання, і перший незрозумілий збій вирішуватиме той, хто того дня найближче до клієнта.
Простежте за застосунком, якого ні в кого немає в списку
У схемі лише з включенням цей застосунок виходить напряму, через локальну мережу й локальний DNS. У схемі лише з виключенням він іде через тунель, наскільки дозволяє сервер, і саме тут часто лежить різниця між тим, чи запрацює новий інструмент SaaS першого ж дня, і заявкою про те, що VPN його зламав.
Жодне типове значення саме по собі не безпечніше. Лише включення звужує те, що несе тунель, і робить локальну мережу шляхом найменшого опору, а лише виключення вважає тунель звичайним шляхом і ставиться до винятків як до винятків, що ближче до того, що більшість корпоративних політик насправді має на увазі.
| Question | Include-only | Exclude-only |
|---|---|---|
| Unlisted new app | goes direct | goes through the tunnel |
| A site that breaks over the VPN | add it to the list | carve it out |
| Internal names still resolve | only if routed and served | usually, until split DNS says otherwise |
| Upkeep | one entry per internal service | one entry per misbehaving public service |
Зверніть увагу, об'єкти якого роду перелічує платформа
VpnService.Builder в Android показує список дозволених застосунків і список заборонених застосунків як дві окремі моделі, а правила за застосунком вибирають за пакетом, а не за адресатом. Браузер, уміщений у такий список, тягне за собою кожен адресат, який відкриває, і це інша гранулярність, ніж таблиця маршрутів, тож він не може полагодити один зламаний сайт усередині робочого застосунку.
Настільні клієнти зазвичай змішують обидва види в одному інтерфейсі, тож перевірте, чи рядок, який ви додаєте, є пакетом, іменем хоста або префіксом. Вони відмовляють по-різному й вирішуються в різних місцях. Рядок з іменем хоста зазвичай стає маршрутом плюс ім'ям, а рядок із пакетом — рішенням політики всередині клієнта. Запишіть, що саме ви додали, бо той, хто згодом це налагоджуватиме, припустить інше.
Перевіряйте стан відмови, а не лише вдалий шлях
Застосунок, виключений із тунелю, не отримує автоматично чистого прямого доступу. Якщо клієнт ще й застосовує правило блокування без VPN, виключений трафік може бути відкинутий цілком, і це виглядає як зламаний застосунок, а не як рішення маршрутизації. Перевірте цей випадок навмисно, а не дізнавайтеся про нього зі звернення користувача.
Далі перевірте DNS і IPv6 як окремі пункти. Тунель, що несе лише IPv4, залишає застосунку з підтримкою v6 обхідний шлях, а split DNS вирішує, чи розв'язуються внутрішні імена для трафіку, який узагалі не йде через тунель. Запустіть застосунок зі списку, застосунок не зі списку, пошук імені й одне перепідключення, і зберігайте результати разом із конфігурацією.
Запишіть типове значення там, де його знайде наступний
Запишіть вибране типове значення, винятки та їхнього власника там само, де лежить профіль клієнта, бо наступний адміністратор додасть запис, не читаючи цих міркувань. Позначайте дату й причину кожного винятку, щоб застаріле виключення для сайту, який відтоді полагодили, можна було впевнено зняти. Список без причин росте безкінечно.
Коли хтось повідомляє про один зламаний адресат, змінюйте виняток, а не основу. Перевертання типового значення заради одного сайту мовчки переносить усі застосунки не зі списку на інший бік тунелю.