当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

作者:精品下载站 日期:2024-12-14 23:31:07 浏览:15 分类:玩电脑

在 Windows 中使用 PowerShell 管理 VPN 连接


在 Windows 10/11 GUI 中,仅提供用于配置 VPN 连接的轻量级界面,该界面不允许您配置某些 VPN 设置。您可以使用控制面板中的经典 VPN 连接设置界面和设置面板中的现代网络配置应用程序(

ms-settings:network-vpn

用于快速访问设置的 URI 命令)来设置您的 VPN 连接设置。在这篇文章中,我们将了解如何使用 PowerShell 在 Windows 中管理 VPN 连接:如何创建/更改/删除 VPN 连接以及如何连接到 VPN 服务器/从 VPN 服务器断开连接。

[玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

要在 Windows 中创建新的 VPN 连接,请使用 Add-VpnConnection cmdlet。在最简单的情况下,您需要输入连接名称和 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
  • 加密级别 - 加密设置(

    NoEncryption

    ,

    Optional

    ,

    Required

    ,

    Maximum

    ,

    Custom 

  • SplitTunneling - 设置计算机的所有流量是否必须通过 VPN 隧道发送(例如 VPN 适配器设置中的在远程网络上使用默认网关选项)

  • UseWinlogonCredential - 使用当前用户凭据在 VPN 服务器上进行身份验证

  • AllUserConnection - 允许所有计算机用户使用 VPN 连接

  • RememberCredential - 允许使用保存的 VPN 凭据(首次成功连接后,用户名和密码将保存在 Windows 凭据管理器中)

  • PassThru - 允许显示命令输出(建议对所有命令使用)

  • 以下是创建不同类型 VPN 连接的 PowerShell 命令的一些示例。

    • 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:首先,您需要将VPN服务器的根CA导入到计算机证书存储中,并使用证书中指定的VPN服务器的FQDN(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 

      使用自签名证书时,您可以使用 PowerShell 将多个名称 (SAN) 添加到证书。

    • IKEv2:必须先将根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

    [玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

    所有用户可用的 VPN 连接(使用 AllUserConnection 选项创建)显示在网络中心,系统作为所有者。用户的连接将在此处列出域\用户名

    [玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

    共享 VPN 连接保存到文本文件中:

    %ProgramData%\Microsoft\Network\connections\Pbk\rasphone.pbk

    [玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

    要更改现有 VPN 连接的设置,请使用 Set-VpnConnection 命令:

    Set-VpnConnection -Name "VPN_SSTP" -splittunneling $false -PassThru

    如果要更改现有 VPN 连接的 IPsec 选项,请使用 Set-VpnConnectionIpsecConfiguration cmdlet(仅适用于 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

    然后,您将能够在 Windows 凭据管理器中保存 VPN 连接的用户名和密码:

    $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"

    [玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

    要获取所有 VPN 连接的状态:

    Get-Vpnconnection | Select Name, Connectionstatus

    [玩转系统] 在 Windows 中使用 PowerShell 管理 VPN 连接

    以下是一些有用的文章,可解决 Windows 中 VPN 连接的典型问题:

    • VPN 错误:您可能需要更改网络设置

    • VPN 处于活动状态时无法访问互联网

    • 无法连接到 NAT-T 设备后面的 L2TP/IPsec 服务器

    • 通过 VPN 连接的 Windows DNS 解析不起作用

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯