Import-VpnProfile гэдэг cmdlet байхгүй бөгөөд хамгийн ойрхон нь болох Add-VpnConnection хэзээ ч .ovpn эсвэл .conf файлыг уншдаггүй. Таны өгсөн параметрүүдээс Windows-ийн төрөлх профайлыг угсардаг тул энд эхний шалгах цэг нь командын мөр биш, файлын формат юм. Хэрэв гарц SSTP, IKEv2, L2TP/IPsec эсвэл PPTP-ээр ярьдаг бол Windows профайлыг эзэмшиж чадна, жагсаалтын үлдсэн хэсэг хүчинтэй. Хэрэв танд OpenVPN эсвэл WireGuard файл өгсөн бол эхний алхам дээр зогсоно уу: тэдгээр клиентүүд өөрсдийн импортлогчтой.

1-р алхам: Windows яг ямар профайлыг эзэмшиж чадахыг баталгаажуулна уу

Бусад бүхнээс өмнө машинд Get-Command -Module VpnClient ажиллуулна уу. Windows 10, Windows 11 болон Server 2016 ба түүнээс шинэ хувилбарт энэ модуль байдаг; байхгүй бол ямар ч хуулсан скрипт энэ хостыг төрөлх профайл хүлээн авахад хүргэхгүй. Чухал cmdlet-үүд нь Add-VpnConnection, Get-VpnConnection, Remove-VpnConnection бөгөөд Add-VpnConnection-ийн лавлагааны параметрийн жагсаалтыг нэг удаа бүрэн унших нь зүйтэй.

Төрөлх гэдэг нь Windows-ийн VPN стек туннелийг дуусгана гэсэн үг. Үүнд IKEv2 багтана, ихэвчлэн машины гэрчилгээтэй; дотор нь хэрэглэгч эсвэл гэрчилгээний баталгаажуулалт бүхий TLS болох SSTP; болон урьдчилан хуваалцсан түлхүүртэй L2TP/IPsec. .ovpn файл нь OpenVPN скрипт, Windows холболт биш: тэр remote, cipher эсвэл tls-auth зэрэг зааврыг агуулдаг бөгөөд Windows стек тэдний талаар огт ойлголтгүй. WireGuard-ийн .conf мөн PrivateKey болон AllowedIPs-тэй ижил түүх; нэгийг нөгөө болгох нь параметрийн сонголт биш, өөр туннелийн хэрэгжилт юм.

Гурав дахь салбар ч бий. Хэрэв администратор танд VPNv2 CSP XML баримт эсвэл Intune профайл өгвөл энэ нь MDM зам бөгөөд үүнийг Add-VpnConnection биш, бэлтгэлийн стек хэрэгжүүлнэ. Тэдгээр зангилааны нэрийг PowerShell параметр болгон бүү хөрвүүл; оронд нь XML-ийг аль механизм хэрэгжүүлдэг вэ гэж асуу.

2-р алхам: Туннелийн төрлийг баталгаажуулалтын аргатай хослуул

-TunnelType болон -AuthenticationMethod нь тусдаа параметр бөгөөд гарцад зөвхөн хослол нь чухал. Нэг нь зөв, нөгөө нь буруу бол хаана ч холбогдохгүй профайл үүснэ, эсвэл туннель аль хэдийн боссон байхад гацана. Өөр үйлчилгээнд зориулж сонгосон өгөгдмөл утгад найдахын оронд хоёуланг нь тодорхой тохируулна уу.

  • MachineCertificate-тэй IKEv2: клиент компьютерний гэрчилгээг үзүүлнэ; -EncryptionLevel Required-ийг ч тохируулна уу.
  • Eap-тай SSTP: эхлээд TLS туннель, дараа нь PEAP/MSCHAPv2 эсвэл EAP доторх гэрчилгээ. Энэ нь 3-р алхамын XML-ийг шаардана.
  • MSChapv2, Chap эсвэл Pap-тай SSTP, L2TP эсвэл PPTP: энгийн хэрэглэгчийн нэр, нууц үг, EAP блокгүй.
  • MSChapv2 болон -Lt2pPsk-тэй L2TP: PSK нь IPsec хагасыг, хэрэглэгч PPP-г хариуцна; хоёулаа сервертэй таарах ёстой.

splat утгуудыг нэг дор хадгална:

$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 нь Windows дөнгөж бичсэн объектыг буцаадаг тул хоёр дахь дуудлагагүйгээр шалгаж болно. Нэр аль хэдийн байвал cmdlet ажиллахаас татгалзана; -Force дээрээс бичдэг бөгөөд энэ нь үйлдвэрлэлийн зөөврийн компьютер дээр буруу рефлекс, учир нь хэн нэгний гараар тохируулсан бүхнийг чимээгүйхэн хаядаг.

3-р алхам: Итгэмжлэлийн материалыг зөв дамжуул

Нууц үг, урьдчилан хуваалцсан түлхүүрүүд болон EAP блокууд нь эдгээр скрипт ихэвчлэн эвдэрдэг газар. -EapConfigXmlStream нь зам биш, XmlDocument шаарддаг тул эхлээд файлыг уншиж хөрвүүлнэ үү. Мөр өгвөл схемын асуудал мэт харагдах хөрвүүлэлтийн алдаа гарч, хүмүүсийг хэзээ ч буруу байгаагүй XML-ийг дахин бичихэд хүргэдэг.

$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

Тэр XML-ийг блогийн хэсгээс зохиох зүйл биш. Энэ нь EAP аргын төрөл болон дотоод баталгаажуулалтыг нэрлэж, гарц хоёуланг нь өөрийн бодлоготой харьцуулна. Тохирохгүй дотоод арга нь TLS гар барилт дууссаны дараа бүтэлгүйтдэг бөгөөд энэ нь яг буруу нууц үг мэт харагдах боловч тийм биш. XML-ийг гарцыг ажиллуулдаг хүнээс ав, эсвэл аль хэдийн ажиллаж буй профайлаас экспортол.

IKEv2-ийн хувьд гэрчилгээний хагас нь сангаас хайлт юм. -MachineCertificateIssuerFilter гэрчилгээний объектыг авч, Windows үүгээр LocalMachine\My-ээс ашиглах боломжтой клиент гэрчилгээг олдог. Гэрчилгээнд хувийн түлхүүр болон серверийн итгэдэг гинжин хэлхээ хэрэгтэй; аль нэг нь байхгүй бол баталгаажуулалт ашигтай дэлгэрэнгүй мэдээлэлгүйгээр бүтэлгүйтдэг тул эхлээд санг шалгана уу:

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

Нууцыг скрипт файлаас гадна байлга. Командын мөрөнд өгсөн эсвэл .ps1 дотор шатаасан PSK нь транскрипт, хадгалсан сесс, хуваалцсан репозиторт ордог бөгөөд -RememberCredential хэрэглэгчийн итгэмжлэлийг дараа ашиглахаар кэшлэж, нэг удаагийн тестийг байнгын зөвшөөрөл болгоно.

4-р алхам: Хүрээг эхний ажиллагааны өмнө шийд

Мөн cmdlet хоёр өөр утасны дэвтэрт бичдэг. -AllUserConnection-гүй бол профайл таных бөгөөд %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk доор байрлана. Түүнтэй хамт, өндөрлөсөн командын мөрөөс, профайл %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk руу орж, нэвтрэх дэлгэцийг оролцуулан бүх бүртгэлд харагдана.

Хүрээ нь гоёл чимэглэл биш. Бүх хэрэглэгчийн профайл бол үйлчилгээний бүртгэл, төлөвлөсөн ажил эсвэл нэвтрэхийн өмнөх хувилбар ашиглаж болох зүйл; хэрэглэгч тус бүрийн профайл тэдгээр гурванд үл үзэгдэнэ. Объектуудыг ч өөрөөр уншдаг: Get-VpnConnection одоогийн хэрэглэгчийн бичлэгүүдийг жагсаадаг, Get-VpnConnection -AllUserConnection бүх машиныг. Одоо нэгийг сонгоод, дараагийн өөрчлөлтийг засварлах биш, устгаж дахин үүсгэх гэж үзээрэй:

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

5-р алхам: Туннель үнэхээр юу хүргэх ёстойг шалга

Холбогдсон дүрс нь туннель боссоныг л нотолно, өөр юу ч биш. Эхлээд командын мөрнөөс холбогдоод, алдаанууд диалое биш текстээр ирэг, дараа нь Windows юу бүртгэснийг уншина уу:

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

Төлөв одоохон Connected гэж хэлж байхад хэрэглэгчдийн мэдээлдэг хоёр алдаа бол DNS болон чиглүүлэлт юм. Дотоод нэрийг шийдэж, аль сервер хариулсныг шалга; -DnsSuffixгүй профайл төгс туннель хийсэн ч интранетын хайлт бүрд бүтэлгүйтэж болно. Дараа нь өгөгдмөл чиглэлийг хараарай: хуваагдсан туннель унтарсан бол хамгийн бага хэмжигдэхүүнтэй 0.0.0.0/0 чиглэл VPN интерфейс рүү заах ёстой, асаалттай бол зөвхөн таны хүлээж буй префиксүүд. Хоёулаа зөв харагдаж байтал урсгал үхсээр байвал асуудал профайлаас цааш, бодлого эсвэл гарцын шүүлтүүрт байна.

Холболт бүрэн бүтэлгүйтвэл код буцах алхмыг нарийсгана:

  • 691: гарц итгэмжлэлийг татгалзсан. Туннель рүү биш, 3-р алхам руу буц.
  • 809: IKEv2 гар барилт хэзээ ч дуусаагүй. UDP 500 болон 4500, гэрчилгээний итгэлийг шалга.
  • 789: L2TP/IPsec урьдчилан хуваалцсан түлхүүр байхгүй эсвэл буруу.
  • 868: серверийн нэр шийдэгдээгүй. Профайлыг засахын өмнө DNS-ийг зас.

Ажиллаж буй командыг түүний кодчилж буй тохиргооны дэргэд хадгал, дараагийн хүн UI-аас профайлыг урвуу инженерчлэлгүйгээр дахин бүтээх боломжтой болно. Үнэхээр дахин бүтээх бол бичлэгийг устгаж, яг тэр параметрүүдээр дахин үүсгэ; хагас тохируулсан профайлыг тордох нь хуучин чиглэл болон баталгаажуулалтын төлөвийг үлдээдэг. Хэрэв файл хэзээ ч төрөлх байгаагүй бол түүнийг эзэмшдэг клиент руу буц. IKEv2 профайл гэж хувцасласан .ovpn бол импорт биш, дэмжлэгийн тасалбар юм.

Холбоотой нийтлэлүүд