PowerShell'де Add-VpnConnection менен VPN профилин импорттоо
Add-VpnConnection Windows'тун жергиликтүү профилдерин гана түзөт. Туннель менен аутентификациянын жупун шлюзга дал келтириңиз, камтылышын атайын белгилеңиз, анан маршруттарды жана DNS'ти текшериңиз.
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 -AllUserConnection5-кадам: Туннель чындап эмнени жеткириши керектигин текшериңиз
Туташкан белги туннелдин көтөрүлгөнүн далилдейт, андан ары эч нерсени эмес. Адегенде буйрук сабынан туташыңыз, каталар диалог эмес, текст болуп келсин, анан 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 импорт эмес, колдоо билети.