ค้นหาเว็บไซต์

จัดการการเชื่อมต่อ 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 -PassThru
  • PPTP:

    Add-VpnConnection -Name "VPN_PPTP" -ServerAddress "vpn.a-d.site" TunnelType "PPTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -SplitTunneling -PassThru
  • SSTP: ก่อนอื่น คุณต้องนำเข้า 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 ไม่ทำงาน

บทความที่เกี่ยวข้อง