Управление VPN подключениями с помощью PowerShell

Управление VPN подключениями с помощью PowerShell

В Windows 10/11 используется максимально упрощенные графический интерфейс настройки VPN подключений. Чтобы задать специфические настройки для VPN подключения приходится использовать как классический интерфейс настройки VPN подключения в панели управления, так и современное приложение настройки сети в панели Параметры (команда
ms-settings:network-vpn
для быстрого доступа к настройкам). В этой статье мы посмотрим на особенности управления VPN-подключениями в Windows с помощью PowerShell: рассмотрим, как создать создать/изменить/удалить VPN подключение и подключится/отключиться к VPN серверу.

 

d183d0bfd180d0b0d0b2d0bbd0b5d0bdd0b8d0b5 vpn d0bfd0bed0b4d0bad0bbd18ed187d0b5d0bdd0b8d18fd0bcd0b8 d181 d0bfd0bed0bcd0bed189d18cd18e powers 65d21a2c9cde2

Для создания нового VPN подключения в Windows используется командлет Add-VpnConnection. В самом простом случае для создания нового VPN подключения нужно указать его имя и адрес VPN сервера.

Add-VpnConnection -Name "WorkVPN" -ServerAddress "vpn.winitpro.ru” -PassThru

Чтобы задать кастомные настройки для VPN подключения, используйся следующие опции (наиболее распространённые):

  • TunnelType – тип VPN туннеля. Доступны следующие варианты:
    • Automatic
      – Windows сама пытается определить тип VPN туннеля
    • IKEv2
      — Internet Key Exchange
    • PPTP
      – Point to Point Tunneling Protocol
    • L2TP
      – Layer 2 Tunneling Protocol /IPsec с сертификатом или общим ключом (Pre-share key)
    • SSTP
      – Secure Socket Tunneling Protocol
  • L2TPPsk — предварительный общий ключ для аутентификации (только для L2TP). Если этот параметр не указан, для L2TP аутентификации используется сертификат;
  • AuthenticationMethod – тип аутентификации. Возможно использовать:
    Pap, Chap, MSChapv2, Eap, MachineCertificate
    ;
  • EncryptionLevel – настройки шифрования (
    NoEncryption, Optional, Required, Maximum, Custom
    );
  • SplitTunneling – нужно ли заворачивать весь трафик компьютера в VPN туннель (аналогично опции
    Use default gateway on remote network
    в настройках параметра VPN адаптера);
  • UseWinlogonCredential – использовать учетные данные текущего пользователя для аутентификации на VPN сервере;
  • AllUserConnection – разрешить использовать VPN подключение для всех пользователей компьютера;
  • RememberCredential – разрешить сохранять учетные данные для VPN подключения (учетная запись и пароль сохраняются в диспетчер учетных данных Windows после первого успешного подключения);
  • PassThru – параметр позволяет вывести на экран результаты команды (рекомендуем использовать во всех командах).

Ниже приведем несколько примеров PowerShell команд для создания разных типов VPN подключений.

  • L2TP/IPsec:
    Add-VpnConnection -Name "WorkVPN_L2TP" -ServerAddress "vpn.winitpro.ru" -TunnelType L2TP -L2tpPsk "str0ngSharedKey2" -Force -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -UseWinlogonCredential -RememberCredential -AllUserConnection –PassThru
  • PPTP:
    Add-VpnConnection -Name "WorkVPN_PPTP" -ServerAddress "vpn.winitpro.ru" TunnelType "PPTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -SplitTunneling -PassThru
  • SSTP: необходимо сначала импортировать в хранилище сертификатов компьютера корневой CA VPN сервера, и использовать в качестве адреса FQDN VPN сервера, которое указано в сертификате (CN — Common Name, или в Subject Alternative Name)
    Add-VpnConnection -Name "WorkVPN_SSTP" -ServerAddress "vpn.winitpro.ru" -TunnelType "SSTP" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThru
  • IKEv2:нужно предварительно импортировать корневой CA в хранилище доверенных корневых сертификатов Windows, а сертификат компьютера в личные сертификаты:

    Import-PfxCertificate -FilePath $comp_certificate -CertStoreLocation Cert:LocalMachineMy -Password $password
    Import-Certificate -FilePath $ca_cert -CertStoreLocation Cert:LocalMachineRoot
    Add-VpnConnection -Name "WorkVPN_IKEv2" -ServerAddress "vpn.winitpro.ru" -TunnelType Ikev2 -EncryptionLevel "Maximum" -AuthenticationMethod MachineCertificate -SplitTunneling $True -PassThru

Add-VpnConnection - создать VPN подключение с помощью PowerShell

Подключения, доступные для всех пользователей (созданные с параметром
AllUserConnection
), отображаются в панели управления сетями, а в качестве Owner указана
System
. У подключения пользователя здесь будет указано
domainusername
.

список VPN подключений в панели управления сетями и общим доступом

Общие VPN подключения сохраняются в текстовый файл
%ProgramData%MicrosoftNetworkconnectionsPbkrasphone.pbk
.

файл rasphone.pbk содержит список общих VPN подключений в Windows 11

Чтобы изменить параметры существующего VPN подключения, используется команда Set-VpnConnection:

Set-VpnConnection -Name "WorkVPN_SSTP" –splittunneling $false –PassThru

Если вам нужно изменить параметры IPsec для существующего VPN подключения используется командлет Set-VpnConnectionIpsecConfiguration (только для IKEv2 и L2TP VPN)

Set-VpnConnectionIPsecConfiguration -ConnectionName "WorkVPN_IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -DHGroup Group14 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup PFS2048 –PassThru

Для принудительного сохранения имени и пароля для VPN подключения можно использовать модуль VPNCredentialsHelper.

Установите модуль на компьютер из PowerShellGallery (также можно установить PowerShell модуль в офлайн режиме):

Install-Module -Name VPNCredentialsHelper

После этого вы можете сохранить в Windows Credential Manager определенное имя и пароль для вашего VPN подключения:

$user = "vpnusername"
$plainpass = "vpn_password"
Set-VpnConnectionUsernamePassword -connectionname "WorkVPN_SSTP" -username $user -password $plainpass

В современных версиях Windows вы можете динамически добавлять в таблицу маршрутизации маршруты при подключении к VPN.

Add-VpnConnectionRoute -ConnectionName "workVPN" -DestinationPrefix 192.168.111.0/24 –PassThru

Такой маршрут будет активирован только после успешного подключения к серверу VPN.

Вывести список всех VPN подключений, доступных пользователю:

Get-VpnConnection

Для удаления VPN подключения, выполните:

Remove-VpnConnection -Name "WorkVPN_SSTP"

Для подключения к VPN серверу с ранее настроеннм профилем VPN, выполните:

rasdial "WorkVPN_SSTP"

rasdial подключиться к VPN серверу из командной строки Windows

Вывести статусы всех VPN подключений:

Get-Vpnconnection | Select Name, Connectionstatus

Get-Vpnconnection список активных VPN подключений

Несколько полезных статей для решения распространенных проблем с VPN подключениями в Windows:

Windows 10
Управление VPN подключениями с помощью PowerShell