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-ті түзетіңіз.

Жұмыс істейтін пәрменді ол кодтайтын параметрлердің қасында ұстаңыз, келесі адам профильді интерфейстен кері инженерияламай, қайта құра алсын. Егер шынымен қайта құру керек болса, жазбаны жойып, дәл сол параметрлермен қайта жасаңыз; жартылай бапталған профильді жамау ескірген маршруттар мен аутентификация күйін қалдырады. Ал егер файл ешқашан жергілікті болмаған болса, оған ие клиентке қайта оралыңыз. IKEv2 профилі ретінде киіндірілген .ovpn импорт емес, қолдау билеті.

Қатысты мақалалар