Add-VpnConnection: prečo sa PSK poškodí a adresa zostane stará
PowerShell rozvinie predbežne zdieľaný kľúč v úvodzovkách skôr, než ho cmdlet uloží, a bežiaci tunel drží starú adresu, kým sa znova nepripojíte.
Profil VPN v Windows je záznam v telefónnom zozname a PowerShell je jeden zo spôsobov, ako tento záznam upraviť. Z tohto rozlíšenia vyplývajú dve zlyhania: predbežne zdieľaný kľúč, ktorý na server dorazí už poškodený, a adresa servera, ktorá vyzerá aktualizovaná, ale nie je tou, na ktorú bude volať nasledujúci tunel. Oboje sa ľahšie vidí, keď profil beriete ako uložený stav, nie ako príkaz, ktorý ste spustili. Postup ide v poradí úprav: vytvorenie, zmena, rozsah, spätné čítanie.
Vytvorte profil s doslovným kľúčom
Add-VpnConnection prijíma predbežne zdieľaný kľúč L2TP cez -L2tpPsk. PowerShell spracuje reťazec skôr, než ho cmdlet dostane, a vnútri dvojitých úvodzoviek znak dolára začína odkaz na premennú, zatiaľ čo backtick začína escape. Kľúč, ktorý obsahuje ktorýkoľvek z nich, dorazí kratší alebo s iným znakom, a profil sa úspešne vytvorí s nesprávnym tajomstvom.
Potom sa zlyhanie prejaví pri overovaní IPsec, kde tunel odmietne vstať. Preto sa chyba v úvodzovkách tak často hlási ako problém na strane servera: profil existuje, meno je správne a tajomstvo je ticho nesprávne.
| 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 |
Jednoduché úvodzovky sú riešením a musia obklopiť celú hodnotu. Ak záznam už existuje so zlým kľúčom, -Force ho nahradí, alebo profil odstráňte a vytvorte znova a potom otestujte novým pripojením:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Držte skutočné tajomstvo mimo histórie shellu a zdieľaných skriptov. Čítajte ho za behu zo schváleného úložiska a odovzdávajte premennú namiesto doslovnej hodnoty, čo problém s úvodzovkami úplne obchádza.
Zmeňte adresu a potom sa znova pripojte
Set-VpnConnection preberá parametre oddelené medzerami, nie syntax priradenia. Zápis -ServerAddress = "203.0.113.10" odovzdá ďalší token a cmdlet buď zlyhá, alebo uloží niečo, čo ste nezamýšľali. Správny tvar je -Name "Office L2TP" -ServerAddress 203.0.113.10.
Ani so správnou syntaxou sa zmena nedostane do tunela, ktorý už je hore. Nadviazané pripojenie drží adresu, na ktorú volalo, kým sa nepreruší, takže testovanie tej istej relácie nič o novej hodnote nepreukazuje. Odpojte sa, upravte, pripojte sa znova a potvrďte adresu protistrany v podrobnostiach pripojenia.
Niektoré vlastnosti sa nedajú meniť na mieste. Keď cmdlet odmietne, poznamenajte si existujúce parametre, vymažte profil a vytvorte ho znova s opravenými hodnotami, a zachovajte pôvodné nastavenia tunela a overovania. Skript, ktorý potrebuje zmeniť len telefónne číslo, môže upraviť záznam v telefónnom zozname cez RAS API namiesto vytvárania všetkého odznova. Nech zvolíte akúkoľvek cestu, potom uložené hodnoty potvrďte, namiesto toho aby ste verili mlčaniu príkazu.
Vedzte, ktorý zoznam ste upravili
Profil pre jedného používateľa žije v adresári sieťových pripojení tohto používateľa a profil pre všetkých používateľov v adresári pre celý počítač pod stromom programových údajov. Sú to rôzne záznamy s rôznym rozsahom a úprava jedného nechá druhý nedotknutý.
Preto môže zmena vyzerať, akoby zmizla: skript bežal pod jedným účtom a test pod iným. Použite -AllUserConnection, keď profil patrí počítaču, a pri spätnom čítaní skontrolujte rovnaký rozsah.
Prečítajte profil späť pred testovaním
Pýtajte sa Windows, čo uložil, nie čo ste odovzdali:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Porovnajte tento výstup so zámerom a potom spustite nové pripojenie. Ak vytáčanie zlyhá, pred ďalšou zmenou profilu sa pozrite do protokolu klienta RAS v Zobrazovači udalostí, pretože protokol pomenúva fázu, ktorá zlyhala.
Počas úprav zachovajte návrh overovania nedotknutý. Príkaz, ktorý zmení adresu, ale zahodí certifikát alebo konfiguráciu EAP, vytvorí zlyhanie, ktoré vyzerá nesúvisiace s úpravou, a export funkčného profilu vopred vám dá čo obnoviť namiesto dohadu.