Nuk ekziston cmdlet-i Import-VpnProfile, dhe ai që duket më i afërt, Add-VpnConnection, nuk lexon kurrë një skedar .ovpn ose .conf. Ai ndërton një profil vendor të Windows nga parametrat që i jepni, prandaj kontrolli i parë këtu është formati i skedarit dhe jo rreshti i komandës. Nëse porta flet SSTP, IKEv2, L2TP/IPsec ose PPTP, Windows mund ta zotërojë profilin dhe pjesa tjetër e listës vlen. Nëse ju kanë dhënë një skedar OpenVPN ose WireGuard, ndaloni te hapi i parë: këta importues i zotërojnë vetë klientët.

Hapi 1: Konfirmoni profilin që Windows mund ta zotërojë vërtet

Ekzekutoni Get-Command -Module VpnClient në makinë para çdo gjëje tjetër. Windows 10, Windows 11 dhe Server 2016 ose më i ri e kanë këtë modul; nëse mungon, asnjë skript i kopjuar nuk do ta bëjë këtë host të pranojë një profil vendor. Cmdlet-ët që kanë rëndësi janë Add-VpnConnection, Get-VpnConnection dhe Remove-VpnConnection, dhe lista e parametrave në referencën e Add-VpnConnection ia vlen të lexohet një herë e plotë.

Vendor do të thotë që grumbulli VPN i Windows e përfundon tunelin. Kjo mbulon IKEv2, shpesh me një certifikatë makine; SSTP, që është TLS me vërtetim përdoruesi ose certifikate brenda; dhe L2TP/IPsec me një çelës të para-ndarë. Një skedar .ovpn është skript OpenVPN, jo lidhje Windows: mban direktiva si remote, cipher ose tls-auth për të cilat grumbulli i Windows nuk ka koncept. Një .conf WireGuard është e njëjta histori me PrivateKey dhe AllowedIPs; shndërrimi i njërit në tjetrin nuk është zgjedhje parametri, por një implementim tjetër tuneli.

Ekziston një degë e tretë. Nëse një administrator ju jep një dokument XML VPNv2 CSP ose një profil Intune, ajo është rruga MDM, e aplikuar nga grumbulli i provizionimit dhe jo nga Add-VpnConnection. Mos i përktheni emrat e atyre nyjeve në parametra PowerShell; pyesni në vend të kësaj cili mekanizëm e aplikon atë XML.

Hapi 2: Bashkoni llojin e tunelit me metodën e vërtetimit

-TunnelType dhe -AuthenticationMethod janë parametra të veçantë, dhe portës i intereson vetëm kombinimi. Bëni njërin drejt dhe tjetrin gabim dhe merrni një profil që nuk lidhet askund, ose ngec me tunelin tashmë lart. Vendosini të dy në mënyrë eksplicite, në vend që t'i besoni një vlerë të paracaktuar të zgjedhur për një shërbim tjetër.

  • IKEv2 me MachineCertificate: klienti paraqet një certifikatë kompjuteri; vendosni gjithashtu -EncryptionLevel Required.
  • SSTP me Eap: fillimisht tuneli TLS, pastaj PEAP/MSCHAPv2 ose një certifikatë brenda EAP. Kjo kërkon XML-in e hapit 3.
  • SSTP, L2TP ose PPTP me MSChapv2, Chap ose Pap: emër përdoruesi dhe fjalëkalim të thjeshtë, pa bllok EAP.
  • L2TP me MSChapv2 dhe -Lt2pPsk: PSK mbulon gjysmën IPsec, përdoruesi mbulon PPP; të dyja duhet të përputhen me serverin.

Një splat i mban vlerat në një vend:

$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 kthen objektin që Windows sapo shkroi, kështu që mund ta shqyrtoni pa një thirrje të dytë. Nëse emri ekziston tashmë, cmdlet-i refuzon të ekzekutohet; -Force e mbishkruan, që është refleks i gabuar në një laptop prodhimi sepse hedh pa zë gjithçka që dikush ka konfiguruar me dorë.

Hapi 3: Dorëzoni materialin e kredencialeve si duhet

Fjalëkalimet, çelësat e para-ndarë dhe blloqet EAP janë aty ku këto skripte zakonisht thyhen. -EapConfigXmlStream kërkon një XmlDocument, jo një shteg, prandaj lexojeni dhe konvertojeni skedarin më parë. Kalimi i një vargu prodhon një gabim konvertimi që lexohet si problem skeme dhe i shtyn njerëzit të rishkruajnë XML që nuk ishte kurrë i gabuar.

$eap = [xml](Get-Content -Raw .\peap-mschapv2.xml)
Add-VpnConnection -Name "Corp SSTP" -ServerAddress "sstp.example.com" `
  -TunnelType Sstp -AuthenticationMethod Eap `
  -EapConfigXmlStream $eap -EncryptionLevel Required

Ai XML nuk është diçka për ta shpikur nga një copëz blogu. Ai emërton llojin e metodës EAP dhe vërtetimin e brendshëm, dhe porta i krahason të dyja me politikën e saj. Një metodë e brendshme e papërputhur dështon pasi përfundon dorëzimi TLS, gjë që duket saktësisht si fjalëkalim i gabuar dhe nuk është. Merreni XML-in nga ai që drejton portën, ose eksportojeni nga një profil që funksionon tashmë.

Për IKEv2 gjysma e certifikatës është një kërkim në depo. -MachineCertificateIssuerFilter merr një objekt certifikate, dhe Windows e përdor për të gjetur një certifikatë klienti të përdorshme në LocalMachine\My. Certifikata kërkon një çelës privat dhe një zinxhir që serveri e beson; kur mungon njëra, vërtetimi dështon pa detaje të dobishme, prandaj kontrolloni depon së pari:

Get-ChildItem Cert:\LocalMachine\My |
  Where-Object { $_.HasPrivateKey -and $_.NotAfter -gt (Get-Date) } |
  Select-Object Subject, Issuer, Thumbprint, NotAfter

Mbajini sekretet jashtë skedarit të skriptit. Një PSK e dhënë në rreshtin e komandës ose e ngulitur në një .ps1 përfundon në transkripte, seanca të ruajtura dhe depo të përbashkëta, dhe -RememberCredential i ruan kredencialet e përdoruesit për më vonë, duke e kthyer një test të vetëm në një leje të përhershme.

Hapi 4: Vendosni shtrirjen para ekzekutimit të parë

I njëjti cmdlet shkruan në dy libra telefoni të ndryshëm. Pa -AllUserConnection profili ju përket juve dhe jeton në %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk. Me të, nga një prompt i ngritur, profili shkon në %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk dhe është i dukshëm për çdo llogari, përfshirë ekranin e hyrjes.

Shtrirja nuk është kozmetikë. Një profil për të gjithë përdoruesit është ai që mund të përdorë një llogari shërbimi, një detyrë e planifikuar ose një skenar para hyrjes; një profil për përdorues të vetëm është i padukshëm për të tre. Objektet lexohen ndryshe gjithashtu: Get-VpnConnection liston zërat e përdoruesit aktual, Get-VpnConnection -AllUserConnection ata të gjithë makinës. Zgjidhni një tani dhe trajtoni një ndryshim të mëvonshëm si fshirje dhe rikrijim, jo si redaktim:

# elevated prompt
Remove-VpnConnection -Name "Corp IKEv2" -Force
Add-VpnConnection -Name "Corp IKEv2" -ServerAddress "vpn.example.com" `
  -TunnelType Ikev2 -AuthenticationMethod MachineCertificate `
  -EncryptionLevel Required -AllUserConnection

Hapi 5: Provoni çfarë duhet të dorëzojë vërtet një tunel

Një ikonë e lidhur vërteton që tuneli u ngrit dhe asgjë tjetër. Lidhuni fillimisht nga rreshti i komandës që dështimet të vijnë si tekst, jo si dialog, pastaj lexoni çfarë regjistroi Windows:

rasdial "Corp IKEv2"
Get-VpnConnection -Name "Corp IKEv2" |
  Select-Object Name, ServerAddress, TunnelType, ConnectionStatus, SplitTunneling
Get-NetRoute -DestinationPrefix "0.0.0.0/0"

Dy dështimet që përdoruesit raportojnë ndërsa statusi ende thotë Connected janë DNS dhe rrugëtimi. Zgjidhni një emër të brendshëm dhe kontrolloni cili server u përgjigj; një profil pa -DnsSuffix mund të tunelojë në mënyrë të përsosur dhe gjithsesi të dështojë në çdo kërkim intranet. Pastaj shikoni rrugën e paracaktuar: me tunelizim të ndarë të fikur, rruga 0.0.0.0/0 me metrikën më të ulët duhet të tregojë në ndërfaqen VPN, dhe me të ndezur vetëm prefikset që prisni. Nëse të dyja duken drejt dhe trafiku vdes gjithsesi, problemi është përtej profilit, në politikë ose në filtrin e portës.

Kur lidhja dështon plotësisht, kodi e ngushton hapin ku duhet kthyer:

  • 691: porta i refuzoi kredencialet. Kthehuni te hapi 3, jo te tuneli.
  • 809: dorëzimi IKEv2 nuk përfundoi kurrë. Kontrolloni UDP 500 dhe 4500, dhe besimin e certifikatës.
  • 789: çelësi i para-ndarë L2TP/IPsec mungon ose është i gabuar.
  • 868: emri i serverit nuk u zgjidh. Rregulloni DNS para se të redaktoni profilin.

Mbajeni komandën punuese pranë cilësimeve që kodon, që personi tjetër të mund ta rindërtojë profilin, e jo ta rikuperojë nga ndërfaqja. Nëse duhet ta rindërtoni vërtet, fshini zërin dhe rikrijoni atë nga të njëjtat parametra; arnimi i një profili gjysmë të konfiguruar lë pas rrugë të vjetruara dhe gjendje vërtetimi. Dhe nëse skedari nuk ishte kurrë vendor, kthehuni te klienti që e zotëron. Një .ovpn e veshur si profil IKEv2 nuk është import, është një tiketë mbështetjeje.

Artikuj të ngjashëm