จัดการการเชื่อมต่อ VPN ด้วย PowerShell ใน Windows
ใน GUI ของ Windows 10/11 จะมีเฉพาะส่วนต่อประสานขนาดเล็กสำหรับกำหนดค่าการเชื่อมต่อ VPN เท่านั้นที่ใช้งานได้ ซึ่งไม่อนุญาตให้คุณกำหนดการตั้งค่า VPN บางอย่าง คุณสามารถใช้ทั้งอินเทอร์เฟซการตั้งค่าการเชื่อมต่อ VPN แบบคลาสสิกในแผงควบคุมและแอปการกำหนดค่าเครือข่ายสมัยใหม่ในแผงการตั้งค่า (ไฟล์
ms-settings:network-vpnคำสั่ง URI สำหรับการตั้งค่าการเข้าถึงด่วน) เพื่อตั้งค่าการเชื่อมต่อ VPN ของคุณ ในโพสต์นี้ เราจะดูวิธีจัดการการเชื่อมต่อ VPN ใน Windows โดยใช้ PowerShell: วิธีสร้าง/เปลี่ยน/ลบการเชื่อมต่อ VPN และเชื่อมต่อ/ตัดการเชื่อมต่อจากเซิร์ฟเวอร์ VPN
หากต้องการสร้างการเชื่อมต่อ VPN ใหม่ใน Windows ให้ใช้ cmdlet Add-VpnConnection ในกรณีที่ง่ายที่สุด คุณต้องป้อนชื่อการเชื่อมต่อและที่อยู่เซิร์ฟเวอร์ VPN
Add-VpnConnection -Name VPNname1 -ServerAddress "vpn.a-d.site” -PassThruในการกำหนดการตั้งค่าแบบกำหนดเองสำหรับการเชื่อมต่อ VPN ให้ใช้ตัวเลือกต่อไปนี้ (ตัวเลือกยอดนิยม):
-
TunnelType - ประเภทอุโมงค์ VPN มีประเภทดังต่อไปนี้:
Automatic- Windows พยายามตรวจหาประเภทอุโมงค์ VPN เอง
IKEv2— การแลกเปลี่ยนคีย์อินเทอร์เน็ต
PPTP- โปรโตคอลการขุดอุโมงค์แบบจุดต่อจุด
L2TP- Layer 2 Tunneling Protocol /IPsec พร้อมใบรับรองหรือ Pre-shared key
SSTP- Secure Socket Tunneling Protocol
L2TPPsk — คีย์ที่ใช้ร่วมกันล่วงหน้าสำหรับการตรวจสอบสิทธิ์ (L2TP เท่านั้น) หากไม่ได้ตั้งค่าตัวเลือกไว้ ใบรับรองจะถูกใช้สำหรับการรับรองความถูกต้อง L2TP
AuthenticationMethod - ประเภทการตรวจสอบสิทธิ์ คุณสามารถใช้ได้:
Pap,
Chap,
MSChapv2
,
Eap,
MachineCertificateระดับการเข้ารหัส - การตั้งค่าการเข้ารหัส (
NoEncryption,
Optional,
Required,
Maximum,
Custom )
SplitTunneling - กำหนดว่าจะต้องส่งทราฟฟิกทั้งหมดของคอมพิวเตอร์ผ่านอุโมงค์ VPN หรือไม่ (เช่น ตัวเลือก ใช้เกตเวย์เริ่มต้นบนเครือข่ายระยะไกลในการตั้งค่าอะแดปเตอร์ VPN)
UseWinlogonCredential - ใช้ข้อมูลรับรองผู้ใช้ปัจจุบันเพื่อตรวจสอบสิทธิ์บนเซิร์ฟเวอร์ VPN
AllUserConnection - อนุญาตให้ใช้การเชื่อมต่อ VPN สำหรับผู้ใช้คอมพิวเตอร์ทั้งหมด
RememberCredential - อนุญาตให้ใช้ข้อมูลรับรอง VPN ที่บันทึกไว้ (ชื่อผู้ใช้และรหัสผ่านจะถูกบันทึกไว้ใน Windows Credential Manager หลังจากการเชื่อมต่อครั้งแรกสำเร็จ)
PassThru - อนุญาตให้แสดงเอาต์พุตคำสั่ง (แนะนำให้ใช้กับทุกคำสั่ง)
ต่อไปนี้คือตัวอย่างบางส่วนของคำสั่ง PowerShell เพื่อสร้างการเชื่อมต่อ VPN ประเภทต่างๆ
L2TP/IPsec:
Add-VpnConnection -Name "VPN_L2TP" -ServerAddress "vpn.a-d.site" -TunnelType L2TP -L2tpPsk "My1pre-SharedKey2" -Force -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -UseWinlogonCredential -RememberCredential -AllUserConnection -PassThruPPTP:
Add-VpnConnection -Name "VPN_PPTP" -ServerAddress "vpn.a-d.site" TunnelType "PPTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -SplitTunneling -PassThruSSTP: ก่อนอื่น คุณต้องนำเข้า root CA ของเซิร์ฟเวอร์ VPN ไปยังที่เก็บใบรับรองของคอมพิวเตอร์ และใช้ FQDN ของเซิร์ฟเวอร์ VPN ที่ระบุในใบรับรอง (CN — Common Name หรือ Subject Alternative ชื่อ) เป็นที่อยู่:
Add-VpnConnection -Name "VPN_SSTP" -ServerAddress "vpn.a-d.site" -TunnelType "SSTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThruเมื่อใช้ใบรับรองที่ลงนามเอง คุณสามารถเพิ่มหลายชื่อ (SAN) ให้กับใบรับรองโดยใช้ PowerShell
IKEv2: ก่อนอื่นคุณต้องนำเข้า root CA ไปยังที่เก็บใบรับรองหลักที่เชื่อถือได้ของ Windows และนำเข้าใบรับรองคอมพิวเตอร์ไปยังที่เก็บใบรับรองส่วนบุคคล:
Import-PfxCertificate -FilePath $comp_certificate -CertStoreLocation Cert:\LocalMachine\My\ -Password $password Import-Certificate -FilePath $ca_cert -CertStoreLocation Cert:\LocalMachine\Root\ Add-VpnConnection -Name "VPN_IKEv2" -ServerAddress "vpn.a-d.site" -TunnelType Ikev2 -EncryptionLevel "Maximum" -AuthenticationMethod MachineCertificate -SplitTunneling $True -PassThru
การเชื่อมต่อ VPN สำหรับผู้ใช้ทั้งหมด (สร้างโดยใช้ตัวเลือก AllUserConnection) จะแสดงใน Network Center โดยมีระบบเป็น เจ้าของ การเชื่อมต่อของผู้ใช้จะมี โดเมน\ชื่อผู้ใช้ แสดงอยู่ที่นี่
การเชื่อมต่อ VPN ที่ใช้ร่วมกันจะถูกบันทึกเป็นไฟล์ข้อความ:
%ProgramData%\Microsoft\Network\connections\Pbk\rasphone.pbkหากต้องการเปลี่ยนการตั้งค่าของการเชื่อมต่อ VPN ที่มีอยู่ ให้ใช้คำสั่ง Set-VpnConnection:
Set-VpnConnection -Name "VPN_SSTP" -splittunneling $false -PassThruหากคุณต้องการเปลี่ยนตัวเลือก IPsec สำหรับการเชื่อมต่อ VPN ที่มีอยู่ ให้ใช้ cmdlet Set-VpnConnectionIpsecConfiguration (สำหรับ IKEv2 หรือ L2TP VPN เท่านั้น):
Set-VpnConnectionIPsecConfiguration -ConnectionName "VPN_IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -DHGroup Group14 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup PFS2048 -PassThruคุณสามารถใช้โมดูล VPNCredentialsHelper เพื่อบันทึกข้อมูลประจำตัวสำหรับการเชื่อมต่อ VPN
ติดตั้งโมดูลบนคอมพิวเตอร์ของคุณจาก PowerShell Gallery (คุณยังสามารถติดตั้งโมดูล PowerShell แบบออฟไลน์ได้ด้วย):
Install-Module -Name VPNCredentialsHelperจากนั้น คุณจะสามารถบันทึกชื่อผู้ใช้และรหัสผ่านสำหรับการเชื่อมต่อ VPN ของคุณใน Windows Credential Manager:
$user = "vpn_username1"
$plainpass = "vpn_password1"
Set-VpnConnectionUsernamePassword -connectionname "VPN_SSTP" -username $user -password $plainpassในเวอร์ชัน Windows ที่ทันสมัย คุณสามารถเพิ่มเส้นทางแบบคงที่ไปยังตารางเส้นทางได้แบบไดนามิกเมื่อคุณเชื่อมต่อกับ VPN
Add-VpnConnectionRoute -ConnectionName "VPN" -DestinationPrefix 192.168.31.0/24 -PassThruเส้นทางจะเปิดใช้งานหลังจากเชื่อมต่อกับเซิร์ฟเวอร์ VPN สำเร็จเท่านั้น
หากต้องการแสดงรายการการเชื่อมต่อ VPN ทั้งหมดที่ผู้ใช้ใช้ได้:
Get-VpnConnectionหากต้องการลบการเชื่อมต่อ VPN:
Remove-VpnConnection -Name "VPN_SSTP"ในการเชื่อมต่อกับเซิร์ฟเวอร์ VPN โดยใช้โปรไฟล์ VPN ที่กำหนดค่าไว้ก่อนหน้านี้:
rasdial "VPN_SSTP"วิธีรับสถานะของการเชื่อมต่อ VPN ทั้งหมด:
Get-Vpnconnection | Select Name, Connectionstatusต่อไปนี้เป็นบทความที่มีประโยชน์ในการแก้ปัญหาทั่วไปเกี่ยวกับการเชื่อมต่อ VPN ใน Windows:
ข้อผิดพลาดของ VPN: คุณอาจต้องเปลี่ยนการตั้งค่าเครือข่าย
ไม่มีการเข้าถึงอินเทอร์เน็ตเมื่อใช้งาน VPN
ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ L2TP/IPsec หลังอุปกรณ์ NAT-T
การแก้ไข Windows DNS ผ่านการเชื่อมต่อ VPN ไม่ทำงาน





