Задача:
Имеется подключение VPN, в котором отключено использование шлюза в удаленной сети.
Необходимо при установке этого подключения, добавлять маршрут на некую внутреннюю подсеть.
Решение:
В современных версиях Windows существует возможность автоматического добавления статических маршрутов при активации определённого VPN подключения. Когда VPN подключение разрывается, данный маршрут автоматически удаляется из таблицы маршрутизации Windows. Для добавления IPv4 или IPv6 маршрута для VPN подключения используется PowerShell командлет Add-VpnConnectionRoute.
Например, для добавления маршрута 192.168.111.0/24 через VPN соединение workVPN:
Код: Выделить всё
Add-VpnConnectionRoute -ConnectionName "workVPN" -DestinationPrefix 192.168.111.0/24 –PassThru
При активном соединении, требуется его переподключение для добавления новых маршрутов в в таблицу маршрутизации.
Новые маршруты привязаны к VPN подключению и добавляются при его запуске. При отключении от VPN сервера, маршруты автоматически удаляются.
Вывести список статических маршрутов для подключения:
Код: Выделить всё
(Get-VpnConnection -ConnectionName workVPN).Routes
Для удаления статических маршрут для VPN подключения:
Код: Выделить всё
Remove-VpnConnectionRoute -ConnectionName workVPN -DestinationPrefix 192.168.111.0/24 -PassThru
Более подробно читаем здесь.
Решение для устаревших ОС:
Для ОС ниже Windows 8 нет команды Add-VpnConnectionRoute, поэтому создаем батник, запускающийся от имени администратора, подключающий VPN и прописывающий маршрут:
Код: Выделить всё
@echo off
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
rasphone
route add 192.168.0.0 MASK 255.255.255.0 XXX.XXX.XXX.XXX
XXX.XXX.XXX.XXX - адрес шлюза, получаемый после установки VPN-соединения.