• Автоматическое создание и поддерживание подключения VPN в активном состоянии
  • Проброс маршрутов
  • Поддерживаемые протоколы PPTP, L2TP/IPSec PSK, PPPoE
  • Контролировать соединение одновременно по нескольким точкам используя ping, tcp, http, dns
  • Запуск внешних скриптов после подключения и при отключении (сбросе)
  • Проверка доступности серверов при любом изменении профиля сети, подключении/отключении любых сетевых подключений.
  • Защищенные профили.

Установка

Установка сервиса осуществляется програмой установки из раздела загрузки. Инсталятор автоматически определяет платформу x64/x86 и устанавливает соответствующие компоненты. Для тихого режима необходимо использовать ключ /silent. Использование тихого режима не обазятельно, т.к. инсталятор автоматически закрывается после завершения установки без взаимодействия с пользователем.

Если рядом с установщиком будет находится файл point.xml/point.cxml то он будет автоматически скопирован в папку профилей, а служба после завершения установки - запущена. Если профиль при установке не будет предоставлен в папке профилей будет создан шаблон example.xml, а служба останется в незапущенном состоянии. Для запуска службы необходимо воспользоваться оснасткой Службы или командой net start taa.vpn.service.

Для регистрации сервиса в качестве службы необходимо запустить ее с ключом taa.vpn.service.exe /install от имени администратора. Ключ /uninstall удаляет службу.

При использовании минимального пакета необходимо убедится в наличии предустановленного пакета .NET 7 Runtime .

Профиль подключения

Профиль подключения представляет собой xml/cxml файл, содержащий параметры подключения. Профили хранятся в директории %ProgramFiles%\taa\vpn.service\points\ и их может быть несколько. Профили поднимаются абсолютно независимо друг от друга.

Пример профиля:

<taa>
    <machine>taapc</machine>
    <id>test_vpn</id>
    <type>l2tp</type>
    <host>myvpn.server.com</host>
    <key>preshared_key</key>
    <login>test_vpndialer</login>
    <password>test_password</password>
    <defaultgw>false</defaultgw>
    <ip/>
    <ipv6>false</ipv6>
    <dnssuffix>domain.local</dnssuffix>
    <dnsregister>false</dnsregister>
    <dns1/>
    <dns2/>
    <metric>1000</metric>
    <classroutes>false</classroutes>
    <requireencrypt>false</requireencrypt>
    <checkinterval>30</checkinterval>
    <checkers>
        <item type="ping" host="192.168.7.5" count="2" timeout="1000"/>
        <item type="dns" host="some.domain.local" data="10.1.0.100" count="1" timeout="1000"/>
        <item type="http" host="http://some.domain.local/ping/" data="OK" count="1" timeout="1000"/>
        <item type="tcp" host="192.168.7.5" port="1433" count="1" timeout="1000"/>
    </checkers>
    <routes>
        <route net="192.168.7.0" mask="255.255.255.0" metric="10"/>
        <route net="195.201.201.32" mask="255.255.255.255" gateway="10.100.1.1" metric="10"/>
    </routes>
    <hosts>
        <host name="hosts.test" ip="0.0.0.0"/>
    </hosts>
    <scriptup/>
    <scriptdown/>
</taa>

, где

  • machine - имя компьютера к которому привязан профиль. Если имя компьютера не совпадает, то профиль игнорируется. Пустое значение - игнорирование параметра.
  • id - идентификатор подключения. Используется в качестве имени линка на локальной машине. Не может быть более одного профиля с одним именем.
  • type - тип подключения. Может быть pptp, l2tp или pppoe.
  • host - IP или имя хоста VPN сервера
  • key - preshared key для l2tp подключения
  • login - логин пользователя
  • password - пароль пользователя. Пароль не хранится в VPN подключении Windows (чтобы не извлекался программами). Он используется только при непосредственном подключении.
  • defaultgw - true, если шлюз подключения необходимо использовать в качестве шлюза по умолчанию. Иначе - false.
  • classroutes - true, если необходимо добавить классовые маршруты. Иначе - false.
  • ip - IP подключения. Пустое значение - получить с сервера.
  • metric - метрика подключения
  • dns1 - основной DNS. Пустой - получить с сервера.
  • dns2 - альтернативный DNS
  • dnssuffix - DNS суффикс подключения.
  • dnsregister - регистрация в DNS.
  • requireencrypt - обязательное шифрование
  • ipv6 - true - использоватье IPv6
  • checkall - true - если требуется чтобы все проверки checkers были успешными.
  • checkinterval - интервал в секундах проверки доступности серверов по секции checkers. Параметры методов проверки:
    • Общие:
      • type - тип проверки
      • host - хост проверки
      • count - количество попыток
      • timeout - таймаут попытоки в милисекундах
    • ping - проверка методом эхо запроса. При использовании данного метода необходимо учитывать, что IP адреса могут быть доступны в сети Интернет провайдера пользователя.
      • ttl - время жизни пакета. В некоторых случая позволяет сократить количество проблем с IP адресами провайдеров.
    • dns - проверка методом запроса к сервисам DNS
      • host - доменное имя для проверки;
      • data - ожидаемый ответ. Если пустое - любой ответ от DNS сервера будет считаться успешным завершением проверки;
      • server - явно заданный DNS сервер, к которому отправляется запрос (может быть доменным именем). Если пустой - используются все DNS серевера всех подключений;
    • http - проверка HTTP(S) запросом
      • host - URL для проверки;
      • data - ожидаемый ответ (начало ответа). Пустое значение - любой не ошибочный ответа;
    • tcp - проверка tcp подключением
      • port - порт подключения;
  • routes - маршруты поднимаемые при подключении.
    • net - подсеть маршрута
    • mask - маска маршрута
    • gateway - явное объявление шлюза маршрута
    • metric - метрика маршрута
  • hosts - обновление файла %SystemRoot%\System32\drivers\etc\hosts
    • name - домен
    • ip - IP домена
  • scriptup - cmd скрипт выполняемый при подключении. Если при запуске сервиса все проверки проходят (пользователь находится в офисной сети) скрипт не выполняется.
  • scriptdown - cmd скрипт выполняемый при сбросе подключении (проверки не пройдены).

В скриптах и некоторых других параметрах доступны теги:

  • %server% - IP VPN сервера к которому фактически осущствленно подключение. Актуально когда подключение к VPN осуществляется по доменному имени, содержащего несколько A записей.
  • %gateway% - шлюз подключения.
  • %ip% - IP предоставленный сервером.
  • %dns1% - основной DNS предоставленный сервером.
  • %dns2% - альтернативный DNS предоставленный сервером.
  • %ifindex% - индекс интерфейса VPN подключения.
  • %iplocal% - локальный IP.

Шифрование профиля

Шифрование профиля осуществляется коммандной строкой:

  • taa.vpn.service.exe /crypt <file.xml> - для генерации зашифрованного профиля file.cxml привязанного к локальной машине.
  • taa.vpn.service.exe /cryptshared <file.xml> - для генерации зашифрованного профиля file.cxml работающего на любой машине. Рекомендуется задать атрибут machine профиля «во избежание» несанкционированного переноса профиля.

Раздельный пакет развертывания

Пример скрипта PowerShell для формирования пакета автоматического развертывания у пользователя:

$Env:Programfiles'\taa\vpn.service\taa.vpn.service.exe' /cryptshared point.xml
$Env:Programfiles'\7-Zip\7z.exe' a "vpn.zip" "point.cxml" "taa.vpn.service.installer.exe"

Пример cmd скрипта:

@echo off
%ProgramFiles%\taa\vpn.service\taa.vpn.service.exe /cryptshared point.xml
%ProgramFiles%\7-Zip\7z.exe a "vpn.zip" "point.cxml" "taa.vpn.service.installer.exe"

После выполнения скрипта, будет сформирован архив vpn.zip, который необходимо передать пользователю.

Интегрированный пакет развертывания

Начиная с версии 1.2.1 доступна интеграция профиля в исполняемый файл установочного пакета:

@echo off
%ProgramFiles%\taa\vpn.service\taa.vpn.service.exe /integrate "point.xml" "taa.vpn.service.installer.exe"

На выходе будет создан установочный пакет с именем: taa.vpn.service.installer_<MACHINE>_<LOGIN>.exe.

Что нового?

История изменений:

1.2.1
Добавлена интеграция профиля в исполняемый файл установочного пакета.
1.1.17
Добавлен параметр TTL для метода ping.
Добавлена очистка кеша DNS для домена перед проверкой (актуально при использовании системных DNS).
1.1.15
Исправлена проверка методом DNS с недоступным сервером, которая могла осуществляться бесконечно долго.

Поддержка проекта:

Загрузки

Полная версия установщика, включая зависимости
89,05 Мб , 09.02.2023 (2 загрузок)
Минимальная версия установщика. Требуется предустановленный .net 7
3,14 Мб , 09.02.2023 (2 загрузок)
Шаблон профиля VPN подключения
1,22 Кб , 08.02.2023 (1 загрузок)
2,37 Кб , 13.04.2023 (3 загрузок)