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