Uvoz VPN profila u PowerShellu pomoću Add-VpnConnection
Add-VpnConnection gradi samo izvorne Windows profile. Uparite tunel i autentifikaciju s gatewayem, svjesno postavite obim, pa testirajte rute i DNS.
Ne postoji cmdlet Import-VpnProfile, a onaj koji izgleda najbliže, Add-VpnConnection, nikada ne čita .ovpn ili .conf datoteku. On sastavlja izvorni Windows profil od parametara koje mu predate, zato je prva provjera ovdje format datoteke, a ne komandna linija. Ako gateway govori SSTP, IKEv2, L2TP/IPsec ili PPTP, Windows može posjedovati profil i ostatak liste važi. Ako ste dobili OpenVPN ili WireGuard datoteku, zaustavite se na prvom koraku: ti klijenti imaju vlastite uvoznike.
Korak 1: Potvrdite koji profil Windows zaista može posjedovati
Pokrenite Get-Command -Module VpnClient na mašini prije svega ostalog. Windows 10, Windows 11 i Server 2016 ili noviji dolaze s modulom; ako nedostaje, nijedna kopirana skripta neće natjerati ovaj host da prihvati izvorni profil. Cmdleti koji su važni su Add-VpnConnection, Get-VpnConnection i Remove-VpnConnection, a lista parametara u referenci Add-VpnConnection vrijedi jednom pročitati u cjelini.
Izvorno znači da Windows VPN stek prekida tunel. To pokriva IKEv2, često s certifikatom mašine; SSTP, koji je TLS s korisničkom ili certifikatnom autentifikacijom unutra; i L2TP/IPsec s unaprijed dijeljenim ključem. .ovpn datoteka je OpenVPN skripta, a ne Windows veza: nosi direktive kao što su remote, cipher ili tls-auth koje Windows stek ne poznaje. WireGuard .conf je ista priča s PrivateKey i AllowedIPs; pretvaranje jednog u drugo nije izbor parametra nego druga implementacija tunela.
Postoji i treća grana. Ako vam administrator preda VPNv2 CSP XML dokument ili Intune profil, to je MDM put, koji primjenjuje provisioning stek, a ne Add-VpnConnection. Ne prevodite ta imena čvorova u PowerShell parametre; pitajte koji mehanizam primjenjuje XML.
Korak 2: Uparite tip tunela s metodom autentifikacije
-TunnelType i -AuthenticationMethod su odvojeni parametri, a gateway zanima samo kombinacija. Jedno postavite ispravno, drugo pogrešno i dobijate profil koji se ne povezuje ni s čim, ili stane s već podignutim tunelom. Postavite oba eksplicitno umjesto da vjerujete zadanoj vrijednosti odabranoj za drugu uslugu.
- IKEv2 s MachineCertificate: klijent predstavlja certifikat računara; postavite i -EncryptionLevel Required.
- SSTP s Eap: prvo TLS tunel, zatim PEAP/MSCHAPv2 ili certifikat unutar EAP-a. Za to treba XML iz koraka 3.
- SSTP, L2TP ili PPTP s MSChapv2, Chap ili Pap: obično korisničko ime i lozinka, bez EAP bloba.
- L2TP s MSChapv2 i -Lt2pPsk: PSK pokriva IPsec dio, korisnik pokriva PPP; oboje mora odgovarati serveru.
Splat drži vrijednosti na jednom mjestu:
$p = @{
Name = "Corp IKEv2"
ServerAddress = "vpn.example.com"
TunnelType = "Ikev2"
AuthenticationMethod = "MachineCertificate"
EncryptionLevel = "Required"
SplitTunneling = $false
DnsSuffix = "corp.example.com"
}
Add-VpnConnection @p -PassThru-PassThru vraća objekat koji je Windows upravo zapisao, pa ga možete pregledati bez drugog poziva. Ako ime već postoji, cmdlet odbija da se izvrši; -Force ga prepisuje, što je pogrešan refleks na produkcijskom laptopu jer tiho odbacuje sve što je neko podesio ručno.
Korak 3: Predajte materijal vjerovanja ispravno
Lozinke, unaprijed dijeljeni ključevi i EAP blobovi su mjesto gdje se ove skripte obično lome. -EapConfigXmlStream traži XmlDocument, ne putanju, pa prvo pročitajte i pretvorite datoteku. Prosljeđivanje stringa daje grešku konverzije koja izgleda kao problem sa šemom i tjera ljude da prepisuju XML koji nikada nije bio pogrešan.
$eap = [xml](Get-Content -Raw .\peap-mschapv2.xml)
Add-VpnConnection -Name "Corp SSTP" -ServerAddress "sstp.example.com" `
-TunnelType Sstp -AuthenticationMethod Eap `
-EapConfigXmlStream $eap -EncryptionLevel RequiredTaj XML nije nešto što se izmišlja iz odlomka bloga. On imenuje tip EAP metode i unutrašnju autentifikaciju, a gateway oboje poredi sa svojom politikom. Neodgovarajuća unutrašnja metoda pada nakon završetka TLS rukovanja, što izgleda tačno kao loša lozinka i nije. Uzmite XML od onoga ko upravlja gatewayem, ili ga izvezite iz profila koji već radi.
Za IKEv2 dio s certifikatom je pretraga spremišta. -MachineCertificateIssuerFilter prima objekat certifikata, a Windows ga koristi da pronađe upotrebljiv klijentski certifikat u LocalMachine\My. Certifikatu treba privatni ključ i lanac kojem server vjeruje; kada bilo šta nedostaje, autentifikacija pada bez korisnih detalja, zato prvo provjerite spremište:
Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.HasPrivateKey -and $_.NotAfter -gt (Get-Date) } |
Select-Object Subject, Issuer, Thumbprint, NotAfterDržite tajne izvan skript datoteke. PSK proslijeđen na komandnoj liniji ili ugrađen u .ps1 završi u transkriptima, sačuvanim sesijama i dijeljenim repozitorijima, a -RememberCredential kešira korisničke akreditive za kasnije, pretvarajući jednokratni test u trajno odobrenje.
Korak 4: Odlučite obim prije prvog pokretanja
Isti cmdlet piše u dva različita imenika. Bez -AllUserConnection profil pripada vama i živi pod %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk. S njim, iz povišenog komandnog reda, profil ide u %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk i vidljiv je svakom računu, uključujući ekran za prijavu.
Obim nije kozmetika. Profil za sve korisnike je ono što servisni račun, zakazani zadatak ili scenario prije prijave mogu koristiti; profil po korisniku je nevidljiv za sva tri. Objekti se čitaju različito: Get-VpnConnection navodi unose trenutnog korisnika, Get-VpnConnection -AllUserConnection one na nivou mašine. Odaberite jedan sada i tretirajte kasniju promjenu kao brisanje i ponovno kreiranje, a ne kao uređivanje:
# elevated prompt
Remove-VpnConnection -Name "Corp IKEv2" -Force
Add-VpnConnection -Name "Corp IKEv2" -ServerAddress "vpn.example.com" `
-TunnelType Ikev2 -AuthenticationMethod MachineCertificate `
-EncryptionLevel Required -AllUserConnectionKorak 5: Testirajte šta tunel zaista mora isporučiti
Povezana ikona dokazuje da se tunel podigao i ništa više. Prvo se povežite iz komandne linije da kvarovi dolaze kao tekst, a ne kao dijalog, pa pročitajte šta je Windows zabilježio:
rasdial "Corp IKEv2"
Get-VpnConnection -Name "Corp IKEv2" |
Select-Object Name, ServerAddress, TunnelType, ConnectionStatus, SplitTunneling
Get-NetRoute -DestinationPrefix "0.0.0.0/0"Dva kvara o kojima korisnici izvještavaju dok status još kaže Connected su DNS i rutiranje. Razriješite interno ime i provjerite koji server je odgovorio; profil bez -DnsSuffix može savršeno tunelirati i ipak pasti na svakoj intranet pretrazi. Zatim pogledajte zadanu rutu: s isključenim split tunnelingom ruta 0.0.0.0/0 s najnižom metrikom treba pokazivati u VPN interfejs, a s uključenim samo prefiksi koje očekujete. Ako oboje izgleda ispravno a saobraćaj i dalje umire, problem je iza profila, u politici ili gateway filteru.
Kada veza potpuno padne, kod sužava korak na koji se treba vratiti:
- 691: gateway je odbio akreditive. Vratite se na korak 3, ne na tunel.
- 809: IKEv2 rukovanje nikada nije završeno. Provjerite UDP 500 i 4500, i povjerenje u certifikate.
- 789: unaprijed dijeljeni ključ za L2TP/IPsec nedostaje ili je pogrešan.
- 868: ime servera nije razriješeno. Popravite DNS prije uređivanja profila.
Držite radnu komandu uz postavke koje kodira, da sljedeća osoba može ponovo izgraditi umjesto da obrnutim inženjeringom vadi profil iz interfejsa. Ako ipak morate ponovo graditi, obrišite unos i napravite ga iz istih parametara; krpljenje polukonfigurisanog profila ostavlja zastarjele rute i stanje autentifikacije. A ako datoteka nikada nije bila izvorna, vratite se klijentu koji je posjeduje. .ovpn prerušen u IKEv2 profil nije uvoz, to je tiket za podršku.