Add-VpnConnection: зашто се PSK квари и зашто адреса остаје стара
PowerShell развија унапред дељени кључ у наводницима пре него што га cmdlet сачува, а активан тунел задржава стару адресу док се поново не повежете.
Windows VPN профил је запис у телефонском именику, а PowerShell је један од начина да уредите тај запис. Из те разлике произилазе два квара: унапред дељени кључ који на сервер стиже већ оштећен и адреса сервера која изгледа ажурирано, али није она коју ће следећи тунел бирати. Обоје је лакше уочити ако профил третирате као сачувано стање, а не као наредбу коју сте извршили. Преглед прати редослед којим се измене дешавају: креирање, измена, обухват, поновно читање.
Направите профил са дословним кључем
Add-VpnConnection прихвата унапред дељени L2TP кључ кроз -L2tpPsk. PowerShell обрађује низ пре него што га cmdlet прими, а унутар двоструких наводника знак долара почиње референцу на променљиву док 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" прослеђује додатни токен, па cmdlet или пријави грешку или сачува нешто што нисте намеравали. Исправан облик је -Name "Office L2TP" -ServerAddress 203.0.113.10.
Чак и са исправном синтаксом промена не стиже до тунела који је већ подигнут. Успостављена веза задржава адресу коју је бирала док се не прекине, па тестирање исте сесије ништа не доказује о новој вредности. Прекините везу, уредите, поново се повежите и потврдите адресу друге стране у детаљима везе.
Нека својства се не могу мењати на месту. Када cmdlet одбије, забележите постојеће параметре, обришите профил и поново га направите са исправљеним вредностима, и задржите изворне поставке тунела и аутентификације. Скрипта која треба да промени само телефонски број може уредити запис у телефонском именику кроз RAS API уместо да све прави изнова. Који год пут одаберете, потврдите сачуване вредности након тога уместо да верујете тишини наредбе.
Знајте који сте именик уредили
Профил по кориснику живи у директоријуму мрежних веза тог корисника, а профил за све кориснике у директоријуму на нивоу рачунара под стаблом програмских података. То су различити записи са различитим обухватом, а уређивање једног оставља други нетакнутим.
Зато промена може изгледати као да је нестала: скрипта је радила под једним рачуном, а тест под другим. Користите -AllUserConnection када профил припада рачунару, и проверите исти обухват када га читате поново.
Прочитајте профил поново пре тестирања
Питајте Windows шта је сачувао, а не шта сте проследили:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Упоредите тај излаз са намером, па покрените нову везу. Ако бирање не успе, проверите записник RAS клијента у прегледачу догађаја пре него што поново промените профил, јер записник именује фазу која је пала.
Сачувајте нацрт аутентификације нетакнутим током уређивања. Наредба која промени адресу али испусти сертификат или EAP конфигурацију ствара квар који изгледа неповезано са изменом, а извоз радног профила унапред вам даје нешто за враћање уместо нагађања.