Как известно, в Windows из коробки напрочь отсутствует способ автоматического дозвона, в частности установления надёжного соединения по VPN, чтобы оно не разрывалось никогда, и всегда восстанавливалось в случаях временного исчезновения интернета. Такая возможность давно есть в роутерах, например Mikrotik, но что делать, если в сети такого роутера нет и соединение необходимо поднять на Windows, причём исключительно средствами системы? Для этого нам на помощь приходит планировщик заданий и команда бесконечного дозвона из командной строки.

Первое, что нужно сделать — создать само VPN-соединение с нужными нам настройками, назовём его SmartVPN. По ходу мастера настройки обязательно нужно отметить «Разрешить использовать это подключение другим пользователям», так как дозваниваться мы будем от имени системы.

В параметрах соединения убираем галочки:

  • Отображать ход подключения
  • Запрашивать имя, пароль, сертификат и т. д.
  • Включать домен входа в Windows
  • Перезвонить при разрыве связи

При необходимости убираем использование основного шлюза в удалённой сети и корректируем другие настройки.

Второй этап состоит из создания задачи по запуску бесконечного цикла, который будет проверять и восстанавливать соединение, если оно не подключено. Для этого в планировщике создаём задачу, которая будет запускаться при включении компьютера и запускаться от имени системы, а действием указываем запуск программы:

cmd /c "for /l %x in (0,0,0) do (rasdial SmartVPN Login Pass & timeout 5)"

Где cmd — программа командной строки, а остальное — её параметры, при этом SmartVPN — название соединения, Login и Pass — логин и пароль для дозвона соответственно.

Команда timeout делает паузу в 5 секунд перед следующей попыткой дозвона, при этом если соединение уже установлено, то ничего не произойдёт. Также timeout не существует на WinXP/2003, так что если вы где-то её используете, нужно будет городить замену через ping. Запуск от имени системы позволяет скрыть консольные окна и дозвон можно будет увидеть разве что в процессах и по запущенной задаче в планировщике. Существует не консольная программа дозвона rasphone, где пароль указывать не нужно (будет использован сохранённый в системе для этого соединения), но пользоваться ей никак нельзя — при ошибках она будет выводить графические сообщения и дозвон прекратится.

P. S. Если вы хотите сделать так, чтобы задача не висела в планировщике в статусе работы, замените «cmd /c» в начале команды на «cmd /c start cmd /c», таким образом процесс дозвона дальше не будет зависеть от планировщика.

Готовый xml-файл задачи для импорта: SmartVPN.xml [3 KB]

Автоматический дозвон VPN-соединения в Windows

13 мыслей о “Автоматический дозвон VPN-соединения в Windows

  • 29.05.2018 в 14:14
    Постоянная ссылка

    Спасибо. Очень много перерыл, но более простого и рабочего как в этой заметке не нашел.

    Ответ
  • 21.08.2018 в 13:46
    Постоянная ссылка

    Использую VPN немного для другой цели — для доступа к домашней и дачной сети извне.
    У меня нет «белого IP» и приобрести его невозможно у текущего оператора.
    DDNS работает, но и это бесполезно, потому что соединения извне тупо закрыты провайдером.
    Поэтому использую вот такой VPN сервис — (реклама) Они не предоставляют выход в интернет, но объединяют мои туннели — один с дачи, другой с смартфона.
    Вдруг кому-то это поможет.

    Ответ
    • 03.05.2020 в 14:09
      Постоянная ссылка

      Его нужно запускать не в командной строке, а пакетным файлом или в планировщике.

      Ответ
  • 04.02.2019 в 18:56
    Постоянная ссылка

    Когда у меня ещё небыло роутера и провод с интернетом был воткнут в комп, я убрал галочки в параметрах соединения:
    Отображать ход подключения
    Запрашивать имя, пароль, сертификат и т. д.

    и оставил:
    Включать домен входа в Windows
    Перезвонить при разрыве связи

    А ярлык соединения перетащил в пуск — автозапуск и и при входе в систему сразу шел дозвон. Такой вот ламер вэй)
    Описанный в статье способ гороздо грамотней — админ вэй.

    Ответ
  • 15.02.2019 в 17:46
    Постоянная ссылка

    «Запуск от имени системы позволяет скрыть консольные окна и дозвон можно будет увидеть разве что в процессах и по запущенной задаче в планировщике.» — я импортировал ваш xml при создании задачи планировщика (изменил только своё название и логин с пассом) и все равно при загрузке юзера на рабочий стол вылетает консольное окно и отображает каждые 5 секунд скрипт. Поставил в настройках задания галочку Hidden — все равно видно консольное окно..

    Ответ
    • 15.02.2019 в 18:28
      Постоянная ссылка

      да, забыл сразу сказать — Win7 64-bit Ultimate, все обновления (включая сегодняшний вам UpdatePack7R2, огромное вам за него спасибо, каждый месяц жду его выпуска)

      Ответ
      • 15.02.2019 в 18:47
        Постоянная ссылка

        Убедитесь, что задача выполняется от имени системы, иначе это может означать, что под системной записью работаете вы — такое может быть, например, при повреждённом профиле.

        Ответ
  • 26.12.2019 в 23:24
    Постоянная ссылка

    Спасибо большое, работает, но пару раз в день соединение остается в состоянии «подключено», но трафик через него не идет, приходилось отключать вручную, после чего скрипт восстанавливал связь.
    Немного модифицировал, получил такое:

    cmd /c start cmd /c "for /l %x in (0,0,0) do (rasdial VPNName UserName Password & ping -n 1 192.168.0.1 |>nul find /i "TTL=" && (timeout 5) || (rasdial VPNName /disconnect))"

    В начале цикла устанавливается соединение (или проверяется его состояние), затем отправляем пинг в удаленную сеть, если не проходит, значит надо разорвать соединение, если проходит, то ждем 5 секунд.

    Ответ
    • 03.05.2020 в 14:15
      Постоянная ссылка

      Можно и так, но я бы вместо поиска TTL проверял ErrorLevel пинга.
      И три запроса (ping -n 3) будет гораздо надёжнее.

      Ответ
    • 07.02.2024 в 16:49
      Постоянная ссылка

      По ходу мастера настройки обязательно нужно отметить «Разрешить использовать это подключение другим пользователям», так как дозваниваться мы будем от имени системы.

      Вероятно вы пропустили этот пункт.

      Ответ

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

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