Add-VpnConnection: zašto se PSK kvari i zašto adresa ostaje stara
PowerShell raširi unaprijed dijeljeni ključ u navodnicima prije nego što ga cmdlet spremi, a aktivni tunel zadržava staru adresu dok se ponovno ne povežete.
Windows VPN profil zapis je u telefonskom imeniku, a PowerShell je jedan od načina da uredite taj zapis. Iz te razlike proizlaze dva kvara: unaprijed dijeljeni ključ koji na poslužitelj stiže već oštećen i adresa poslužitelja koja izgleda ažurirano, ali nije ona koju će sljedeći tunel birati. Oboje je lakše uočiti ako profil tretirate kao spremljeno stanje, a ne kao naredbu koju ste izvršili. Pregled slijedi redoslijed kojim se izmjene događaju: stvaranje, izmjena, obuhvat, ponovno čitanje.
Napravite profil s doslovnim ključem
Add-VpnConnection prihvaća unaprijed dijeljeni L2TP ključ kroz -L2tpPsk. PowerShell obrađuje niz prije nego što ga cmdlet primi, a unutar dvostrukih navodnika znak dolara počinje referencu na varijablu dok backtick počinje escape. Ključ koji sadrži bilo što od toga stiže kraći ili s drugim znakom, a profil se uspješno stvara s pogrešnom tajnom.
Zatim se kvar pojavljuje pri IPsec autentifikaciji, gdje se tunel odbija podići. Zato se pogreška u navodnicima tako često prijavljuje kao problem na strani poslužitelja: profil postoji, ime je ispravno, a tajna je tiho pogrešna.
| 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 |
Jednostruki navodnici su rješenje i moraju obuhvatiti cijelu vrijednost. Ako zapis već postoji s lošim ključem, -Force ga zamjenjuje, ili uklonite i ponovno napravite profil pa testirajte novom vezom:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Držite pravu tajnu izvan povijesti ljuske i dijeljenih skripti. Čitajte je u vrijeme izvršavanja iz odobrenog spremišta i prosljeđujte varijablu umjesto doslovne vrijednosti, što posve izbjegava problem s navodnicima.
Promijenite adresu pa se ponovno povežite
Set-VpnConnection prima parametre odvojene razmakom, a ne sintaksu dodjele. Pisanje -ServerAddress = "203.0.113.10" prosljeđuje dodatni token, pa cmdlet ili javlja pogrešku ili sprema nešto što niste namjeravali. Ispravan oblik je -Name "Office L2TP" -ServerAddress 203.0.113.10.
Čak i s ispravnom sintaksom promjena ne stiže do tunela koji je već podignut. Uspostavljena veza zadržava adresu koju je birala dok se ne prekine, pa testiranje iste sesije ništa ne dokazuje o novoj vrijednosti. Prekinite vezu, uredite, ponovno se povežite i potvrdite adresu druge strane u pojedinostima veze.
Neka se svojstva ne mogu mijenjati na mjestu. Kad cmdlet odbije, zabilježite postojeće parametre, izbrišite profil i ponovno ga napravite s ispravljenim vrijednostima, i zadržite izvorne postavke tunela i autentifikacije. Skripta koja treba promijeniti samo telefonski broj može urediti zapis u telefonskom imeniku kroz RAS API umjesto da sve stvara iznova. Kojim god putem krenuli, nakon toga potvrdite spremljene vrijednosti umjesto da vjerujete tišini naredbe.
Znajte koji ste imenik uredili
Profil po korisniku živi u direktoriju mrežnih veza tog korisnika, a profil za sve korisnike u direktoriju na razini računala pod stablom programskih podataka. To su različiti zapisi s različitim obuhvatom, a uređivanje jednoga ostavlja drugi netaknutim.
Zato promjena može izgledati kao da je nestala: skripta je radila pod jednim računom, a test pod drugim. Rabite -AllUserConnection kada profil pripada računalu, i provjerite isti obuhvat kada ga čitate ponovno.
Pročitajte profil ponovno prije testiranja
Pitajte Windows što je spremio, a ne što ste proslijedili:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Usporedite taj izlaz s namjerom, pa pokrenite novu vezu. Ako biranje ne uspije, provjerite zapisnik RAS klijenta u pregledniku događaja prije nego što ponovno promijenite profil, jer zapisnik imenuje fazu koja je pala.
Sačuvajte nacrt autentifikacije netaknutim tijekom uređivanja. Naredba koja promijeni adresu ali ispusti certifikat ili EAP konfiguraciju stvara kvar koji izgleda nepovezano s izmjenom, a izvoz radnog profila unaprijed daje vam nešto za vraćanje umjesto nagađanja.