ניהול חיבורי VPN באמצעות PowerShell ב- Windows


בממשק המשתמש הגרפי של 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

      - פרוטוקול מנהור שכבה 2/IPsec עם אישור או מפתח משותף מראש

    • SSTP

      - פרוטוקול תיעול שקע מאובטח

  • L2TPPsk — מפתח טרום-שיתוף לאימות (L2TP בלבד). אם האפשרות אינה מוגדרת, נעשה שימוש באישור עבור אימות L2TP

  • AuthenticationMethod - סוג אימות. באפשרותך להשתמש ב:

    Pap

    ,

    Chap

    ,

    MSChapv2

    ,

    Eap

    ,

    MachineCertificate
  • EncryptionLevel - הגדרות הצפנה (

    NoEncryption

    ,

    Optional

    ,

    Required

    ,

    Maximum

    ,

    Custom 

    )

  • SplitTunneling - מגדיר אם כל התעבורה של מחשב חייבת להישלח דרך מנהרת ה-VPN (כמו האפשרות השתמש בשער ברירת מחדל ברשת מרוחקת בהגדרות מתאם ה-VPN)

  • UseWinlogonCredential -שימוש באישורי משתמש נוכחיים כדי לבצע אימות בשרת VPN

  • AllUserConnection - מאפשר שימוש בחיבור VPN לכל משתמשי המחשב

  • RememberCredential - מאפשר שימוש באישורי VPN שמורים (שם משתמש וסיסמה נשמרים במנהל האישורים של Windows לאחר החיבור המוצלח הראשון)

  • 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: קודם כל, עליך לייבא CA שורש של שרת VPN למאגר אישורי המחשב ולהשתמש ב- FQDN של שרת ה- VPN שצוין באישור (CN — Common Name, או Subject Alternative Name) ככתובתו:

    Add-VpnConnection -Name "VPN_SSTP" -ServerAddress "vpn.a-d.site" -TunnelType "SSTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThru 

    בעת שימוש באישורים בחתימה עצמית, באפשרותך להוסיף שמות מרובים (SAN) לאישור באמצעות PowerShell.

  • IKEv2: תחילה עליך לייבא את רשות האישורים הבסיסית למאגר אישורי הבסיס המהימנים של 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) מוצגים במרכז הרשת עם מערכת כבעלים. לחיבור של המשתמש יופיע domain\username המופיע כאן.

חיבורי 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 (באפשרותך גם להתקין מודול PowerShell במצב לא מקוון):

Install-Module -Name VPNCredentialsHelper

לאחר מכן תוכל לשמור שם משתמש וסיסמה עבור חיבור ה- VPN שלך במנהל האישורים של Windows:

$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 בווינדוס:

  • שגיאת VPN: ייתכן שיהיה עליך לשנות הגדרות רשת

  • אין גישה לאינטרנט כאשר ה-VPN פעיל

  • לא ניתן להתחבר לשרת L2TP/IPsec מאחורי התקן NAT-T

  • רזולוציית DNS של Windows באמצעות חיבור VPN אינה פועלת