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

Почніть з контракту доступу, а не з файлу клієнта

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

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

Виберіть один протокол і одну пару автентифікації, які ви зможете захистити

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

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

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

Зберіть по одному артефакту на платформу з контракту

Windows використовує профіль VPNv2, що доставляється через MDM або створюється локально за допомогою Add-VpnConnection та його XML-навантаження. Зачіпають дві речі: область дії та довіра. Профіль з областю пристрою і профіль з областю користувача встановлюються в різні сховища, тому сертифікат, потрібний клієнту, має лежати в сховищі, що відповідає вибраній області. Помилка в цій парі дає профіль, який імпортується без помилок і потім падає під час першого підключення.

macOS використовує профіль конфігурації з керованим навантаженням VPN, підписаний і поширюваний через MDM або встановлений вручну для пілоту. Ідентичність і ланцюжок CA передаються окремими навантаженнями — саме тому профіль може встановитися без скарг і все одно впасти в момент підключення. Перевіряйте список навантажень, а не лише результат встановлення.

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

Три артефакти різняться форматом, але кожен кодує ті самі п'ять рядків контракту. Ось перевірка готовності артефакту: кожен рядок десь представлений, і нічого зайвого дорогою не вигадано.

PlatformArtifactCheck before handoff
WindowsVPNv2 profile or Add-VpnConnectionScope matches certificate store
macOSManaged VPN payload plus certificate payloadBoth payloads present in one profile
LinuxNetworkManager connection with strongSwan backendPlugin package installed on the image

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

Підключено — це не приймальний тест. У Windows Get-VpnConnection показує профіль, а route print показує, чи потрапив приватний префікс на інтерфейс тунелю. У macOS scutil --nc list підтверджує активну службу, а scutil --dns показує порядок резолверів, який система реально використовуватиме.

У Linux nmcli connection show --active доводить, що з'єднання встановлено, а resolvectl status показує DNS по кожному інтерфейсу. Резолвер, наявний у файлі з'єднання, але відсутній у виводі по інтерфейсу, означає, що розділений DNS не застосовується. Це різниця між іменами, які розв'язуються, та іменами, які розв'язуються через тунель, і вона змінює те, яка команда підтримки бере наступний крок. Порівнюйте вивід по інтерфейсу до і після підняття з'єднання, а не лише після.

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

Версіонуйте пакунок і тримайте шлях відкату

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

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

Схожі статті