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

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

Служба:

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

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

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

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

Сама служба: vpnredial2.0.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 – Добавлена кнопка “Удалить задание”.

04.08.2019 Обещанный релиз 2.0, включающий изменения:

  • Для запуска конфигуратора теперь не нужен ключ /config. Если приложение запускается в интерактивном режиме – оно запускается в режиме конфигурирования.
  • Добавлен доступ к системной книге.
  • Простой контроль исключений ip как строки на полноценный контроль по IP и по подсетям.
  • Добавлен контроль исключений по Wifi сетям.
  • Небольшие изменения в GUI.
  • Добавлена иконка 🙂

42 мысли о “Автоматическое подключение и переподключение 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 если подтвердится, то попробую починить…

  7. admin, приветствую!
    У меня на подключение расшарен ICS (Общий доступ к подключению к Интернету) – и это подключение в списке Вашего GUI не появляется.
    Это никак не исправить? 🙁

    Спасибо!

    1. ICS не работает с НЕ общими подключениями, а сервис не работает с ними… Попробую в будущих релизах сделать возможность использования VPN общих подключений.

  8. Есть стандартная команда Windows – rasdial (легко поднимает VPN, её безопасно можно зациклить) :
    C:\>rasdial /?
    USAGE:
    rasdial.exe entryname [username [password|*]] [/DOMAIN:domain]
    [/PHONE:phonenumber] [/CALLBACK:callbacknumber]
    [/PHONEBOOK:phonebookfile] [/PREFIXSUFFIX]

    C:\WINDOWS\system32\rasdial.exe [entryname] /DISCONNECT

  9. Подскажите, как быть в случае, если используется терминальный сервер? Ведь при подключение другого пользователя VPN соединение отваливается.

    1. Говорят, нужно системное (общее) подключение. Оно уже реализовано, но релиз пока не возможен, т.к. к условиям по IP адресам добавляю условия подключения к определенным WiFi сетям и еще не доделал. Кроме того, фильтра по IP делаю более серьезными с привязкой по интерфейсу…

  10. Подскажите: в 2018 году было обновление службы, а файл vpn.redial.exe в архиве от 30-08-17.
    Возможно поэтому у меня криво работает пинг: идет постоянное переподключение. И кнопка “удалить задание” отсутствует

  11. Спасибо огромное !

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

  12. Здравствуйте!
    При установке службы пишет: “Произошел сбой установки и был выполнен откат”.
    Как установить службу?

    1. 99% – вы указали имя пользователя при установке в формате “admin” вместо полного “.\admin”

      1. Да, вы правы, уже исправил, сервис установил.

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

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

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