Add-VpnConnection: miksi PSK rikkoutuu ja miksi osoite jää paikalleen
PowerShell laajentaa lainausmerkeissä olevan jaetun avaimen ennen kuin cmdlet tallentaa sen, ja käynnissä oleva tunneli pitää vanhan osoitteen, kunnes yhdistät uudelleen.
Windowsin VPN-profiili on puhelinluettelon merkintä, ja PowerShell on yksi tapa muokata sitä merkintää. Tästä erosta seuraa kaksi epäonnistumista: jaettu avain, joka saapuu palvelimelle jo vahingoittuneena, ja palvelimen osoite, joka näyttää päivitetyltä mutta ei ole se, johon seuraava tunneli soittaa. Molemmat on helpompi nähdä, kun kohtelet profiilia tallennettuna tilana etkä komentona, jonka suoritit. Käsittely etenee siinä järjestyksessä kuin muutokset tapahtuvat: luo, muuta, laajuus, lue takaisin.
Rakenna profiili kirjaimellisella avaimella
Add-VpnConnection ottaa L2TP-jaetun avaimen vastaan -L2tpPsk-parametrin kautta. PowerShell käsittelee merkkijonon ennen kuin cmdlet saa sen, ja lainausmerkkien sisällä dollarimerkki aloittaa muuttujaviittauksen ja backtick aloittaa escape-jakson. Avain, joka sisältää kumman tahansa, saapuu lyhyempänä tai eri merkillä, ja profiili luodaan onnistuneesti väärällä salaisuudella.
Sitten epäonnistuminen näkyy IPsec-todennuksessa, jossa tunneli kieltäytyy nousemasta. Siksi lainausmerkkivirheestä raportoidaan niin usein palvelinpuolen ongelmana: profiili on olemassa, nimi on oikein ja salaisuus on hiljaa väärä.
| 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 |
Yksinkertaiset lainausmerkit ovat ratkaisu, ja niiden on ympäröitävä koko arvo. Jos merkintä on jo olemassa huonolla avaimella, -Force korvaa sen, tai poista ja luo profiili uudelleen ja testaa sitten uudella yhteydellä:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Pidä todellinen salaisuus poissa komentotulkin historiasta ja jaetuista skripteistä. Lue se ajon aikana hyväksytystä säilöstä ja välitä muuttuja kirjaimellisen arvon sijaan, mikä välttää lainausmerkkiongelman kokonaan.
Muuta osoitetta ja yhdistä sitten uudelleen
Set-VpnConnection ottaa välilyönnillä erotettuja parametreja, ei sijoitusyntaksia. -ServerAddress = "203.0.113.10" kirjoittaminen välittää ylimääräisen tokenin, ja cmdlet joko antaa virheen tai tallentaa jotain, mitä et tarkoittanut. Oikea muoto on -Name "Office L2TP" -ServerAddress 203.0.113.10.
Oikeallakin syntaksilla muutos ei saavuta tunnelia, joka on jo ylhäällä. Muodostettu yhteys pitää sen osoitteen, johon se soitti, kunnes se katkeaa, joten saman istunnon testaaminen ei todista mitään uudesta arvosta. Katkaise, muokkaa, yhdistä uudelleen ja vahvista vastapuolen osoite yhteyden tiedoista.
Joitakin ominaisuuksia ei voi muuttaa paikallaan. Kun cmdlet kieltäytyy, kirjoita olemassa olevat parametrit muistiin, poista profiili ja luo se uudelleen korjatuilla arvoilla, ja säilytä alkuperäiset tunnelin ja todennuksen asetukset. Skripti, jonka tarvitsee muuttaa vain puhelinnumero, voi muokata puhelinluettelon merkintää RAS API:n kautta sen sijaan, että rakentaisi kaiken uudelleen. Valitsitpa minkä tahansa reitin, vahvista tallennetut arvot jälkeenpäin sen sijaan, että luottaisit komennon hiljaisuuteen.
Tiedä, mitä puhelinluetteloa muokkasit
Käyttäjäkohtainen profiili sijaitsee kyseisen käyttäjän verkkoyhteyksien hakemistossa ja kaikkien käyttäjien profiili koneenlaajuisessa hakemistossa ohjelmatietojen puun alla. Ne ovat eri merkintöjä eri laajuuksilla, ja toisen muokkaaminen jättää toisen koskemattomaksi.
Siksi muutos voi näyttää katoavan: skripti ajettiin yhdellä tilillä ja testi toisella. Käytä -AllUserConnection, kun profiili kuuluu koneelle, ja tarkista sama laajuus, kun luet sen takaisin.
Lue profiili takaisin ennen testaamista
Kysy Windowsilta, mitä se tallensi, älä mitä välitit:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Vertaa tulostetta aikomukseesi ja aloita sitten uusi yhteys. Jos valinta epäonnistuu, tarkista RAS-asiakkaan loki Tapahtumien katselusta ennen kuin muutat profiilia uudelleen, sillä loki nimeää vaiheen, joka epäonnistui.
Pidä todennuksen rakenne ehjänä muokatessasi. Komento, joka muuttaa osoitteen mutta pudottaa varmenteen tai EAP-määrityksen, tuottaa epäonnistumisen, joka näyttää liittymättömältä muokkaukseen, ja toimivan profiilin vienti etukäteen antaa sinulle jotain palautettavaa arvauksen sijaan.