Uvoz VPN profila u PowerShell-u pomoću Add-VpnConnection
Add-VpnConnection pravi samo izvorne Windows profile. Uskladite tip tunela i način provere sa prolazom, namerno podesite obim, zatim testirajte rute i DNS.
Ne postoji cmdlet Import-VpnProfile, a onaj koji izgleda najbliže, Add-VpnConnection, nikada ne čita datoteku .ovpn ili .conf. On sastavlja izvorni Windows profil od parametara koje mu prosledite, zato je prva provera ovde format datoteke, a ne komandna linija. Ako prolaz govori SSTP, IKEv2, L2TP/IPsec ili PPTP, Windows može da poseduje profil i ostatak spiska važi. Ako ste dobili OpenVPN ili WireGuard datoteku, zaustavite se na prvom koraku: tim uvoznicima vladaju sami klijenti.
Korak 1: Potvrdite da profil Windows zaista može da poseduje
Pokrenite Get-Command -Module VpnClient na mašini pre svega ostalog. Windows 10, Windows 11 i Server 2016 ili noviji imaju ovaj modul; ako ga nema, nijedna kopirana skripta neće naterati ovaj host da prihvati izvorni profil. Važni su cmdletovi Add-VpnConnection, Get-VpnConnection i Remove-VpnConnection, a lista parametara u referenci Add-VpnConnection vredi jednog celog čitanja.
Izvorno znači da Windows VPN stek završava tunel. To pokriva IKEv2, često sa sertifikatom računara; SSTP, koji je TLS sa proverom korisnika ili sertifikata unutra; i L2TP/IPsec sa unapred podeljenim ključem. Datoteka .ovpn je OpenVPN skripta, ne Windows veza: nosi direktive poput remote, cipher ili tls-auth o kojima Windows stek nema pojma. Datoteka .conf za WireGuard je ista priča sa PrivateKey i AllowedIPs; pretvoriti jedno u drugo nije izbor parametra, već druga implementacija tunela.
Postoji i treća grana. Ako vam administrator preda VPNv2 CSP XML dokument ili Intune profil, to je MDM put, koji primenjuje stek za provizionisanje, a ne Add-VpnConnection. Ne prevodite imena tih čvorova u PowerShell parametre; umesto toga pitajte koji mehanizam primenjuje taj XML.
Korak 2: Uparite tip tunela sa načinom provere
-TunnelType i -AuthenticationMethod su odvojeni parametri, a prolaz zanima samo kombinacija. Podesite jedno ispravno, a drugo pogrešno i dobićete profil koji se nikuda ne povezuje, ili se zaglavi dok je tunel već podignut. Podesite oba eksplicitno, umesto da verujete podrazumevanoj vrednosti izabranoj za drugu uslugu.
- IKEv2 sa MachineCertificate: klijent prikazuje sertifikat računara; podesite i -EncryptionLevel Required.
- SSTP sa Eap: prvo TLS tunel, zatim PEAP/MSCHAPv2 ili sertifikat unutar EAP. To zahteva XML iz koraka 3.
- SSTP, L2TP ili PPTP sa MSChapv2, Chap ili Pap: obično korisničko ime i lozinka, bez EAP bloka.
- L2TP sa MSChapv2 i -Lt2pPsk: PSK pokriva IPsec polovinu, korisnik pokriva PPP; oboje mora da se poklopi sa serverom.
Splat drži vrednosti na jednom mestu:
$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 pokrene; -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 akreditiva ispravno
Lozinke, unapred podeljeni ključevi i EAP blokovi su mesto gde se ove skripte obično lome. -EapConfigXmlStream želi XmlDocument, ne putanju, zato prvo pročitajte i pretvorite datoteku. Prosleđivanje stringa daje grešku konverzije koja se čita kao problem sa šemom i tera 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 na blogu. On imenuje tip EAP metode i unutrašnju proveru, a prolaz oba poredi sa svojom politikom. Neodgovarajuća unutrašnja metoda ne uspeva nakon završenog TLS rukovanja, što izgleda tačno kao loša lozinka, ali nije. Uzmite XML od onoga ko upravlja prolazom, ili ga izvezite iz profila koji već radi.
Za IKEv2 polovina sa sertifikatom je pretraga u skladištu. -MachineCertificateIssuerFilter prihvata objekat sertifikata, a Windows ga koristi da pronađe upotrebljiv klijentski sertifikat u LocalMachine\My. Sertifikatu treba privatni ključ i lanac kome server veruje; kada bilo čega od toga nema, provera ne uspeva bez korisnih detalja, zato prvo proverite skladište:
Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.HasPrivateKey -and $_.NotAfter -gt (Get-Date) } |
Select-Object Subject, Issuer, Thumbprint, NotAfterDržite tajne van datoteke skripte. PSK prosleđen u komandnoj liniji ili ugrađen u .ps1 završava u transkriptima, sačuvanim sesijama i deljenim repozitorijumima, a -RememberCredential kešira korisničke akreditive za kasnije, pretvarajući jednokratni test u trajnu dozvolu.
Korak 4: Odredite obim pre prvog pokretanja
Isti cmdlet piše u dva različita imenika. Bez -AllUserConnection profil pripada vama i živi u %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk. Sa njim, iz podignutog komandnog prozora, profil ide u %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk i vidljiv je svakom nalogu, uključujući ekran za prijavu.
Obim nije kozmetika. Profil za sve korisnike je ono što može da koristi servisni nalog, zakazani zadatak ili scenario pre prijave; profil za jednog korisnika je nevidljiv za sva tri. Objekti se i čitaju drugačije: Get-VpnConnection navodi unose trenutnog korisnika, Get-VpnConnection -AllUserConnection one za ceo računar. Izaberite jedno sada, a kasniju promenu tretirajte kao brisanje i ponovno stvaranje, ne kao izmenu:
# 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 da dostavi
Ikona veze dokazuje da se tunel podigao i ništa više. Prvo se povežite iz komandne linije da greške stignu kao tekst, a ne kao dijalog, zatim pročitajte šta je Windows zabelež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 koja korisnici prijavljuju dok status još kaže Connected su DNS i rutiranje. Razrešite interno ime i proverite koji server je odgovorio; profil bez -DnsSuffix može savršeno da tunelira i ipak ne uspe pri svakoj intranet pretrazi. Zatim pogledajte podrazumevanu rutu: sa isključenim podeljenim tuneliranjem ruta 0.0.0.0/0 sa najnižom metrikom treba da pokazuje u VPN interfejs, a sa uključenim samo prefiksi koje očekujete. Ako oboje izgleda ispravno, a saobraćaj i dalje umire, problem je iza profila, u politici ili filtru prolaza.
Kada veza potpuno ne uspe, kod sužava korak na koji se vratiti:
- 691: prolaz je odbio akreditive. Vratite se na korak 3, ne na tunel.
- 809: IKEv2 rukovanje se nikada nije završilo. Proverite UDP 500 i 4500, i poverenje u sertifikat.
- 789: unapred podeljeni L2TP/IPsec ključ nedostaje ili je pogrešan.
- 868: ime servera se nije razrešilo. Popravite DNS pre nego što uređujete profil.
Držite radnu komandu pored podešavanja koja kodira, da bi sledeća osoba mogla da profil ponovo sastavi, a ne da ga rekonstruiše iz interfejsa. Ako ipak morate da ga ponovo sastavite, obrišite unos i ponovo ga napravite od istih parametara; krpljenje polupodešenog profila za sobom ostavlja zastarele rute i stanje provere. A ako datoteka nikada nije bila izvorna, vratite se klijentu koji je poseduje. Datoteka .ovpn preobučena u IKEv2 profil nije uvoz, nego prijava podršci.