У рідному профілі IKEv2 цікавий ключ — не прапорець, а IncludeAllNetworks, і він змінює обсяг того, що системі дозволено надсилати поза тунелем. Встановіть його в 1, і macOS вважатиме тунель шляхом для практично всього IP-трафіку, крім набору винятків, які вона визначає і які ви можете розширити. Оскільки він живе в словнику профілю, а не в меню, він також не означає того, що більшість людей припускає, читаючи фразу надіслати весь трафік.

Що ключ змінює всередині мережевого стеку

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

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

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

Винятки є частиною налаштування

Apple документує кілька винятків поруч з основним ключем: локальні мережі, трафік Apple Push Notification, стільникові служби та зв'язок з пристроєм. Кожен має власні умови щодо платформи й версії, тому той самий профіль може поводитися по-різному в різних випусках macOS.

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

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

Чому це не те саме, що маршрут за замовчуванням

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

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

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

EnforceRoutes — це інша ручка

EnforceRoutes звучить як сувора версія тієї самої ідеї, і люди складають обидва ключі, вірячи, що більше ключів означає більше охоплення. Apple документує, що його ігнорують, коли увімкнено IncludeAllNetworks, тож другий ключ у цій комбінації нічого не дає.

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

Про що мають домовитися шлюз і власник профілю

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

Тунель, яким володіє застосунок, — знову окремий випадок. Постачальник має реалізувати або надати підтримувану поведінку; встановлення другого рідного профілю IKEv2 не змінює тунель, яким уже керує інший застосунок, а ключ IKEv2 — не директива OpenVPN, яку прочитає якийсь інший клієнт.

Щодо поточного списку ключів і умов версій читайте довідник із корисного навантаження IKEv2 від Apple, а не профіль, який хтось скопіював роки тому.

Сприймайте ревізію профілю як ціле

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

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

Схожі статті