Створення IKEv2 VPN у PowerShell із сертифікатом комп'ютера
Розміщення сертифіката, префікси маршрутів і дані EAP — це місця, де сценарій IKEv2 зазнає невдачі. Побудуйте тунель у PowerShell і перевіряйте кожен етап окремо.
Windows постачається з клієнтом IKEv2, яким PowerShell керує від початку до кінця, тож робочому тунелю не потрібні ні графічний інтерфейс, ні стороннє програмне забезпечення. Майже кожна невдача походить із трьох місць: куди потрапив сертифікат, як записано префікси маршрутів і чого очікує вибраний метод EAP. Розбирайтеся з ними в цьому порядку, бо кожен можна перевірити до початку наступного, а пізніша помилка замаскує ранішу.
Тунелі з сертифікатом комп'ютера існують, щоб запускатися до входу будь-якого користувача, тому ідентичність зазвичай має жити в сховищі комп'ютера, а не користувача.
Спочатку сертифікат, потім тунель
Важливі два імпорти. Ідентичність клієнта потрапляє в Cert:\LocalMachine\My через Import-PfxCertificate, а видавець ЦС потрапляє в Cert:\LocalMachine\Root через Import-Certificate. Сам кінцевий сертифікат не доводить жодного ланцюжка, тому пропуск другого імпорту залишає перевірку без підстави. Окрім наявності, закритий ключ має бути приєднаний, а обліковому запису комп'ютера має бути дозволено його читати. Get-ChildItem Cert:\LocalMachine\My перелічує те, що прибуло; порівнюйте відбитки, а не суб'єкти, бо майже однакові суб'єкти трапляються часто.
Перевірте розширене використання ключа перед розгортанням. Автентифікація клієнта — звичайна вимога для ідентичності комп'ютера IKEv2, і інша сторона має довіряти ЦС, який її підписав. Ідентичність у сховищі користувача не існує для з'єднання в контексті комп'ютера.
Створіть профіль і його маршрути
Add-VpnConnection -Name "Office IKEv2" -ServerAddress vpn.example.com -TunnelType Ikev2 -EncryptionLevel Required -AuthenticationMethod MachineCertificate -AllUserConnection записує профіль. Параметр -AllUserConnection публікує його в глобальній телефонній книзі, що підходить для спільної машини або машини під керуванням служби; для одного користувача його опустіть. Будь-яка адреса, яку ви передасте, має збігатися з DNS-ім'ям у сертифікаті сервера, інакше помилка з'явиться вже після підняття тунелю. Далі префікси додаються по одному за допомогою Add-VpnConnectionRoute, і лише ті, які справді потрібні проєкту.
У IPv6 є особливість: Windows відмовляється від ::/0 як маршруту VPN, тому ::/1 і 8000::/1 разом покривають той самий адресний простір. Маршрутизація префікса також нічого не дає на віддаленому міжмережевому екрані, тож список префіксів і політика міжмережевого екрана залишаються окремими документами.
Дані входу належать методу автентифікації
Профілю із сертифікатом комп'ютера взагалі не потрібна користувацька таємниця, а профілю EAP-MSCHAPv2 потрібна. У другому випадку модуль VPNCredentialsHelper надає Set-VpnConnectionUsernamePassword, і він хоче звичайний текст: $cred.Password — це SecureString, тож спершу розпакуйте його за допомогою GetNetworkCredential().Password. Встановлюйте модуль усюди, де виконується команда, а не лише на робочій станції, де її написали. EAP-TLS або власний метод узагалі не використовують цей командлет; натомість вони приймають XML конфігурації EAP.
rasdial "Office IKEv2" піднімає з'єднання з оболонки, і це найшвидший спосіб побачити результат на передньому плані, а не в журналі подій.
Чого не доводить підключений тунель
Стан «підключено» охоплює обмін IKE і крок автентифікації й нічого понад це. Поведінка DNS, шлях до приватного вузла й віддалений міжмережевий екран досі не доведені. Рухайтеся назовні: адаптер тунелю, потім пошук маршруту для приватної адреси, потім одна служба, на яку ви маєте право. Перше спостереження, яке не проходить, указує на шар для дослідження.
Змінюючи профіль, видаліть попередній за допомогою Remove-VpnConnection -Name "Office IKEv2" -Force, перш ніж створювати його знову; інакше застарілі налаштування й маршрути збережуться після редагування. Якщо він усе одно не підключається, порівняйте відбиток, записаний у профілі, з тим, що є в сховищі, бо Windows може тримати посилання на ідентичність, яку тим часом замінили під незмінним суб'єктом.
Тримайте відбиток, метод EAP і список маршрутів поруч із профілем. Разом вони пояснюють більшість того, що пізніше йде не так.