Cmdletit Import-VpnProfile ei ole olemas ja kõige lähemalt kõlav Add-VpnConnection ei loe kunagi .ovpn ega .conf faili. See koostab kohaliku Windowsi profiili teie antud parameetritest, ja seepärast on esimene kontrollpunkt siin failivorming, mitte käsurida. Kui lüüs räägib SSTP, IKEv2, L2TP/IPsec või PPTP, võib Windows profiili omada ja ülejäänud loend kehtib. Kui teile anti OpenVPN või WireGuard fail, peatuge esimese sammu juures: neil klientidel on oma importijad.

Samm 1: Kinnitage, millist profiili Windows tegelikult omada saab

Käivitage Get-Command -Module VpnClient masinas enne kõike muud. Windows 10, Windows 11 ja Server 2016 või uuemad tarnivad mooduli; kui see puudub, ei pane ükski kopeeritud skript seda hosti kohalikku profiili vastu võtma. Olulised cmdletid on Add-VpnConnection, Get-VpnConnection ja Remove-VpnConnection ning parameetriloend Add-VpnConnectioni viites tasub korra tervikuna läbi lugeda.

Kohalik tähendab, et Windowsi VPN-pinu lõpetab tunneli. See hõlmab IKEv2, sageli masinasertifikaadiga; SSTP, mis on TLS koos kasutaja- või sertifikaadiautentimisega sees; ja L2TP/IPsec eeljagatud võtmega. .ovpn fail on OpenVPNi skript, mitte Windowsi ühendus: see kannab direktiive nagu remote, cipher või tls-auth, millest Windowsi pinu midagi ei tea. WireGuard .conf on sama lugu PrivateKey ja AllowedIPs-iga; ühe teiseks teisendamine ei ole parameetri valik, vaid teistsugune tunneli teostus.

On ka kolmas haru. Kui administraator annab teile VPNv2 CSP XML dokumendi või Intune'i profiili, on see MDM tee, mida rakendab provisjoneerimispinu, mitte Add-VpnConnection. Ärge tõlkige neid sõlmede nimesid PowerShelli parameetriteks; küsige, milline mehhanism XML-i rakendab.

Samm 2: Siduge tunnelitüüp autentimismeetodiga

-TunnelType ja -AuthenticationMethod on eraldi parameetrid ning lüüsi huvitab ainult kombinatsioon. Tee üks õigesti ja teine valesti ning saad profiili, mis ei ühendu mitte millegagi või jääb tõrkuma, kui tunnel on juba üleval. Määra mõlemad selgelt, selle asemel et usaldada vaikeväärtust, mis valiti teise teenuse jaoks.

  • IKEv2 koos MachineCertificate'iga: klient esitab arvutisertifikaadi; määra ka -EncryptionLevel Required.
  • SSTP koos Eap-iga: esmalt TLS tunnel, seejärel PEAP/MSCHAPv2 või sertifikaat EAP sees. See vajab XML-i sammust 3.
  • SSTP, L2TP või PPTP koos MSChapv2, Chap või Pap-iga: tavaline kasutajanimi ja parool, ilma EAP blobita.
  • L2TP koos MSChapv2 ja -Lt2pPsk-iga: PSK katab IPsec poole, kasutaja katab PPP; mõlemad peavad serveriga sobima.

Splat hoiab väärtused ühes kohas:

$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 tagastab objekti, mille Windows just kirjutas, nii et saad seda teise kutseta uurida. Kui nimi on juba olemas, keeldub cmdlet töötamast; -Force kirjutab selle üle, mis on tootmise sülearvutis vale refleks, sest viskab vaikselt ära kõik, mille keegi käsitsi seadistas.

Samm 3: Andke volitusmaterjal õigesti üle

Paroolid, eeljagatud võtmed ja EAP blobid on koht, kus need skriptid tavaliselt katkevad. -EapConfigXmlStream tahab XmlDocumenti, mitte teed, seega loe ja teisenda fail esimesena. Stringi edasiandmine tekitab teisendusvea, mis näeb välja nagu skeemi probleem ja paneb inimesi ümber kirjutama XML-i, mis ei olnud kunagi vale.

$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

See XML ei ole asi, mida blogikatkest välja mõelda. See nimetab EAP meetodi tüübi ja sisemise autentimise ning lüüs võrdleb mõlemat oma poliitikaga. Sobimatu sisemine meetod ebaõnnestub pärast TLS käepigistuse lõppu, mis näeb täpselt välja nagu vale parool ja ei ole seda. Võtke XML sellelt, kes lüüsi haldab, või eksportige profiilist, mis juba töötab.

IKEv2 puhul on sertifikaadi pool hoidla otsing. -MachineCertificateIssuerFilter võtab sertifikaadi objekti ja Windows kasutab seda, et leida LocalMachine\My-s kasutatav kliendisertifikaat. Sertifikaat vajab privaatvõtit ja ahelat, mida server usaldab; kui kumbki puudub, ebaõnnestub autentimine ilma kasuliku detailita, seega kontrolli esmalt hoidlat:

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

Hoidke saladused skriptifailist väljas. Käsureal antud või .ps1-i küpsetatud PSK jõuab transkriptidesse, salvestatud sessioonidesse ja jagatud hoidlatesse ning -RememberCredential salvestab kasutaja volitused hilisemaks vahemällu, muutes ühekordse testi püsivaks loaks.

Samm 4: Otsustage ulatus enne esimest käivitust

Sama cmdlet kirjutab kahte erinevasse telefoniraamatusse. Ilma -AllUserConnection kuulub profiil teile ja elab %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk all. Sellega, kõrgendatud käsurealt, läheb profiil %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk alla ja on nähtav igale kontole, sealhulgas sisselogimisekraanile.

Ulatus ei ole kosmeetika. Kõigi kasutajate profiil on see, mida saab kasutada teenusekonto, ajastatud ülesanne või enne sisselogimist toimuv stsenaarium; ühe kasutaja profiil on kõigi kolme jaoks nähtamatu. Objekte loetakse ka erinevalt: Get-VpnConnection loetleb praeguse kasutaja kirjed, Get-VpnConnection -AllUserConnection masinatasandi omad. Valige üks kohe ja käsitlege hilisemat muudatust kustutamise ja uuesti loomisena, mitte redigeerimisena:

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

Samm 5: Testige, mida tunnel peab tegelikult andma

Ühendatud ikoon tõestab, et tunnel tõusis, ja mitte midagi muud. Ühenduge esmalt käsurealt, et tõrked tuleksid tekstina, mitte dialoogina, ja lugege siis, mida Windows salvestas:

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

Kaks tõrget, millest kasutajad teatavad, kui olek ütleb veel Connected, on DNS ja marsruutimine. Lahendage sisemine nimi ja kontrollige, milline server vastas; profiil ilma -DnsSuffix-ita võib suurepäraselt tunnelida ja siiski igal intraneti otsingul ebaõnnestuda. Seejärel vaadake vaikemarsruuti: väljalülitatud split tunnelinguga peaks madalaima mõõdikuga marsruut 0.0.0.0/0 osutama VPN-liidesesse, sisselülitatuna ainult oodatud prefiksid. Kui mõlemad näivad õiged ja liiklus sureb ikka, on probleem profiilist kaugemal, poliitikas või lüüsi filtris.

Kui ühendus nurjub täielikult, kitsendab kood sammu, kuhu tagasi pöörduda:

  • 691: lüüs lükkas volitused tagasi. Minge tagasi sammu 3 juurde, mitte tunneli juurde.
  • 809: IKEv2 käepigistus ei lõppenud kunagi. Kontrollige UDP 500 ja 4500 ning sertifikaatide usaldust.
  • 789: L2TP/IPsec eeljagatud võti puudub või on vale.
  • 868: serveri nime ei lahendatud. Parandage DNS enne profiili redigeerimist.

Hoidke töötav käsk selle kõrval, mida see kodeerib, et järgmine inimene saaks uuesti ehitada, selle asemel et profiili liidesest tagurpidi inseneerida. Kui peate tõesti uuesti ehitama, kustutage kirje ja looge see samadest parameetritest uuesti; poolikult seadistatud profiili lappimine jätab maha aegunud marsruudid ja autentimisoleku. Ja kui fail ei olnud kunagi kohalik, minge tagasi kliendi juurde, kes seda omab. IKEv2 profiiliks maskeeritud .ovpn ei ole import, vaid tugipilet.

Seotud artiklid