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
Држете ја вистинската тајна надвор од историјата на shell и споделените скрипти. Читајте ја при извршување од одобреното складиште и предавајте ја променливата наместо буквалната вредност, што целосно го избегнува проблемот со наводниците.
Променете ја адресата, потоа поврзете се повторно
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 клиентот во Event Viewer пред повторно да го менувате профилот, бидејќи дневникот ја именува фазата што не успеала.
Зачувајте го дизајнот на автентикацијата недопрен додека уредувате. Наредба што ја менува адресата, но го испушта сертификатот или EAP конфигурацијата, создава неуспех што изгледа неповрзан со измената, а извозот на работниот профил однапред ви дава нешто за враќање наместо претпоставка.