Автоматическое подключение и переподключение VPN в Windows 7-10/2008-2012

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

Служба:

  • Контролирует сразу группу VPN подключений с заданным интервалом;
  • Выполняет дополнительнный контроль (ping) до нужных вам хостов (обычно доступных только в VPN тунеле), чтобы переподключать “зависшие” подключния. Если до заданного хоста не пройдет 3 pingа подряд – хост считается не доступным и служба начнет переподключение;
  • Может использовать сохраненные в подключении логин и пароль, а может и использовать свои;
  • Может выполнить пакетный файл (*.bat) или приложение после успешного коннекта. Приложение запускается с двумя параметрами в коммандной стоке: IP клиента и IP шлюза VPN. В bat скриптах они доступны в переменных %1 и %2 соответственно. Удобно для восстановления маршрутов;
  • Может выполнить пакетный файл (*.bat) или приложение после дисконнекта;

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

  • /config – GUI для настройки службы. Все настройки (задачи) хранятся рядом с приложением в файле config.xml. После изменения настроек необходимо перезапустить службу (net stop vpnredial, net start vpnredial);
  • /install – установка в качестве службы. При установке запросится имя и пароль пользователя под которым запускать службу (можно потом перенастроить через оснастку “Службы”). Имя пользователя необходимо вносить в формате “.\username”. Служба устанавливается с именем vpnredial;
  • /uninstall – удаление службы;

Пример bat файла для восстановления маршрутов:

Сама служба: vpnredialer.zip

Для работы необходим Framework 4.0. Приложение разрабатывалось для собственных нужд и в массы передается безвозмездно как есть.

UPD:

30.08.2017 – добавлена функция контроля активных сетей. Теперь можно указать префиксы IP адресов (или целиком IP адрес). При наличии активных подключений (ethernet или wifi) с IP адресами подходящие под указанные префиксы (например, “192.168.1.197” подходит под префикс “192.168.” и “192.16” и “192.168.1.”) то VPN подключение не будет устанавливаться, а если они уже подключено – разъединяться. Удобно использовать на ноутбуках, которые могут перемещаться и нет необходимости использовать VPN  в рабочей сети.

07.05.2018 – Добавлена кнопка “Удалить задание”.

23 мысли о “Автоматическое подключение и переподключение VPN в Windows 7-10/2008-2012”

  1. Очень полезная утилита. Однако на одном компе с Win7x64 все работает отлично, а на другом с такой-же операционкой сервис устанавливается, запускается, но ничего делать не хочет…. Но в режиме теста из конфигурации все работает. Подскажите куда копать?

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

  2. Здравствуйте
    Дайте примерный файл настроек, пожалуйста.

    А то не понятно, как оно работает 🙂

    1. Если они (пароли) не установлены, то службу с ключом /install запускать от имени администратора (контекстное меню) указав пользователя от чьего имени создали VPN подключение в формате “.\user”, а пароль оставить пустым. Если вы их не знаете, то как в систему входите?

      1. На домашнем ПК просто установлена винда – при инсталяции не задавались пароли. Захожу без них.

        Последовательность действий –
        1. запускаю от админа cmd.
        2. ввожу vpn.redial /install
        3. Появляется окно, где нужно ввести юзера и пароли
        4. Ввожу в поле юзера имя под которым сижу (он состоит в группе админов) – ./DSD
        5. Появляется табличка с ошибкой – Произошел сбой установки и был выполнен откат.
        Система вин10 с последними обновлениями.

      2. Нужно “.\DSD” вместо “./DSD”, это важно. Если все равно не устанавливается (ни разу без пароля не работал), то установите пароль “1” после чего установите службу, удалите пароль и в настройках служб (через управление компьютером) настройте режим авторизации.
        Так же обратите внимание что cmd должен быть запущен от имени администратора.

    1. Подключения создаются вручную штатными средствами Windows. В списках отражаются все уже созданные VPN подключения. Важно учитывать то что подключение должно быть доступно для пользователя от имени которого запускается и GUI и служба.

      1. Благодарю за оперативный ответ!

        В Windows уже создано vpn подключение.
        Служба запускается от имени администратора
        с полными правами.

        и запускается оболочка тоже от этого же пользователя

        Однако, список пуст.

        ps
        Как пожелание – сделать кнопку “удалить задание” 🙂

      2. Наиболее вероятная проблема с видимостью – вы создали подключение видимое для всех, а не “Для меня” (при создании есть такой переключатель) и подключение добавлено в глобальную книгу подключений вместо пользовательской. Пересоздайте подключение указав, что это подключение не доступно другим пользователям.
        PS. Кнопочка “Удалить” сделана. Перезагрузите пакет.

  3. в 2016 Windows нет галочки “Для меня” при создании vpn.
    Там вообще нет никаких параметров, кроме названия соединения, адреса, типа и логин-пароля

    в архиве https://tugibaev.ru/XM0ji
    только один новый файл: routes_add.bat
    🙂

    1. Нужно пользоваться “Центром управления сетями и общим доступом” (панель управления), а не обновленным интерфейсом управления сетями как в Windows 10.
      Архив проверил – проект обновлен.

  4. Добрый день всем, не посредственно при запуске тест ВПН подключение автоматически соединяется, проблема в самой службе, при /install я ввожу имя пользователя без пароля, в системе его нет, служба создается, но не запускается, ошибка 1069, даже на вкладке со службами не выходит ее запустить ругается на пользователя, пытался перенастроить в настройках службы настроить “Вход в систему: С системной учетной записью” – после чего служба запускается и пишет статус “выполняется” но авто подключения не происходит, включаю сам ВПН и нарочно обрываю с роутером для проверки переконекта, и его не происходит. не подскажете где и что упустил ?

    1. Вероятно, вы указали имя пользователя запрашиваемое при установке как “user” вместо “.\user”. В свойствах службы укажите нужного пользователя (от которого вы создали подключение) и введите пароль и его подтверждение. Скорее всего это решит проблему.

  5. Доброго, автор подскажите, ставим прогу а сервер 2012 Р2, пишет странную ошибку в логе: An exception occurred during the Install phase.
    System.ComponentModel.Win32Exception: The account name is invalid or does not exist, or the password is invalid for the account name specified
    Поясню ставлю под собой-я локальный админ, командную строку запускаю от имени админа. Можно ли исправить как-то это проблему?

    1. Да, можно. Ошибка: “не верные логин и пароль”. Связана она с тем что вы вводите логин как “admin”, а нужно “.\admin”. Под этим же пользователей создавайте VPN подключение в режиме “Только для меня”.
      PS: Под 2012 все отлично работает.

      1. Доброго!
        Скажите, а можно изменить программу чтобы можно было выбрать любое VPN соединение, а не только созданное “Для меня”? Столкнулся с такой проблемой, что при таком создании в терминальном сервере при подключении нового пользователя по RDP сразу разрывается соединение VPN, что очень не хорошо.
        Выход только если соединение создано с установленной галочкой “видимое для всех”.
        Или может поделитесь исходниками?

      2. Вы на самом терминальном сервере создаете под admin подключение, запускаете службу от имени admin. Далее служба начинает корректно управлять подключением, но при входящем RDP подключении у вас рвется связь. Я правильно понял?

  6. “Далее служба начинает корректно управлять подключением, но при входящем RDP подключении у вас рвется связь. Я правильно понял?”
    Да, именно так. И рвется из-за того что созданное соединение не общее.

    1. Очень странное поведение, т.к. служба ни коем образом не взаимодействует с сессиями пользователей, а RDP сессии никак не могут влиять на сетевые подключения (рубить сук на котором сидят, т.к. они могут подключаться как раз благодаря VPN каналу сервера). Попробую воспроизвести на 2008R2 если подтвердится, то попробую починить…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.