Add-VpnConnection: чому PSK ламається і чому адреса лишається старою
PowerShell розгортає наперед спільний ключ у подвійних лапках до того, як командлет його збереже, а працюючий тунель тримає стару адресу, доки ви не перепідключитеся.
Профіль VPN у Windows — це запис у телефонній книзі, а PowerShell — один зі способів редагувати цей запис. Із цієї відмінності випливають дві невдачі: наперед спільний ключ, який надходить на сервер уже пошкодженим, і адреса сервера, що виглядає оновленою, але не є тією, куди зателефонує наступний тунель. І те, і те легше побачити, якщо розглядати профіль як збережений стан, а не як виконану команду. Огляд іде в порядку змін: створення, зміна, область, зворотне читання.
Створіть профіль з буквальним ключем
Add-VpnConnection приймає наперед спільний ключ L2TP через -L2tpPsk. PowerShell обробляє рядок до того, як командлет його отримає, а всередині подвійних лапок знак долара починає посилання на змінну, тоді як backtick починає escape. Ключ, що містить будь-що з цього, надходить коротшим або з іншим символом, і профіль успішно створюється з неправильним секретом.
Далі збій проявляється під час автентифікації IPsec, де тунель відмовляється підніматися. Тому помилку лапок так часто повідомляють як проблему на боці сервера: профіль існує, ім я правильне, а секрет тихо неправильний.
| How you write it | What PowerShell does | Result |
|---|---|---|
| "p@ss$word!42" | Expands $word as a variable | Stored key is truncated |
| Double-quoted with an escape character | Consumes the next character as an escape | One character disappears |
| 'p@ss$word!42' | Keeps the literal characters | Stored key matches the secret |
Одинарні лапки — це рішення, і вони мають охоплювати все значення. Якщо запис уже існує з поганим ключем, -Force замінює його, або видаліть і створіть профіль заново, а потім перевірте новим підключенням:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Тримайте справжній секрет поза історією оболонки та спільними сценаріями. Читайте його під час виконання зі схваленого сховища і передавайте змінну замість літерала, що повністю уникає проблеми з лапками.
Змініть адресу, потім перепідключіться
Set-VpnConnection приймає параметри, розділені пробілами, а не синтаксис присвоєння. Запис -ServerAddress = "203.0.113.10" передає зайвий токен, і командлет або видає помилку, або зберігає не те, що ви задумали. Правильна форма — -Name "Office L2TP" -ServerAddress 203.0.113.10.
Навіть із правильним синтаксисом зміна не доходить до вже піднятого тунелю. Встановлене з єднання тримає адресу, на яку телефонувало, доки його не від єднають, тому перевірка тієї самої сесії нічого не доводить про нове значення. Від єднайтеся, відредагуйте, підключіться знову і підтвердьте адресу партнера в подробицях підключення.
Деякі властивості не можна змінити на місці. Коли командлет відмовляє, запишіть наявні параметри, видаліть профіль і створіть його заново з виправленими значеннями, і збережіть початкові налаштування тунелю та автентифікації. Сценарію, якому треба змінити лише номер телефону, можна відредагувати запис у телефонній книзі через API RAS замість того, щоб створювати все заново. Який би шлях ви не обрали, після цього підтвердьте збережені значення, а не покладайтеся на мовчання команди.
Знайте, яку телефонну книгу ви редагували
Профіль окремого користувача живе в каталозі мережевих підключень цього користувача, а профіль усіх користувачів — у загальномашинному каталозі під деревом даних програм. Це різні записи з різною областю, і правка одного залишає інший недоторканим.
Тому зміна може виглядати як зникла: сценарій виконувався під одним обліковим записом, а перевірка під іншим. Використовуйте -AllUserConnection, коли профіль належить машині, і перевіряйте ту саму область, коли читаєте його назад.
Прочитайте профіль назад перед перевіркою
Запитайте Windows, що він зберіг, а не що ви передали:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Порівняйте цей вивід із задумом, потім почніть нове підключення. Якщо набір номера не вдався, перед черговою зміною профілю подивіться журнал клієнта RAS у засобі перегляду подій, бо журнал називає етап, який не вдався.
Зберігайте схему автентифікації незмінною під час правки. Команда, яка змінює адресу, але втрачає сертифікат або конфігурацію EAP, дає збій, що виглядає не пов язаним із правкою, а експорт робочого профілю заздалегідь дає те, що можна відновити, замість здогадки.