Скрипт создания vpn подключения windows 10

Уровень сложности
Простой

Время на прочтение
3 мин

Количество просмотров 9.4K

Дистанционная работа в компаниях все больше становится распространённой в последнее время. Системным администраторам нужно организовывать на домашних компьютерах пользователей подключение по VPN к сети компании. Время настройки занимает от 10 минут и это если все пойдет гладко, пользователь сообразит как скачать Any Desk или какой другой клиент для удаленного подключения, потом факт стабильного интернета играет роль, ну и конечно же настройка самого VPN подключения — вбиваем адрес, метод шифрования, логин, пароль, ключ.

А если пользователей 10 и более? Это уже нужно потратить больше времени, а если им всем нужно утром срочно все настроить? Тут немного подумав, я решил написать достаточно простой, но в то же время полезный скрипт на Power Shell а потом упаковал его в файлик .exe.

Прошу строго не судить, надеюсь материал кому-нибудь пригодится.

Процесс создания скрипта с комментариями:

Повышаем привилегии до администратора:

if (!(net session)) {$path =  "& '" + $myinvocation.mycommand.definition + "'" ; Start-Process powershell -Verb runAs -ArgumentList $path ; exit}

Разрешаем выполнение локальных скриптов:

Set-ExecutionPolicy RemoteSigned -Force

Установить переменные для VPN-подключения:

# Имя подключения
$VPNconnectionSSTP = "VPN_SSTP"
$VPNconnectionL2TP = "VPN_L2TP"

# тип подключения       
$VPNtypeSSTP = "sstp"                           
$VPNtypeL2TP ="l2tp"

# ip адрес или доменное имя                           
$SRVaddressSSTP = "ip_addr"
$SRVaddressL2TP = "ip_addr"

# DNS суффикс
$dnssuf = "domain.local"

# ключ l2tp
$l2tp_key = "ключ"

# метод аутентификации
$auth_method = "MSChapv2"

# сертификат .cer открываем через блокнот и копируем от начала до конца
$vpn_cert = "-----BEGIN CERTIFICATE-----
сам сертификат (скопировать содержимое открыв его через текстовый редактор)
-----END CERTIFICATE-----"

Сохраняем сертификат в директории пользователя:

$vpn_cert | Out-File -FilePath "$env:HOMEPATH\vpn_cert.cer" -Encoding utf8

Создаем SSTP-соединения SSTP и L2TP соответственно:

Add-VpnConnection -Name $VPNconnectionSSTP -ServerAddress $SRVaddressSSTP -TunnelType $VPNtypeSSTP -AuthenticationMethod $auth_method -EncryptionLevel "Optional" -DnsSuffix $dnssuf -SplitTunneling -IdleDisconnectSeconds 900 -RememberCredential -AllUserConnection

Add-VpnConnection -Name $VPNconnectionL2TP -ServerAddress $SRVaddressL2TP -TunnelType $VPNtypeL2TP -AuthenticationMethod $auth_method -L2tpPsk $l2tp_key -EncryptionLevel "Optional" -DnsSuffix $dnssuf  -SplitTunneling -IdleDisconnectSeconds 900 -RememberCredential -AllUserConnection

Устанавливаем сертификат в доверенные корневые сертификаты пользователя:

certutil -f -addstore root "$env:HOMEPATH\vpn_cert.cer"

Возвращаем политику выполнения скриптов по умолчанию

Set-ExecutionPolicy Default –Force

Все! Скрипт готов. Сохраняем его с расширением .PS1

P.S.Можно запускать так и не менять executionpolicy на машине (дополнение от @Nday001):

powrshell -f "path\to\script.ps1" -executionpolicy bypass

Также можем сделать из него EXE файлик для удобства:

Программа называется PS2EXE есть на гите

Также было предложено пользователем Artem @pr0l проверять наличие созданного vpn соединения на случай смены сертификата, ключа шифрования или какого другого важного параметра.

if (Get-VpnConnection -Name $vpn_name -AllUserConnection -ErrorAction Ignore -Verbose)
{ Remove-VpnConnection -Name $vpn_name -AllUserConnection -ErrorAction Ignore -Verbose -Force

# Удаляем сертификат
Remove-Item -Path HKLM:\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\32323F22E9065D0157DE9B902020DA41A12B4E53 -ErrorAction Ignore -Verbose
}
else {}

# дальше ниже создаем новое соединение

Еще дополнение от @SlavaHU если кому понадобится добавления маршрута в подсеть:

$VPNconnectionL2TPDestPrefix = "192.168.6.0/24"

Add-VpnConnectionRoute -ConnectionName $VPNconnectionL2TP -DestinationPrefix $VPNconnectionL2TPDestPrefix

powershell-vpnconnection-management-000.pngУправление VPN-подключениями в последних версиях Windows трудно назвать понятным и удобным. Часть настроек производится через современное приложение Параметры, другая часть, как и прежде, находится в Панели управления. Какие-то шаги к упорядочению этой ситуации сделаны только в Windows 11, но практического опыта работы с ней еще недостаточно. Но есть гораздо более простой и удобный способ управления VPN-соединениями — это PowerShell, его можно использовать как в интерактивном режиме, так и для написания скриптов автоматизации, которые будут производить настройку подключения в один клик.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Тема VPN является номером один для системных администраторов второй год, сложная эпидемиологическая обстановка диктует свои условия и требует обеспечить простой и безопасный способ удаленной работы для пользователей. И если с созданием VPN-сервера особых проблем нет — на выбор большое количество протоколов и технологий, то с клиентскими устройствами все намного сложнее.

Как мы уже говорили выше, самостоятельно создать VPN-подключение, не совершив при этом ошибок, для обычного пользователя будет достаточно сложной задачей, что потребует от администратора либо длительных консультаций в телефонном режиме, либо самостоятельной настройки через удаленное подключение. Да и в повседневной работе ввести одну команду гораздо быстрее и удобнее, нежели прокликивать несколько форм в разных местах.

Для управления VPN-соединениями мы будем использовать PowerShell, данные возможности поддерживаются начиная с Windows 8 и Windows Server 2012.

Создание VPN-соединения

Для того, чтобы создать новое VPN-подключение используется командлет Add-VpnConnection, использовать который достаточно просто, обязательных параметров всего два: имя подключения и адрес сервера. Но это, конечно же, не наш метод, если возможности позволяют выполнить тонкую настройку, а они позволяют, то ее нужно выполнить. Поэтому давайте изучим доступные параметры, которые могут нам пригодиться:

  • Name — имя подключения, произвольная строка
  • ServerAddress — адрес VPN сервера, можно указать как IP, так и FQDN
  • TunnelType — тип туннеля, доступные значения: Pptp, L2tp, Sstp, Ikev2, Automatic
  • EncryptionLevel — уровень шифрования данных, можно использовать: NoEncryption, Optional, Required, Maximum
  • AuthenticationMethod — способ проверки подлинности, доступно: Pap, Chap, MSChapv2, Eap, MachineCertificate
  • L2tpPsk — только для L2TP — предварительный общий ключ
  • SplitTunneling — отключает перенаправление всего трафика в туннель, аналогично снятию флага Использовать основной шлюз в удаленной сети
  • RememberCredential — запоминать учетные данные пользователя
  • UseWinlogonCredential — использовать для VPN-подключения учетные данные для входа в систему
  • AllUserConnection — создать подключение для всех пользователей

Также нам пригодятся два служебных параметра:

  • PassThru — выводит на экран результат выполнения команды
  • Force — подавляет вывод запросов и некритичных ошибок, в запросах применяется действие по умолчанию

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

PPTP

Устаревший и небезопасный протокол, то один из самых быстрых типов подключения, все еще продолжает использоваться там, где не предъявляются высокие требования к защите данных, либо для этого используются иные механизмы, например, SSL/TLS. В качестве способа аутентификации следует использовать MS-CHAP v2, а уровень шифрования не ниже Required, что соответствует параметру Обязательное (отключиться если нет шифрования) в графическом интерфейсе.

Add-VpnConnection -Name "PPTP PS" -ServerAddress "192.168.3.107" -TunnelType "Pptp" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThru 

Также мы добавили опции для отключения перенаправления трафика в туннель и разрешили запоминать учетные данные.

powershell-vpnconnection-management-001.pngЕсли вы указали параметр PassThru, то на экране появятся свойства созданного подключения, как на рисунке выше, без указания этого параметра вывод у команды отсутствуют.

L2TP/IPsec

В качестве L2TP будем рассматривать подключение с общим ключом, также используем MS-CHAP v2 и уровень шифрования Required и выше.

Add-VpnConnection -Name "L2TP PS" -ServerAddress "192.168.3.107" -TunnelType "L2tp" -L2tpPsk "MySharedKey" -Force -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -SplitTunneling -RememberCredential -PassThru

powershell-vpnconnection-management-002.pngОбратите внимание, что в данной команде мы использовали ключ Force, чтобы предотвратить появление запроса о том, что подтверждаем ли мы передачу общего ключа в открытой форме. Также, как и с PPTP-подключением мы отключили шлюз в VPN-сети и разрешили запоминать учетные данные.

SSTP

Для использования SSTP вам потребуется импортировать корневой CA-сертификат центра сертификации, выдавшего сертификат серверу в локальное хранилище компьютера, а также использовать в качестве адреса сервера FQDN-имя, указанное в его сертификате. В остальном все несложно, соединение создается уже привычной командой:

Add-VpnConnection -Name "SSTP PS" -ServerAddress "sstp.interface31.lab" -TunnelType "Sstp" -EncryptionLevel "Required" -AuthenticationMethod MSChapv2 -RememberCredential -SplitTunneling -PassThru

powershell-vpnconnection-management-003.pngКомментировать здесь мы ничего не будем, если вы внимательно читали статью, то все параметры будут вам понятны.

IKEv2

А вот здесь уже интереснее, мы будем настраивать соединение с аутентификацией по сертификатам. Здесь вам также потребуется импортировать сертификаты в хранилище компьютера: сертификат CA и сертификат пользователя. А для настройки соединения используем следующую команду:

Add-VpnConnection -Name "IKEv2 PS" -ServerAddress "vpn.interface31.lab" -TunnelType "Ikev2" -EncryptionLevel "Required" -AuthenticationMethod MachineCertificate -SplitTunneling -PassThru 

powershell-vpnconnection-management-004.png

Обращает внимание новый метод аутентификации MachineCertificate и отсутствие параметра RememberCredential, в данном случае пользователю не нужно вводить никаких учетных данных, поэтому и запоминать тут нечего. В качестве имени сервера используем FQDN или IP, в зависимости от того, что указано в Common Name сертификата сервера.

Изменение параметров VPN-соединения

Создавать подключения мы уже научились, но как быть, когда нам требуется что-то в них изменить? На помощь придёт командлет Set-VpnConnection, он использует все те же параметры что и Add-VpnConnection и позволяет изменить любой из них, для указания подключения используется параметр Name. Скажем, мы хотим изменить адрес сервера для PPTP подключения, нет ничего проще, указываем имя подключения, требуемый параметр и его новое значение:

Set-VpnConnection -Name "PPTP PS" -ServerAddress "vpn.interface31.lab"

Немного сложнее с параметрами, использующими булево значение, такими как RememberCredential и аналогичными. Командлет Add-VpnConnection считал, что если параметр указан, то его значение — True или Истина (логическая 1), иначе — False или Ложь (логический 0). С Set-VpnConnection такой фокус не проходит, если мы просто укажем параметр, то он не поймет, чего именно мы от него хотим и выдаст сообщение об ошибке. Значение параметра потребуется указать явно.

Например, включим разрешение запоминать учетные данные:

Set-VpnConnection -Name "PPTP PS" -RememberCredential $True

Для отключения введите:

Set-VpnConnection -Name "PPTP PS" -RememberCredential $False

powershell-vpnconnection-management-005.pngВ тоже время служебные параметры PassThru и Force можно просто указывать без ввода значения, само их наличие воспринимается как Истина.

Получение информации о VPN-соединении

Для получения информации о настроенных VPN-соединениях мы можем использовать командлет Get-VpnConnection, из параметров он поддерживает только Name и AllUserConnection, что позволяет отобразить параметры конкретного соединения и уточнить, что мы хотим видеть соединения всех пользователей, а не только текущего.

Чтобы увидеть все VPN-соединения выполните:

Get-VpnConnection

Для получения данных о конкретном соединении:

Get-VpnConnection -Name "PPTP PS"

powershell-vpnconnection-management-006.pngВозможностей у командлета немного, но со своей работой он справляется.

Удаление VPN-соединения

Для удаления соединения используется командлет, ему достаточно передать единственный параметр — Name, также можно дополнительно указать Force, если вы не хотите подтверждать запрос об удалении соединения.

Remove-VpnConnection -Name "PPTP PS"

powershell-vpnconnection-management-007.pngНо будьте осторожны и используйте Force только тогда, когда вы точно знаете какое соединение хотите удалить. Не рекомендуем использовать этот параметр интерактивно, так как есть риск, что вы можете указать не то соединение, все-таки запрос — лишний повод остановиться и подумать.

Добавление маршрута при подключении

Автоматическое добавление маршрутов при установлении VPN-подключения — больная тема для пользователей Windows, но PowerShell позволяет решить и этот вопрос, для этих целей есть отдельный командлет Add-VpnConnectionRoute, он весьма прост в использовании, вам нужно указать имя соединения в параметре ConnectionName и сеть назначения в параметре DestinationPrefix.

Например, добавим маршрут к сети 192.168.111.0/24 через подключение L2TP PS:

Add-VpnConnectionRoute -ConnectionName "L2TP PS2" -DestinationPrefix 192.168.111.0/24 -PassThru

powershell-vpnconnection-management-008.pngЕсли маршрутов нужно несколько — выполняем команду несколько раз. Для удаления маршрутов используем командлет Remove-VpnConnectionRoute с точно таким же синтаксисом. Более подробно об управлении маршрутами можете прочитать в нашей статье: Автоматическое добавление маршрутов для VPN-соединения в Windows.

Автоматизация создания VPN-соединения

Для автоматического создания соединения важно чтобы конечный пользователь совершал минимум необходимых действий. В целях безопасности PowerShell скрипты нельзя запустить двойным кликом, поэтому будем использовать старый добрый CMD, в котором уже будем запускать PS и передавать ему нужные команды.

Ниже пример простого командного файла, который создает VPN-соединение и прописывает маршрут для него:

powershell -executionpolicy bypass -command "Add-VpnConnection -Name 'L2TP PS2' -ServerAddress '192.168.3.107' -TunnelType 'L2tp' -L2tpPsk 'MySharedKey' -Force -EncryptionLevel 'Required' -AuthenticationMethod MSChapv2 -SplitTunneling -RememberCredential"
powershell -executionpolicy bypass -command "Add-VpnConnectionRoute -ConnectionName 'L2TP PS2' -DestinationPrefix 192.168.111.101/32"

Обратите внимание, что команда полностью берется в двойные кавычки, а все двойные кавычки внутри команды заменены на одинарные. Данное содержимое вносим в Блокнот и сохраняем с расширением .bat или .cmd, для создания подключения не требуется повышения прав.

Что будет, если пользователь запустит командный файл повторно? Ничего страшного, он выдаст сообщение, что соединение с таким именем уже существует и завершит работу.

powershell-vpnconnection-management-009.pngЕсли вам нужно внести какие-либо изменения в параметры подключения, вы точно также можете создать новый командный файл, в котором будете использовать командлет Set-VpnConnection.

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

На просторах интернета имеется большое количество информации на тему виртуальных частных сетей.Однако очень мало статей, как создать VPN соединение автоматичеки (скриптом). Можно найти как это сделать в UNIX. Мы же опишем как это сделать в Windows, на примере Windows 7. Такой вопрос может встать перед системным администратором (например, если нужно сделать одинаковые настройки VPN соединения на нескольких компьютерах). В других версиях ОС Windows всё делается по аналогии и опытному человеку не составит труда разобраться. Рядовой пользователь может озадачиться данным вопросом с малой вероятностью, поэтому мы пока не будем описывать данный процесс для других операционных систем. Однако постараемся расписать каждый шаг:

  1. Ручное создание соединения через интерфейс.
  2. Настройка использования шлюза (как компьютер будет ходить в интернет, через VPN или минуя его).
  3. Автоматизация подключения уже настроенного соединения.
  4. Автоматизация создания нового подключения.

Cоздание соединения через интерфейс

Предполагаем, что где-то имеется сервер виртуальной частной сети и нам известны параметры для подключения к нему (адрес, логин и пароль). Заходим: Пуск -> Панель управления -> Центр управления сетями и общим доступом. В разделе Изменение сетевых параметров, щелкнем по Настройка нового подключения или сети. Откроется окно Установка подключения или сети, где будет предложено выбрать вариант. Щелкаем по Подключение к рабочему месту Настройка телефонного или VPN-подключения к рабочему месту и жмём Далее.

Если уже имеются другие настройки, на следующем шаге будет предложено выбрать что-то из них или создать новое. Выбираем создать новое. На следующем шаге выбираем Использовать моё подключение к Интернету.

В появившемся окне вводим: Интерент-адрес — адрес VPN сревера (IP или доменное имя), Имя местоназначения — любое, оно будет отображаться в списке ваших сетей (если планируется дальнейшая автоматизация процессов, рекомендуем использовать в названии только латиницу и/или цифры.

На следующем шаге вводим пользователя и пароль, а так же выбираем запомнить пароль или нет.

По завершению произойдет попытка соедениться, и если всё указано верно коеенкт произойдет.

Если вам известен протокол, по которум работет ваш сервер, рекомендуем настроить его принудительно, это ускорит процесс подключения. Необходимо отключить ваш VPN: в правом нижнем углу (в трее) раскрываем список сетей, на нашей правой кнопкой мыши -> отключить.

Заходим: Пуск -> Панель управления -> Центр управления сетями и общим доступом -> Изменения параметров адаптера. На нашей сети правой кнопкой мыши -> Свойства. Закладка Безопасность. И выбираем Тип VPN. Если этого не сделать, каждый раз будут попытки соедениться по каждому из протоколов, пока не будет успешной.

Настройка использования шлюза

После типовой настройки, описанной в предыдущем пункте, весь ваш интрнет трафик пойдет через созданный канал, т.е. через сервер. Если сервер имеет интернет канал с пропускной способностью меньше чем у вас, или он прилично нагружен, возможно ощутить замедление скорости доступа в глобальную сеть. Так же, на сайтах или сервисах на которые вы пойдете будет светиться IP адрес сервера, а не ваш. Иногда такое не подходит и есть необходимость, чтобы светился ваш IP адрес. В таком случае необходимо произвести настройку шлюза.

Вновь отключаемся и заходим в свойства соединения как описано чуть выше (в изменениях параметра адаптера). Выбираем закладку Сеть. Выделяем Протокол Интернета версии 4(TCP/IPv4) и жмеме Свойства -> Дополнительно. На закладке Параметры IP снимаем галку Использовать основной шлюз в удаленной сети. Во всех открытых окнах — ОК. Теперь даже при подключенном VPN соединении интернет трафик пойдет через ваш, а не удаленный шлюз.

Автоматизация подключения уже настроенного соединения

Автоматически установит VPN соединение для уже настроенного подоключения, можно не только из интерфейса, но и из-под коммандной стрки, используя команду rasdial.

Формат команды:

rasdial [Имя подключения] [имя пользователя] [пароль]

где Имя подключения — то, что вы указали при создании VPN подключения в Имени местоназначения.

Пример команды:

rasdial myvpn test_user 12345

Используя эту команду, можно, например, настроить автоматическое подключение по VPN при загрузке компьютера. Для этого в планировщике задач необходимо создать нужное задание, в котором указать данную команду. Можно так же создать bat файл с одной строчкой — этой командой, и указать в задании его.

Остается одна проблема. Пароль при этом храниться в открытом виде. Если это решение не устраивает, можно скомпилировать bat файл в exe и пароль не будет явно видно. Переделка bat файла в exe — тема отдельной статьи, которых много в интернете. Воспользовавшись поиском, не составит труда найти, как это делается.

Создание VPN соединения скриптом

А теперь к самому интересному. Все созданные пользователем VPN соединения и их настройки храняться в одном файле — rasphone.pbk, который храниться в системной папке пользователя:

%APPDATA%\Microsoft\Network\Connections\Pbk

или, при типовой настройке Windows

C:\Users\[Имя пользователя]\AppData\Roaming\Microsoft\Network\Connections\Pbk

В этом файле первая строка — имя VPN соединения в квадратных скобках. Далее идут пареметры (настройки) этого соединения. После них через пустую строку идет имя следующего VPN соединения в квадратных скобках (если у вас их два и более) и так далее.

[myvpn]
...
...

...
...

[myvpn2]
...
...

...
...

Копируем этот файл в другое место, например на флэшку. Если у вас на этом компьютере было несколько настроенных VPN, а вам нужно настраивать на других компьютерах только один или некоторые, открываем скопированный файл в текстовом редакторе (я предпочитаю Notepad++).У даляем лишние соединения вместе с их настройками. Делать это нужно аккуратно, не удалив случайно некоторые из настроек нужных соединений

Создаем bat файл из двух строк

copy /Y rasphone.pbk C:\Users\user\AppData\Roaming\Microsoft\Network\Connections\Pbk

rasdial myvpn test_user 12345

Я кладу созданный bat файл на флэшку в тот же каталог, где находиться отредактированный файл rasphone.pbk. Поэтому в первой строчке скрипта укзываю его имя без пути.

Предполагая, что на комьютере, на котором буду внедрять решение — типовая установка Windows и пользователь называется user, поэтому в первой строке, в комманде copy, каталог назначения имеет такой вид.

/Y означает, что файл в папке назначения будет перезаписан, если существует, без лишних вопросов.

Важно!!!

В моей реализации предполагается, что на компьютере внедрения отсутствуют существующие настроенные VPN соединения.
Если они присутствуют, то будут утеряны (удалены) при перезаписи файла, а если найдутся подключенные, то скрипт может выдать ошибку.

Если соединения уже есть, и их необходимо сохранить, потребуется не перезаписывать файл rasphone.pbk, а дописывать в него необходимую текстовую информацию.

Вторая строчка скрипта сразу устанавливает соединение для созданного VPN подключения

Запускаем скрипт и получаем результат. Вариаций реализации данного решения множество и у каждого своя ситуация. Охватить одной статьей все ситуации невозможно, цель — описать общий механизм.

Заключение

Если в данной статье оказалось недостаточно информации, сообщите нам на почту info@rapid-brain.ru и мы постараемся внести дополнения.

Если статья оказалась вам интересна и полезна, помогите найти её другим пользователям — сделайте репост в социалных сетях, используя расположенные ниже кнопки.

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

Для создания нового 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:\LocalMachine\My\ -Password $password

    Import-Certificate -FilePath $ca_cert -CertStoreLocation Cert:\LocalMachine\Root\
    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
. У подключения пользователя здесь будет указано
domain\username
.

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

Общие VPN подключения сохраняются в текстовый файл
%ProgramData%\Microsoft\Network\connections\Pbk\rasphone.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-подключения, в дереве пользователей откройте карточку нужного пользователя и установите флаг Разрешить удаленный доступ через VPN. Для этого перейдите в раздел Пользователи -> Учетные записи.

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

Важно: L2TP IPsec клиенты, находящиеся за одним NAT’ом, могут испытывать проблемы подключения если их более одного. Решить проблему может помочь

инструкция

. Рекомендуем вместо L2TP IPsec использовать IKEv2 IPsec.

Запустите следующий скрипт PowerShell для автоматического создания подключения на компьютерах пользователей с Windows 8.1 и 10. Для этого скачайте готовые скрипты подключения сервера из раздела Пользователи -> VPN-подключения -> Основное.

Подключение будет создано со следующими параметрами:

  1. 1.

    Протокол L2TP/IPsec с использованием PSK-ключа;

  2. 2.

    Параметр Использовать основной шлюз в удаленной сети выключен.

    Доступ к локальным сетям того же класса, что были получены для VPN-подключения по умолчанию в Windows 7 и 10 будет осуществляться через VPN-подключение, поэтому дополнительных маршрутов создавать не нужно (если не используются разные классы сетей в локальной сети офиса).

Создайте файл с именем ideco_utm_l2tp.ps1 (в Блокноте или редакторе Windows PowerShell ISE) и скопируйте в него следующий текст:

### Ideco UTM L2TP/IPsec connection ###

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())

if (!$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {

-ArgumentList (‘-noprofile -noexit -file «{0}» -elevated’ -f ( $myinvocation.MyCommand.Definition ))

Enable-NetFirewallRule -Group «@FirewallAPI.dll,-28502»

-Name «Ideco UTM L2TP VPN» `

-ServerAddress my.domain.com `

-L2tpPsk «XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX» `

-EncryptionLevel «Required» `

-AuthenticationMethod MSChapV2 `

-DnsSuffix activedirectory.domain `

Поменяйте в нем необходимые параметры на соответствующие вашим настройкам:

  • Ideco UTM L2TP VPN — имя подключения в системе (может быть произвольным);

  • my.domain.com — домен или IP-адрес основного внешнего интерфейса Ideco UTM;

  • XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX — PSK-ключ вашего сервера;

  • activedirectory.domain — ваш домен Active Directory (если есть, если нет нужно удалить эту строчку из скрипта).

Запустить скрипт на компьютере пользователя можно из контекстного меню файла «Выполнить с помощью PowerShell». Нажмите «Ок» в диалоге повышения прав (они требуются для разрешения доступа к общим файлам и принтерам).

После этого подключение в системе будет создано, а также включен общий доступ к файлам и принтерам для всех сетей (иначе доступ к файловым ресурсам в локальной сети может быть невозможен).

Пользователю при первой авторизации необходимо ввести свой логин/пароль.

Возможные ошибки при выполнении скрипта

  • При появлении ошибки «Выполнение сценариев отключено в этой системе», нужно включить выполнение сценарием, выполнив команду в PowerShell: Set-ExecutionPolicy Unrestricted.

Запустите следующий скрипт PowerShell для автоматического создания подключения на компьютерах пользователей с Windows 8.1 и 10. Для этого скачайте готовый скрипт из раздела Пользователи -> VPN-подключения -> Основное.

Подключение будет создано со следующими параметрами:

  1. 1.

    Протокол SSTP с использованием PSK-ключа;

  2. 2.

    Параметр Использовать основной шлюз в удаленной сети выключен.

    Доступ к локальным сетям того же класса, что были получены для VPN-подключения по умолчанию в Windows 7 и 10 будет осуществляться через VPN-подключение, поэтому дополнительных маршрутов создавать не нужно (если не используются разные классы сетей в локальной сети офиса).

Создайте текстовый файл с именем ideco_utm_sstp.ps1 (в Блокноте или редакторе Windows PowerShell ISE) и скопируйте туда следующий текст:

### Ideco UTM SSTP connection ###

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())

if (!$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {

-ArgumentList (‘-noprofile -noexit -file «{0}» -elevated’ -f ( $myinvocation.MyCommand.Definition ))

Enable-NetFirewallRule -Group «@FirewallAPI.dll,-28502»

-Name «Ideco UTM SSTP VPN» `

-ServerAddress my.domain.com:4443 `

-EncryptionLevel «Required» `

-AuthenticationMethod MSChapV2 `

-DnsSuffix activedirectory.domain `

Поменяйте в нем необходимые параметры на соответствующие вашим настройкам:

  1. 1.

    Ideco UTM SSTP VPN — имя подключения в системе (может быть произвольным);

  2. 2.

    my.domain. com:4443 — домен внешнего интерфейса Ideco UTM и порт, на котором включили SSTP;

  3. 3.

    activedirectory.domain — ваш домен Active Directory (если домена нет, нужно удалить эту строчку из скрипта).

Запустить скрипт на компьютере пользователя можно из контекстного меню файла «Выполнить с помощью PowerShell». Нажмите «Ок» в диалоге повышения прав (они требуются для разрешения доступа к общим файлам и принтерам).

После этого подключение в системе будет создано, а также включен общий доступ к файлам и принтерам для всех сетей (иначе доступ к файловым ресурсам в локальной сети может быть невозможен).

Пользователю при первой авторизации необходимо ввести свой логин/пароль.

Возможные ошибки при выполнении скрипта

При ошибке «Выполнение сценариев отключено в этой системе», нужно включить выполнение сценарием, выполнив команду в PowerShell: Set-ExecutionPolicy Unrestricted.

Запустить скрипт PowerShell для автоматического создания подключения на компьютерах пользователей с Windows 8.1 и 10, скачав готовый скрипт из раздела Пользователи -> VPN-подключение -> Основное.

Перед настройкой подключения по протоколу IKEv2 установите корневой сертификат UTM на устройство пользователя. Скачать сертификат можно одним из способов:

  • В личном кабинете, введя логин/пароль пользователя:

  • В разделе Сервисы -> Сертификаты:

Корневой сертификат потребуется для настройки подключения рабочей станции пользователя, если не был получен корневой сертификат через Let`s Encrypt.
Если для VPN-подключения используется сертификат выданный Let`s Encrypt, то установка корневого сертификата на устройство не требуется.

Подключение с помощью скрипта будет создано со следующими параметрами:

  1. 2.

    Параметр Использовать основной шлюз в удаленной сети выключен. Доступ к локальным сетям того же класса, что были получены для VPN-подключения по умолчанию в Windows 7 и 10, будет осуществляться через VPN-подключение, поэтому дополнительных маршрутов создавать не нужно (если не используются разные классы сетей в локальной сети офиса).

Создайте текстовый файл с именем ideco_utm_ikev2.ps1 (в Блокноте или редакторе Windows PowerShell ISE) и скопируйте туда следующий текст:

### Ideco UTM IKEv2 connection ###

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())

if (!$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {

-ArgumentList (‘-noprofile -noexit -file «{0}» -elevated’ -f ( $myinvocation.MyCommand.Definition ))

Enable-NetFirewallRule -Group «@FirewallAPI.dll,-28502»

-Name «Ideco UTM IKEv2 VPN» `

-ServerAddress my.domain.com `

-EncryptionLevel «Required» `

-AuthenticationMethod EAP `

-DnsSuffix activedirectory.domain `

Поменяйте в нем необходимые параметры на соответствующие вашим настройкам:

  1. 1.

    Ideco UTM IKEv2 VPN — название подключения в системе (может быть произвольным);

  2. 2.

    my.domain.com — домен внешнего интерфейса Ideco UTM (А-запись для домена должна ссылаться на IP-адрес внешнего интерфейса Ideco UTM);

  3. 3.

    activedirectory.domain — ваш домен Active Directory (если его, то нужно удалить эту строчку из скрипта).

Запустить скрипт на компьютере пользователя можно из контекстного меню файла «Выполнить с помощью PowerShell». Нажмите «Ок» в диалоге повышения прав (они требуются для разрешения доступа к общим файлам и принтерам).

После этого подключение в системе будет создано, а также включен общий доступ к файлам и принтерам для всех сетей (иначе доступ к общим папкам в локальной сети будет невозможен).

При первой авторизации необходимо ввести логин/пароль пользователя.

Возможные ошибки при выполнении скрипта

При появлении ошибки «Выполнение сценариев отключено в этой системе», нужно включить выполнение сценариев, выполнив команду в PowerShell: Set-ExecutionPolicy Unrestricted

Ошибки работы VPN-подключений

Если VPN-подключение по протоколам IPSeс в Windows автоматически разрывается через 7 часов 45 минут и при подключении по IKEv2 возникает ошибка «Ошибка сопоставления групповой политики» или ошибка с кодом «13868»

Для восстановления связи подойдут следующие действия:

1. Переподключите соединение. В данном случае соединение восстановится, но через 7 часов 45 минут вновь будет автоматически разорвано. Если требуется, чтобы подключение не разрывалось автоматически, то выполните действия из следующего пункта.

2. Внесите изменения в реестр:

  • Откройте Редактор реестра;

  • Перейдите по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters;

  • Нажмите правой кнопкой мыши по параметру именем NegotiateDH2048_AES256 и нажмите Изменить;

  • В строке Значение укажите значение 1:

  • Если параметра именем NegotiateDH2048_AES256 нет, то создайте его. Для этого:

  • Нажмите правой кнопкой мыши по свободному месту реестра в Parameters и выберите Создать -> DWORD:

  • Задайте имя NegotiateDH2048_AES256;

  • Нажмите правой кнопкой мыши по созданному файлу и выберите Изменить:

  • В строке Значение укажите значение 1:

3. Перезагрузите Windows.

  • Скрыть системные значки windows 11
  • Скрипт на перезапуск службы windows
  • Скрывать пустые диски windows 10
  • Скрытые процессы windows 10 программа
  • Скрипт сброса центра обновления windows