Создание скрипта переключения политик для VPN в роутере Keenetic

Как включать и выключать VPN через скрипт почти мгновенно

Вступление

Host – устройство в сети
Policy – правила доступа для конкретных устройств

Роутер подключен к собственному серверу VPN по протоколу OpenVPN.
Переназначением политик (Policy) доступ предоставляется или нет любому устройству в сети.

Через Policy на роутере настроены два варианта – с использованием VPN
и без использования VPN для конкретного устройства.

Часто приходится включать и выключать доступ по VPN через web-интерфейс роутера.
Это довольно долгий путь. Авторизация, переходы в меню, перетаскивание мышью значка устройства в необходимую Policy. Затем обратный процесс.

Задача: Включать и выключать VPN через скрипт почти мгновенно.

Реализация

Получить доступ к управлению роутером можно с помощью Telnet через командную строку:
 >telnet 192.168.1.1

Если Telnet не активирован, включаем его в настройках Windows.

Отсутствие доступа по Telnet
Активация Telnet


После активации Telnet повторяем вход в командной строке.

Затем вводим имя пользователя и пароль, подключаемся к роутеру.
Можно создать отдельного пользователя с доступом к роутеру только по Telnet.

Для входа в самом роутере создан пользователь с именем telnet

Чтобы узнать все возможные политики на роутере используем команду:
>show ip policy

Description – пользовательское описание политики в роутере.

Теперь нужно узнать MAC адрес [xx:xx:xx:xx:xx:xx] нужного устройства в списке устройств роутера и затем использовать команду для включения нужной политики Policy[x] (Policy0,Policy1, Policy2, …) для этого устройства:

ip hotspot host [xx:xx:xx:xx:xx:xx] policy Policy[x]

Политика для конкретного устройства изменена.

Код скрипта

Скрипт можно создать с помощью встроенного в Windows языка сценариев VBScript  .

Создаем новый текстовый файл, расширение изменяем на .vbs.
Открываем и редактируем команды в блокноте.

Сначала открываем экземпляр командной строки:

Dim WshShell
Set WshShell = WScript.CreateObject ("WScript.Shell")
WshShell.run "cmd.exe"

Ждем некоторое время. Зависит от системы, можно увеличить время ожидания для надежности:

WScript.Sleep 500

Подключемся по Telnet. Ожидание:

WshShell.SendKeys "telnet 192.168.1.1"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000

Передаем имя пользователя и пароль:

WshShell.SendKeys "[пользователь]"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 100
WshShell.SendKeys "**********"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 100

Меняем политику для конкретного устройства:

WshShell.SendKeys "ip hotspot host [xx:xx:xx:xx:xx:xx] policy Policy[x]"
WshShell.SendKeys ("{Enter}")

Сначала выходим из сеанса Telnet, затем выходим из сеанса командной строки:

WshShell.SendKeys "exit"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 1000
WshShell.SendKeys "exit"
WshShell.SendKeys ("{Enter}")
WScript.Quit

Сохраняем файл и запускаем. Политика для устройства изменена. Чтобы вернуться к предыдущей политике или включить какую-то другую политику, нужно создать копию этого скрипта и изменить Policy[x] в коде.

Скрипты можно назначить на дополнительные кнопки клавиатуры и действие будет выполняться нажатием одной кнопки.

В зависимости от системы и настроек времени ожидания между командами, время выполнения скрипта составляет 3-4 секунды.