VPN-profil importálása PowerShellben az Add-VpnConnection segítségével
Az Add-VpnConnection csak natív Windows-profilokat hoz létre. Párosítsa az alagutat és a hitelesítést az átjáróhoz, állítsa be szándékosan a hatókört, majd tesztelje az útvonalakat és a DNS-t.
Nincs Import-VpnProfile parancsmag, a leginkább hasonló Add-VpnConnection pedig soha nem olvas .ovpn vagy .conf fájlt. A megadott paraméterekből állít össze natív Windows-profilt, és ezért az első ellenőrzési pont itt a fájlformátum, nem a parancssor. Ha az átjáró SSTP, IKEv2, L2TP/IPsec vagy PPTP protokollt beszél, a Windows birtokolhatja a profilt, és a lista többi része érvényes. Ha OpenVPN- vagy WireGuard-fájlt kapott, álljon meg az első lépésnél: azoknak a klienseknek saját importálójuk van.
1. lépés: Erősítse meg, melyik profilt birtokolhatja valóban a Windows
Futtassa a Get-Command -Module VpnClient parancsot a gépen minden más előtt. A Windows 10, a Windows 11 és a Server 2016 vagy újabb tartalmazza a modult; ha hiányzik, semmilyen másolt szkript nem fogja rávenni ezt a gazdagépet natív profil elfogadására. A fontos parancsmagok az Add-VpnConnection, a Get-VpnConnection és a Remove-VpnConnection, és a Add-VpnConnection-referencia paraméterlistáját érdemes egyszer teljesen elolvasni.
A natív azt jelenti, hogy a Windows VPN-vereme fejezi be az alagutat. Ez lefedi az IKEv2-t, gyakran gépi tanúsítvánnyal; az SSTP-t, amely TLS belül felhasználói vagy tanúsítványos hitelesítéssel; és az L2TP/IPsec-et előre megosztott kulccsal. Az .ovpn fájl OpenVPN-szkript, nem Windows-kapcsolat: olyan direktívákat hordoz, mint a remote, a cipher vagy a tls-auth, amelyekről a Windows vermének fogalma sincs. A WireGuard .conf ugyanez a történet PrivateKey és AllowedIPs mezőkkel; az egyiket a másikba alakítani nem paraméterválasztás, hanem más alagútmegvalósítás.
Van egy harmadik ág is. Ha egy rendszergazda VPNv2 CSP XML-dokumentumot vagy Intune-profilt ad, az az MDM-út, amelyet az ellátási verem alkalmaz, nem az Add-VpnConnection. Ne fordítsa le ezeket a csomópontneveket PowerShell-paraméterekké; kérdezze meg inkább, melyik mechanizmus alkalmazza az XML-t.
2. lépés: Párosítsa az alagút típusát a hitelesítési módszerrel
A -TunnelType és a -AuthenticationMethod külön paraméter, és az átjárót csak a kombináció érdekli. Az egyik helyes, a másik hibás, és olyan profilt kap, amely semmihez nem csatlakozik, vagy beragad, miközben az alagút már áll. Mindkettőt kifejezetten állítsa be, ahelyett hogy egy másik szolgáltatáshoz választott alapértelmezésben bízna.
- IKEv2 MachineCertificate-tel: az ügyfél számítógép-tanúsítványt mutat be; állítsa be az -EncryptionLevel Required értéket is.
- SSTP Eap-pal: először a TLS-alagút, majd PEAP/MSCHAPv2 vagy tanúsítvány az EAP-n belül. Ehhez a 3. lépés XML-je kell.
- SSTP, L2TP vagy PPTP MSChapv2, Chap vagy Pap módszerrel: egyszerű felhasználónév és jelszó, EAP-blob nélkül.
- L2TP MSChapv2-vel és -Lt2pPsk-val: a PSK fedi az IPsec felét, a felhasználó a PPP-t; mindkettőnek egyeznie kell a kiszolgálóval.
A splat egy helyen tartja az értékeket:
$p = @{
Name = "Corp IKEv2"
ServerAddress = "vpn.example.com"
TunnelType = "Ikev2"
AuthenticationMethod = "MachineCertificate"
EncryptionLevel = "Required"
SplitTunneling = $false
DnsSuffix = "corp.example.com"
}
Add-VpnConnection @p -PassThruA -PassThru visszaadja azt az objektumot, amelyet a Windows épp most írt, így második hívás nélkül megvizsgálhatja. Ha a név már létezik, a parancsmag nem hajlandó futni; a -Force felülírja, ami rossz reflex egy éles laptopon, mert csendben eldobja mindazt, amit valaki kézzel beállított.
3. lépés: Adja át helyesen a hitelesítő anyagot
A jelszavak, az előre megosztott kulcsok és az EAP-blobok az a pont, ahol ezek a szkriptek általában eltörnek. Az -EapConfigXmlStream XmlDocumentot kér, nem útvonalat, ezért először olvassa be és alakítsa át a fájlt. Ha karakterláncot ad át, olyan konverziós hiba keletkezik, amely sémahibának látszik, és arra viszi az embereket, hogy olyan XML-t írjanak újra, amely soha nem volt hibás.
$eap = [xml](Get-Content -Raw .\peap-mschapv2.xml)
Add-VpnConnection -Name "Corp SSTP" -ServerAddress "sstp.example.com" `
-TunnelType Sstp -AuthenticationMethod Eap `
-EapConfigXmlStream $eap -EncryptionLevel RequiredAz az XML nem blogrészletből kitalálható dolog. Megnevezi az EAP-módszer típusát és a belső hitelesítést, az átjáró pedig mindkettőt a saját házirendjéhez hasonlítja. A nem illeszkedő belső módszer a TLS-kézfogás befejezése után hiúsul meg, ami pontosan rossz jelszónak látszik, és nem az. Kérje el az XML-t attól, aki az átjárót üzemelteti, vagy exportálja egy már működő profilból.
IKEv2 esetén a tanúsítványos fél tárkeresés. A -MachineCertificateIssuerFilter tanúsítványobjektumot vesz, a Windows ezzel keres használható ügyféltanúsítványt a LocalMachine\My helyen. A tanúsítványnak privát kulcsra és a kiszolgáló által megbízott láncra van szüksége; ha valamelyik hiányzik, a hitelesítés hasznos részletek nélkül hiúsul meg, ezért először ellenőrizze a tárat:
Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.HasPrivateKey -and $_.NotAfter -gt (Get-Date) } |
Select-Object Subject, Issuer, Thumbprint, NotAfterTartsa a titkokat a szkriptfájlon kívül. A parancssorban átadott vagy .ps1 fájlba sütött PSK átírásokba, mentett munkamenetekbe és megosztott tárolókba kerül, a -RememberCredential pedig eltárolja a felhasználói hitelesítő adatokat későbbre, és egy egyszeri tesztet tartós engedéllyé változtat.
4. lépés: Döntse el a hatókört az első futás előtt
Ugyanaz a parancsmag két különböző telefonkönyvbe ír. Az -AllUserConnection nélkül a profil a sajátja, és a %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk alatt él. Vele, emelt parancssorból a profil a %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk helyre kerül, és minden fiók számára látható, a bejelentkezési képernyőt is beleértve.
A hatókör nem kozmetikai kérdés. Az összes felhasználós profil az, amit egy szolgáltatásfiók, egy ütemezett feladat vagy egy bejelentkezés előtti forgatókönyv használhat; a felhasználónkénti profil mindhárom számára láthatatlan. Az objektumokat is másképp olvassák: a Get-VpnConnection az aktuális felhasználó bejegyzéseit listázza, a Get-VpnConnection -AllUserConnection a gép szintűeket. Válasszon egyet most, és a későbbi változtatást törlésként és újralétrehozásként kezelje, ne szerkesztésként:
# elevated prompt
Remove-VpnConnection -Name "Corp IKEv2" -Force
Add-VpnConnection -Name "Corp IKEv2" -ServerAddress "vpn.example.com" `
-TunnelType Ikev2 -AuthenticationMethod MachineCertificate `
-EncryptionLevel Required -AllUserConnection5. lépés: Tesztelje, mit kell valójában szállítania egy alagútnak
A csatlakoztatott ikon csak azt bizonyítja, hogy az alagút felállt, semmi mást. Először parancssorból csatlakozzon, hogy a hibák szövegként érkezzenek, ne párbeszédablakként, majd olvassa vissza, mit rögzített a Windows:
rasdial "Corp IKEv2"
Get-VpnConnection -Name "Corp IKEv2" |
Select-Object Name, ServerAddress, TunnelType, ConnectionStatus, SplitTunneling
Get-NetRoute -DestinationPrefix "0.0.0.0/0"A két hiba, amelyről a felhasználók beszámolnak, miközben az állapot még mindig Connected, a DNS és az útvonalválasztás. Oldjon fel egy belső nevet, és ellenőrizze, melyik kiszolgáló válaszolt; az -DnsSuffix nélküli profil tökéletesen alagutazhat, és mégis minden intranetes keresés elbukik. Utána nézze meg az alapértelmezett útvonalat: kikapcsolt osztott alagutazásnál a legalacsonyabb metrikájú 0.0.0.0/0 útvonalnak a VPN-interfész felé kell mutatnia, bekapcsolva pedig csak a várt előtagoknak. Ha mindkettő helyesnek tűnik, és a forgalom mégis meghal, a probléma a profilon túl van, a házirendben vagy az átjáró szűrőjében.
Amikor a kapcsolat teljesen meghiúsul, a kód szűkíti a visszatérni való lépést:
- 691: az átjáró elutasította a hitelesítő adatokat. Térjen vissza a 3. lépéshez, nem az alagúthoz.
- 809: az IKEv2-kézfogás soha nem fejeződött be. Ellenőrizze az UDP 500 és 4500 portot, valamint a tanúsítvány megbízhatóságát.
- 789: az L2TP/IPsec előre megosztott kulcs hiányzik vagy hibás.
- 868: a kiszolgálónév nem oldódott fel. Javítsa a DNS-t a profil szerkesztése előtt.
Tartsa a működő parancsot az általa kódolt beállítások mellett, hogy a következő ember újraépíthessen ahelyett, hogy a felületről visszafejtené a profilt. Ha mégis újra kell építenie, törölje a bejegyzést, és ugyanazokkal a paraméterekkel hozza létre újra; egy félig beállított profil foltozása elavult útvonalakat és hitelesítési állapotot hagy maga után. És ha a fájl soha nem volt natív, térjen vissza a klienshez, amely birtokolja. Az IKEv2-profillá öltöztetett .ovpn nem import, hanem támogatási jegy.