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

Селектор — це адресат, ніколи не процес

Кожне рішення про маршрутизацію починається з адреси призначення і закінчується інтерфейсом. Ядро ніколи не питає, яка програма надіслала пакет, і в macOS pf теж не маршрутизує за процесом, тому правило брандмауера не може скерувати одну програму іншим шляхом. Тому той самий сервер, незалежно від того, чи до нього звертається браузер чи інструмент звітності, використовує один шлях для обох. Відокремлення на рівні програм тому має походити з чогось іншого, ніж маршрут: плагіна VPN, який володіє сокетом, проксі, який перебирає з’єднання від імені програми, або окремого мережевого стеку. Ніщо з цього не є зміною маршрутизації.

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

Що звичайний split tunnel справді дає

Split tunnel встановлює маршрути для приватних префіксів і залишає все інше на фізичному шляху. Зазвичай це й має на увазі запит: дістатися до офісного сервера через тунель, а публічний перегляд залишити прямим. Це просто, кожен звичайний клієнт це підтримує, і це забезпечується тим самим механізмом, що й будь-який інший маршрут. Перевірте конкретний адресат за допомогою route -n get, а не читайте маршрут за замовчуванням, бо split tunnel часто залишає маршрут за замовчуванням недоторканим.

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

Що вимагає VPN для окремих програм у macOS

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

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

Три шляхи до розділення за програмами без MDM

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

Локальний проксі завершує з’єднання і створює його заново через тунель, тож програмі ніколи не потрібен маршрут. Другий варіант — окремий мережевий стек: віртуальна машина або контейнер із власним маршрутом за замовчуванням, до якого програма дістається через локальну адресу. Третій — прийняти маршрутизацію за адресатом і відмовитися від вимоги, що чесно, коли обидві програми можуть використовувати тунель. Усі три можна перевірити, і жоден із них не вдає, що маршрут знає процеси.

Опишіть запит так, щоб відповідь була однозначною

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

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

Схожі статті