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

Дистанционная работа в компаниях все больше становится распространённой в последнее время. Системным администраторам нужно организовывать на домашних компьютерах...

Дистанционная работа в компаниях все больше становится распространённой в последнее время. Системным администраторам нужно организовывать на домашних компьютерах пользователей подключение по 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:HOMEPATHvpn_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:HOMEPATHvpn_cert.cer"

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

Set-ExecutionPolicy Default –Force

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

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

powrshell -f "pathtoscript.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:SOFTWAREMicrosoftSystemCertificatesROOTCertificates32323F22E9065D0157DE9B902020DA41A12B4E53 -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%MicrosoftNetworkConnectionsPbk

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

C:Users[Имя пользователя]AppDataRoamingMicrosoftNetworkConnectionsPbk

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

[myvpn]
...
...

...
...

[myvpn2]
...
...

...
...

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

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

copy /Y rasphone.pbk C:UsersuserAppDataRoamingMicrosoftNetworkConnectionsPbk

rasdial myvpn test_user 12345

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

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

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

Важно!!!

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

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

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

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

Заключение

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

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

English | 中文

IPsec VPN Server Auto Setup Scripts

Build Status GitHub Stars Docker Stars Docker Pulls

Set up your own IPsec VPN server in just a few minutes, with IPsec/L2TP, Cisco IPsec and IKEv2.

An IPsec VPN encrypts your network traffic, so that nobody between you and the VPN server can eavesdrop on your data as it travels via the Internet. This is especially useful when using unsecured networks, e.g. at coffee shops, airports or hotel rooms.

We will use Libreswan as the IPsec server, and xl2tpd as the L2TP provider.

» 📖 Book: Set Up Your Own IPsec VPN, OpenVPN and WireGuard Server

Quick start

First, prepare your Linux server* with an install of Ubuntu, Debian or CentOS.

Use this one-liner to set up an IPsec VPN server:

wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh

Your VPN login details will be randomly generated, and displayed when finished.

Optional: Install WireGuard and/or OpenVPN on the same server.

See the script in action (terminal recording).

Note: This recording is for demo purposes only. VPN credentials in this recording are NOT valid.

Click here if you are unable to download.

You may also use curl to download:

curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh

Alternative setup URLs:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh

If you are unable to download, open vpnsetup.sh, then click the Raw button on the right. Press Ctrl/Cmd+A to select all, Ctrl/Cmd+C to copy, then paste into your favorite editor.

A pre-built Docker image is also available. For other options and client setup, read the sections below.

* A cloud server, virtual private server (VPS) or dedicated server.

Features

  • Fully automated IPsec VPN server setup, no user input needed
  • Supports IKEv2 with strong and fast ciphers (e.g. AES-GCM)
  • Generates VPN profiles to auto-configure iOS, macOS and Android devices
  • Supports Windows, macOS, iOS, Android, Chrome OS and Linux as VPN clients
  • Includes helper scripts to manage VPN users and certificates

Requirements

A cloud server, virtual private server (VPS) or dedicated server, with an install of:

  • Ubuntu 22.04, 20.04 or 18.04
  • Debian 11 or 10
  • CentOS 7 or CentOS Stream 9/8
  • Rocky Linux or AlmaLinux 9/8
  • Oracle Linux 9, 8 or 7
  • Amazon Linux 2

Other supported Linux distributions.

  • Raspberry Pi OS (Raspbian) 11 or 10
  • Kali Linux 2022
  • Alpine Linux 3.16 or 3.15
  • Red Hat Enterprise Linux (RHEL) 9, 8 or 7

This also includes Linux VMs in public clouds, such as DigitalOcean, Vultr, Linode, OVH and Microsoft Azure. Public cloud users can also deploy using user data.

Deploy to DigitalOcean  Deploy to Linode  Deploy to Azure

» I want to run my own VPN but don’t have a server for that

For servers with an external firewall (e.g. EC2/GCE), open UDP ports 500 and 4500 for the VPN.

A pre-built Docker image is also available. Advanced users can install on a Raspberry Pi. [1] [2]

⚠️ DO NOT run these scripts on your PC or Mac! They should only be used on a server!

Installation

First, update your server with sudo apt-get update && sudo apt-get dist-upgrade (Ubuntu/Debian) or sudo yum update and reboot. This is optional, but recommended.

To install the VPN, please choose one of the following options:

Option 1: Have the script generate random VPN credentials for you (will be displayed when finished).

wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh

Option 2: Edit the script and provide your own VPN credentials.

wget https://get.vpnsetup.net -O vpn.sh
nano -w vpn.sh
[Replace with your own values: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD]
sudo sh vpn.sh

Note: A secure IPsec PSK should consist of at least 20 random characters.

Option 3: Define your VPN credentials as environment variables.

# All values MUST be placed inside 'single quotes'
# DO NOT use these special characters within values:  " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' 
VPN_USER='your_vpn_username' 
VPN_PASSWORD='your_vpn_password' 
sh vpn.sh

You may optionally install WireGuard and/or OpenVPN on the same server. If your server runs CentOS Stream, Rocky Linux or AlmaLinux, first install OpenVPN/WireGuard, then install the IPsec VPN.

Click here if you are unable to download.

You may also use curl to download. For example:

curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.sh

Alternative setup URLs:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh

If you are unable to download, open vpnsetup.sh, then click the Raw button on the right. Press Ctrl/Cmd+A to select all, Ctrl/Cmd+C to copy, then paste into your favorite editor.

Optional: Customize IKEv2 options during VPN setup.

When installing the VPN, you can optionally customize IKEv2 options.

Option 1: Customize IKEv2 options using environment variables.

When installing the VPN, you can optionally specify a DNS name for the IKEv2 server address. The DNS name must be a fully qualified domain name (FQDN). Example:

sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh

Similarly, you may specify a name for the first IKEv2 client. The default is vpnclient if not specified.

sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh

By default, clients are set to use Google Public DNS when the VPN is active. You may specify custom DNS server(s) for all VPN modes. Example:

sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh

By default, no password is required when importing IKEv2 client configuration. You can choose to protect client config files using a random password.

sudo VPN_PROTECT_CONFIG=yes sh vpn.sh

Option 2: Skip IKEv2 during VPN setup, then set up IKEv2 using custom options.

When installing the VPN, you can skip IKEv2 and only install the IPsec/L2TP and IPsec/XAuth («Cisco IPsec») modes:

sudo VPN_SKIP_IKEV2=yes sh vpn.sh

(Optional) If you want to specify custom DNS server(s) for VPN clients, define VPN_DNS_SRV1 and optionally VPN_DNS_SRV2. See option 1 above for details.

After that, run the IKEv2 helper script to set up IKEv2 interactively using custom options:

Note: The VPN_SKIP_IKEV2 variable has no effect if IKEv2 is already set up on the server. In that case, to customize IKEv2 options, you can first remove IKEv2, then set it up again using sudo ikev2.sh.

For reference: List of IKEv1 and IKEv2 parameters.

IKEv1 parameter* Default value Customize (env variable)**
Server address (DNS name) No, but you can connect using a DNS name
Server address (public IP) Auto detect VPN_PUBLIC_IP
IPsec pre-shared key Auto generate VPN_IPSEC_PSK
VPN username vpnuser VPN_USER
VPN password Auto generate VPN_PASSWORD
DNS servers for clients Google Public DNS VPN_DNS_SRV1, VPN_DNS_SRV2
Skip IKEv2 setup no VPN_SKIP_IKEV2=yes

* These IKEv1 parameters are for IPsec/L2TP and IPsec/XAuth («Cisco IPsec») modes.
** Define these as environment variables when running vpn(setup).sh.

IKEv2 parameter* Default value Customize (env variable)** Customize (interactive)***
Server address (DNS name) VPN_DNS_NAME
Server address (public IP) Auto detect VPN_PUBLIC_IP
Name of first client vpnclient VPN_CLIENT_NAME
DNS servers for clients Google Public DNS VPN_DNS_SRV1, VPN_DNS_SRV2
Protect client config files no VPN_PROTECT_CONFIG=yes
Enable/Disable MOBIKE Enable if supported
Client cert validity 10 years (120 months) VPN_CLIENT_VALIDITY****
CA & server cert validity 10 years (120 months)
CA certificate name IKEv2 VPN CA
Certificate key size 3072 bits

* These IKEv2 parameters are for IKEv2 mode.
** Define these as environment variables when running vpn(setup).sh, or when setting up IKEv2 in auto mode (sudo ikev2.sh --auto).
*** Can be customized during interactive IKEv2 setup (sudo ikev2.sh). Refer to option 2 above.
**** Use VPN_CLIENT_VALIDITY to specify the client cert validity period in months. Must be an integer between 1 and 120.

In addition to these parameters, advanced users can also customize VPN subnets during VPN setup.

Next steps

Read this in other languages: English, 中文.

Get your computer or device to use the VPN. Please refer to:

Configure IKEv2 VPN Clients (recommended)

Configure IPsec/L2TP VPN Clients

Configure IPsec/XAuth («Cisco IPsec») VPN Clients

📖 Book: Set Up Your Own IPsec VPN, OpenVPN and WireGuard Server

Enjoy your very own VPN! ✨🎉🚀✨

Like this project? ❤️ Sponsor or ☕ Support and access extra content.

Important notes

Windows users: For IPsec/L2TP mode, a one-time registry change is required if the VPN server or client is behind NAT (e.g. home router).

The same VPN account can be used by your multiple devices. However, due to an IPsec/L2TP limitation, if you wish to connect multiple devices from behind the same NAT (e.g. home router), you must use IKEv2 or IPsec/XAuth mode. To view or update VPN user accounts, see Manage VPN users.

For servers with an external firewall (e.g. EC2/GCE), open UDP ports 500 and 4500 for the VPN. Aliyun users, see #433.

Clients are set to use Google Public DNS when the VPN is active. If another DNS provider is preferred, see Advanced usage.

Using kernel support could improve IPsec/L2TP performance. It is available on all supported OS. Ubuntu users should install the linux-modules-extra-$(uname -r) package and run service xl2tpd restart.

The scripts will backup existing config files before making changes, with .old-date-time suffix.

Upgrade Libreswan

Use this one-liner to update Libreswan (changelog | announce) on your VPN server.

wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh

Click here if you are unable to download.

You may also use curl to download:

curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.sh

Alternative update URLs:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.sh

If you are unable to download, open vpnupgrade.sh, then click the Raw button on the right. Press Ctrl/Cmd+A to select all, Ctrl/Cmd+C to copy, then paste into your favorite editor.

The latest supported Libreswan version is 4.9. Check installed version: ipsec --version.

Note: xl2tpd can be updated using your system’s package manager, such as apt-get on Ubuntu/Debian.

Manage VPN users

See Manage VPN users.

  • Manage VPN users using helper scripts
  • View VPN users
  • View or update the IPsec PSK
  • Manually manage VPN users

Advanced usage

See Advanced usage.

  • Use alternative DNS servers
  • DNS name and server IP changes
  • IKEv2-only VPN
  • Internal VPN IPs and traffic
  • Customize VPN subnets
  • Port forwarding to VPN clients
  • Split tunneling
  • Access VPN server’s subnet
  • Access VPN clients from server’s subnet
  • Modify IPTables rules
  • Deploy Google BBR congestion control

Uninstall the VPN

To uninstall IPsec VPN, run the helper script:

Warning: This helper script will remove IPsec VPN from your server. All VPN configuration will be permanently deleted, and Libreswan and xl2tpd will be removed. This cannot be undone!

wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh

Click here if you are unable to download.

You may also use curl to download:

curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.sh

Alternative script URLs:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.sh

For more information, see Uninstall the VPN.

Feedback & Questions

  • Have a suggestion for this project? Open an Enhancement request. Pull requests are also welcome.
  • If you found a reproducible bug, open a bug report for the IPsec VPN or for the VPN scripts.
  • Got a question? Please first search existing issues and comments in this Gist and on my blog.
  • Ask VPN related questions on the Libreswan or strongSwan mailing list, or read these wikis: [1] [2] [3] [4] [5].

License

Copyright (C) 2014-2023 Lin Song View my profile on LinkedIn
Based on the work of Thomas Sarlandie (Copyright 2012)

Creative Commons License
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License
Attribution required: please include my name in any derivative and let me know how you have improved it!

В 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: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 подключений

  • Remove From My Forums
  • Вопрос

  • windows 7
    Подскажите как правильно command line создать vpn подключение.
    Чтобы указать — имя подключения, сервер подключения, логин и пароль ( остальной опции )
    Отработать комманду и иметь настроенное vpn соединение

Ответы

    • Изменено

      11 апреля 2016 г. 5:49

    • Предложено в качестве ответа
      Alexander RusinovModerator
      11 апреля 2016 г. 6:28
    • Помечено в качестве ответа
      KazunEditor
      15 апреля 2016 г. 8:05
  • можно сделать в PowerShell. Для IKEv2

    Add-VpnConnection -Name «Имя Подключения IKEv2» -ServerAddress «Имя VPN сервера» -TunnelType IKEv2 -EncryptionLevel Maximum -AuthenticationMethod Eap -SplitTunneling -RememberCredential -AllUserConnection

    Для L2TP:

    Add-VpnConnection -Name «Имя подключения L2TP» -ServerAddress «IP адрес VPN сервера» -TunnelType L2tp -EncryptionLevel Maximum -AuthenticationMethod Eap -SplitTunneling -RememberCredential -AllUserConnection

    ключ -AllUserConnection можно убрать, если подключение создаётся только для одного пользователя, и компьютер не в домене.
    Логин пароль, а также PSK ключ для L2TP записываю руками.

    • Изменено
      AnahaymModerator
      10 апреля 2016 г. 18:07
    • Предложено в качестве ответа
      Alexander RusinovModerator
      11 апреля 2016 г. 6:29
    • Помечено в качестве ответа
      KazunEditor
      15 апреля 2016 г. 8:05


Windows, Windows 10, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP

  • 22.03.2020
  • 4 366
  • 2
  • 6
  • 6
  • 0

Как создать VBS скриптом подключение по VPN

  • Содержание статьи
    • Как создать VBS скриптом подключение по VPN
    • Комментарии к статье ( 2 шт )
    • Добавить комментарий

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

Как создать VBS скриптом подключение по VPN

Необходимо создать файл с любым названием и расширением .vbs, а после этого вставить в него содержимое, которое приведено ниже. После запуска данного скрипта, в настройках сети появится VPN соединение с названием New_VPN и подключающееся на IP адрес 10.20.10.20, которое можно будет запустить руками или же с помощью другого скрипта, bat-файла и так далее.

strVPNName = "New_VPN"
strHost = "10.20.10.20"
 
Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const intForReading = 1
Const intForAppending = 8
 
strFile = objShell.ExpandEnvironmentStrings("%APPDATA%") & "MicrosoftNetworkConnectionsPbkrasphone.pbk"
 
boolWrite = True
If objFSO.FileExists(strFile) = True Then
	Set objRASFile = objFSO.OpenTextFile(strFile, intForReading, False)
	strContents = objRASFile.ReadAll
	objRASFile.Close
	Set objRASFile = Nothing
	If InStr(LCase(strContents), LCase(strVPNName)) > 0 Then boolWrite = False
End If
 
If boolWrite = True Then
	strContents = VbCrLf & _
	"[" & strVPNName & "]" & vbCrLf & _
	"Encoding=1" & vbCrLf & _
	"Type=2" & vbCrLf & _
	"AutoLogon=0" & vbCrLf & _
	"UseRasCredentials=1" & vbCrLf & _
	"DialParamsUID=5021906" & vbCrLf & _
	"Guid=F29BC5711801294C8AF6648CE3F336FF" & vbCrLf & _
	"BaseProtocol=1" & vbCrLf & _
	"VpnStrategy=2" & vbCrLf & _
	"ExcludedProtocols=0" & vbCrLf & _
	"LcpExtensions=1" & vbCrLf & _
	"DataEncryption=256" & vbCrLf & _
	"SwCompression=1" & vbCrLf & _
	"NegotiateMultilinkAlways=0" & vbCrLf & _
	"SkipNwcWarning=0" & vbCrLf & _
	"SkipDownLevelDialog=0" & vbCrLf & _
	"SkipDoubleDialDialog=0" & vbCrLf & _
	"DialMode=1" & vbCrLf & _
	"DialPercent=75" & vbCrLf & _
	"DialSeconds=120" & vbCrLf & _
	"HangUpPercent=10" & vbCrLf & _
	"HangUpSeconds=120" & vbCrLf & _
	"OverridePref=15" & vbCrLf & _
	"RedialAttempts=3" & vbCrLf & _
	"RedialSeconds=60" & vbCrLf & _
	"IdleDisconnectSeconds=0" & vbCrLf & _
	"RedialOnLinkFailure=0" & vbCrLf & _
	"CallbackMode=0" & vbCrLf & _
	"CustomDialDll=" & vbCrLf & _
	"CustomDialFunc=" & vbCrLf & _
	"CustomRasDialDll=" & vbCrLf & _
	"AuthenticateServer=0" & vbCrLf & _
	"ShareMsFilePrint=1" & vbCrLf & _
	"BindMsNetClient=1" & vbCrLf & _
	"SharedPhoneNumbers=0" & vbCrLf & _
	"GlobalDeviceSettings=0" & vbCrLf & _
	"PrerequisiteEntry=" & vbCrLf & _
	"PrerequisitePbk=" & vbCrLf & _
	"PreferredPort=VPN4-0" & vbCrLf & _
	"PreferredDevice=WAN Miniport (L2TP)" & vbCrLf & _
	"PreferredBps=0" & vbCrLf & _
	"PreferredHwFlow=1" & vbCrLf & _
	"PreferredProtocol=1" & vbCrLf & _
	"PreferredCompression=1" & vbCrLf & _
	"PreferredSpeaker=1" & vbCrLf & _
	"PreferredMdmProtocol=0" & vbCrLf & _
	"PreviewUserPw=1" & vbCrLf & _
	"PreviewDomain=0" & vbCrLf & _
	"PreviewPhoneNumber=0" & vbCrLf & _
	"ShowDialingProgress=1" & vbCrLf & _
	"ShowMonitorIconInTaskBar=1" & vbCrLf & _
	"CustomAuthKey=-1" & vbCrLf & _
	"AuthRestrictions=608" & vbCrLf & _
	"TypicalAuth=2" & vbCrLf & _
	"IpPrioritizeRemote=1" & vbCrLf & _
	"IpHeaderCompression=0" & vbCrLf & _
	"IpAddress=0.0.0.0" & vbCrLf & _
	"IpDnsAddress=0.0.0.0" & vbCrLf & _
	"IpDns2Address=0.0.0.0" & vbCrLf & _
	"IpWinsAddress=0.0.0.0" & vbCrLf & _
	"IpWins2Address=0.0.0.0" & vbCrLf & _
	"IpAssign=1" & vbCrLf & _
	"IpNameAssign=1" & vbCrLf & _
	"IpFrameSize=1006" & vbCrLf & _
	"IpDnsFlags=0" & vbCrLf & _
	"IpNBTFlags=1" & vbCrLf & _
	"TcpWindowSize=0" & vbCrLf & _
	"UseFlags=0" & vbCrLf & _
	"IpSecFlags=0" & vbCrLf & _
	"IpDnsSuffix=" & vbCrLf & _
	"" & VbCrLf & _
	"NETCOMPONENTS=" & VbCrLf & _
	"ms_server=1" & VbCrLf & _
	"ms_msclient=1" & VbCrLf & _
	"" & VbCrLf & _
	"MEDIA=rastapi" & VbCrLf & _
	"Port=VPN4-0" & VbCrLf & _
	"Device=WAN Miniport (L2TP)" & VbCrLf & _
	"" & VbCrLf & _
	"DEVICE=vpn" & VbCrLf & _
	"PhoneNumber=" & strHost & VbCrLf & _
	"AreaCode=" & VbCrLf & _
	"CountryCode=61" & VbCrLf & _
	"CountryID=61" & VbCrLf & _
	"UseDialingRules=0" & VbCrLf & _
	"Comment=" & VbCrLf & _
	"LastSelectedPhone=0" & VbCrLf & _
	"PromoteAlternates=0" & VbCrLf & _
	"TryNextAlternateOnFail=1"
	
	Set objRASFile = objFSO.OpenTextFile(strFile, intForAppending, True)
	objRASFile.Write strContents
	objRASFile.Close
	Set objRASFile = Nothing
	
	MsgBox "File modified."
Else
	MsgBox "File not modified."
End If

Like this post? Please share to your friends:
  • Скрипт для смены обоев рабочего стола windows 10
  • Скрыть значки рабочего стола windows 10 программа
  • Скорость указателя мыши windows 10 по умолчанию
  • Скрипт для смены ip адреса windows 10
  • Скрыть диски в windows 10 реестр