Как известно, в 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]
Я подсоединял в Ваш скрипт уже существующие соединения. Новые не создавал. попробую — отпишусь
Да, осознаю. Если пересоздать подключение с галочкой «Разрешить использовать это подключение другим пользователям» тогда Ваш скрипт заработал. Я пропустил этот момент. Создавал на существующих соединениях. Прошу прощения
от системы, я имею ввиду. В понедельник перепроверю на 2016 сервере — но думаю, все будет хорошо