SetVPN – простое создание VPN из командной строки

SetVPN.exe (2023.10.05)

Эта программа из командной строки создаёт VPN соединение в Windows (в стандартном VPN-клиенте Windows).
Программа рассчитана на Win7, но с некоторыми ограничениями работает и в WinXP.
Win8/10/11(22H2) тоже поддерживаются, но созданные соединения не настраиваются в GUI и поэтому там лучше использовать функционал PowerShell Add-VpnConnection.
Программа предоставляется как есть, без каких-либо гарантий и ответственности!
Для получения справки по ключам – SetVPN.exe /help_ru


Основные ключи:
/add – добавляет новое VPN-соединение. Если соединение с таким именем уже есть – ошибка ERROR_ALREADY_EXISTS.
/add /force – аналогично, но если соединение с таким именем уже есть – оно будет удалено и создано заново.
/delete – удаляет соединение.
/help_ru – эта справка.
/help_en – английская справка.
/savedump – сохраняет в файл ответы RASENTRYW и RASCREDENTIALSW.
/viewlogin – показывает логин из указанного VPN-соединения.
/list – выводит список соединений, адреса, pbk-базы.

В %errorlevel% возвращает стандартные коды ошибок Windows, 0 – ошибки нет.

/name="connect_to_office" – задаёт имя VPN-соединения (с которым будут все работать остальные ключи).

/servername="192.168.1.1" – адрес VPN-сервера. Допустимо указать адрес IPv4, IPv6, или домен.

/ip4addr=192.168.1.50 – локальный IPv4-адрес который надо назначить. Если ключа нет – брать с DHCP.
/ip4dns1=192.168.1.2 /ip4dns2=192.168.1.3 – адрес первичного и вторичного DNS-серверов. Если ключа нет – брать с DHCP.
/ip4wins1=192.168.1.2 /ip4wins2=192.168.1.3 – адрес первичного и вторичного WINS-серверов. Если ключа нет – брать с DHCP.
/ip4metric=123 – явно указывает метрику интерфейса. Если ключа нет – авто.
/ip4DefGw – наличие этого ключа означает шлюз по умолчанию
/ip4DisableCBSRt – отключает добавление маршрута основанное на классе. (начиная с win7)
Установка ключа ip4DisableCBSRt удаляет ключ ip4DefGw

/ip6addr /ip6dns1 /ip6dns2 /ip6metric /ip6DefGw – аналогичные ключи для IPv6.

/DisableIP4 – отключает поддержку TCP/IPv4
/DisableIP6 – отключает поддержку TCP/IPv6
/DisableFileAndPrint – отключает File and Print Sharing for Microsoft Networks
/DisableClientForMSNet – отключает Client for Microsoft Networks
/DisableNbtOverIP – отключает NetBIOS через TCP/IP
/OnlyIP – сразу DisableNbtOverIP DisableClientForMSNet DisableFileAndPrint

Все ключи ip, а также DisableIP – в WinXP работают не корректно и использовать их там не следует. В WinXP все параметры будут по умолчанию (DHCP, шлюз по умолчанию, и т.п.).

/DnsSuffix="test" – DNS-суффикс подключения.
/RegIpWithDns – зарегистрировать адрес этого подключения в DNS.
/UseDnsSuffixForReg – использовать DNS-суффикс при регистрации в DNS.
Ключ UseDnsSuffixForReg автоматически включает в себя RegIpWithDns.

Протокол проверки подлинности (возможно несколько ключей):
/PAP – PAP.
/SPAP – Shiva. Только в WinXP, у Win7 его нет.
/CHAP – CHAP.
/W95MsCHAP – Microsoft CHAP для Win95. Только в WinXP, у Win7 его нет.
/MsCHAP1 – Microsoft CHAP v1. Только в WinXP, у Win7 его нет!!!
/MsCHAP2 – Microsoft CHAP v2.
/EAP – EAP. Однако через SetVPN.exe его нельзя настроить в полной мере. Ключ EAP нельзя использовать вместе с любыми другими ключами протоколов.
Если не указан вообще никакой из ключей – будет указан MsCHAP2, но если указаны какие-то ключи – то будут разрешены только указанные протоколы.

Шифрование данных (один ключ).
/encryption_none – шифрование запрещено
/encryption_optional – шифрование не обязательно
/encryption_normal – шифрование обязательно (по умолчанию, если не указан)
/encryption_maximum – максимальное шифрование обязательно

Тип используемого VPN (один ключ).
/vs_Default – перебирает всё. Это режим по умолчанию, если не указано ничего.
/vs_PptpOnly – только PPTP.
/vs_PptpFirst – сначала PPTP, если не получилось – то IKEv2, SSTP, L2TP.
/vs_L2tpOnly – только L2TP.
/vs_L2tpFirst – сначала L2TP, если не получилось – то IKEv2, SSTP, PPTP.
/vs_SstpOnly – только SSTP. Начиная с WinVistaSP1
/vs_SstpFirst – сначала SSTP, если не получилось – то IKEv2, PPTP, L2TP.
/vs_Ikev2Only – только IKEv2. Начиная с Win7
/vs_Ikev2First – сначала IKEv2, если не получилось – то SSTP, PPTP, L2TP.
/vs_PptpSstp – сначала PPTP, если не получилось – SSTP. Начиная с Win7.
/vs_L2tpSstp – сначала L2TP, если не получилось – SSTP. Начиная с Win7.
/vs_Ikev2Sstp – сначала IKEv2, если не получилось – SSTP. Начиная с Win7.
/vs_GREOnly – только GRE. Начиная с Win8.
/vs_ProtocolList – Win10+.

/UsePSK="MyPreSharedKey" – для проверки подлинности в L2TP использовать PSK, с указанным значением. Иначе – сертификаты.
/DisableIKENameEkuCheck – отключить проверку атрибутов имени и использования у сертификата сервера.
/DisableMobility – (win7) Отключить мобильность IKEv2.
/NetworkOutageTime=300 – (win7) IKEv2 время отказа сети (секунды).

Параметры набора номера:
/HideDialingProgress – неотображать ход подключения
/HideUserPw – иначе перед коннектом предлагать ввода имени и пароля.
/PreviewDomain – включать домен входа в Windows

Параметры PPP:
/DisableLcpExt – отключает расширения LCP
/DisableSwCompression – отключает программное сжатие данных
/MultiLink – согласование многоканальных подключений для одноканальных

Параметры повторного звонка:
/RedialCount=5 – число попыток установки связи.
/RedialPause=10 – интервал между попытками, в секундах (стандартные – 1,3,5,10,30,60,120,…).
/IdleDisconnect=600 – время простоя до разъединения. Секунды. Если 0 – то простой неограничен, если ключа нет – системное значение по умолчанию.
/ReConnect – перезвонить при разрыве связи.

/UserName="user" – логин
/Password="pass" – пароль
/Domain="test" – домен для логина
/CredsForAll – сохранить логин, пароль и домен для всех пользователей. Нужны администраторские права при запуске.
/UseLogonCredentials – использовать имя/пароль входа в Windows (только MsCHAP).
/NoCacheCreds – снимает флаг CacheCredentials (Win8+).

Параметры выбора PBK-базы, с которой работать:
/PbkCurrentUser – работать с PBK-базой текущего пользователя – CSIDL_APPDATA\Microsoft\Network\Connections\Pbk\rasphone.pbk
/PbkAllUsers – работать с системной PBK-базой – CSIDL_COMMON_APPDATA\Microsoft\Network\Connections\Pbk\rasphone.pbk
/PbkFile="C:\folder\file.pbk" – работать с указанной PBK-базой.
По умолчанию (если /Pbk*-ключ не указан) – используются обе PBK-базы (системная и текущего пользователя): VPN-соединения создаются (/add) в системной PBK-базе при запуске с правами администратора либо в пользовательской при обычном запуске, просматривать (/viewlogin, /list) VPN-соединения можно в обеих базах без администраторских прав.

Параметры, которые обычно не нужны, но есть в API:
/DontUseRasCredentials
/Internet
/UseCountryAndAreaCodes
/UseTypicalSettings (WinVista+)
/UsePreSharedKeyForIkev2Initiator (Win8+)
/UsePreSharedKeyForIkev2Initiator (Win8+)
/UsePreSharedKeyForIkev2Responder (Win8+)
/AutoTriggerCapable (Win8.1+)
/IsThirdPartyProfile (Win8.1+)
/AuthTypeIsOtp (Win8.1+)
/IsAlwaysOn (Win10+)
/IsPrivateNetwork (Win10+)
/PlumbIKEv2TSAsRoutes (Win10+)
/HideStatusMonitor – удаляет значок в трее.
/PreviewPhoneNumber – перед вызовом можно изменить адрес сервера.
/SecureRoutingCompartment (WinVista+)


Типовые примеры использования SetVPN.exe:
setvpn /name="test1" /add /servername="192.168.192.1" /username="aaa" /password="bbb" /disableip6 /onlyip /mschap2 /chap /reconnect
setvpn /name="test2" /add /force /servername="192.168.192.1" /username="aaa" /password="bbb" /disableip6 /onlyip /mschap2 /reconnect /vs_L2tpOnly /UsePSK="psk" /CredsForAll
setvpn /name="test1" /delete
setvpn /name="test2" /savedump
setvpn /name="test2" /viewlogin
setvpn /list


История развития программы:
v.2.0 (2023.10.05) Исправлена ошибка с невозможностью создания первого соединения от имени пользователя;
Поправлен PE-заголовок, внутренняя оптимизация;
Все функции переведены на юникодный вариант (например при сохранении конфига в файл, имена соединения);
Новые возможности – выбор PBK-файла с которым работать (системный или текущего пользователя) – аргументы /Pbk*;
Новые возможности – вывод списка соединений (команда /list).
v.1.4 (2023.09.13) Исправлена ошибка с установкой шлюза по умолчанию.
v.1.3 (2022.03.07) Исправлены некоторые ошибки (при сохранении логина/пароля), улучшена поддержка Win8/Win10/Win11 (RASEO2_CacheCredentials по умолчанию).
v.1.2 (2022.03.01) Исправлены некоторые ошибки, программа теперь работает и в современных версиях Windows (поддерживаются WinXP/WinVista/Win7/Win8/Win10/Win11(21H2).
v.1.1 (2016.02.18) Мелкие багфиксы.
v.1.0 (2010) Первая публичная версия;

Скачать “CMD_SetVPN_v20.rar” – 25,24 КБВерсия 2.0.0.1, 2023-10-05