Автоматическое добавление маршрута после успешного VPN-подключения в Windows 10
Я пытаюсь на моем W10 выполнить автоматическую команду "route" после успешного VPN-подключения. Я попробовал это, основываясь на этом коротком описании, которое относится к W7, но кажется очень похожим, но я не могу заставить его работать.
- Мое VPN-соединение в порядке. Он подключается и отключается в любое время без проблем.
- Моя команда маршрута в порядке. Если я запускаю его вручную после подключения VPN, все работает нормально.
- Конечно, мое VPN-соединение не использует удаленный шлюз в качестве шлюза по умолчанию. Я хочу сделать "разделенное туннелирование".
Я исследовал, и событие Windows 20225 остается таким же на W10 (RAS Connection Installishement). Так что это правильно... почему не запускается команда маршрута? Я могу видеть 20225 событий с RasClient в качестве источника в средстве просмотра событий приложения после подключения VPN.
Конечно, прежде чем пытаться все это, я пытался создать маршрут "постоянно", используя -p
параметр в команде route, но он не работает, потому что интерфейс VPN не существует, когда этот маршрут добавляется при каждой загрузке, поэтому не является допустимым параметром. Так должно быть запланировано.
Я выполнил задачу с повышенными привилегиями с тем же результатом и пометил флажок "Выполнить с повышенными привилегиями". Задача отображается как "никогда не запускается". И если я пытаюсь запустить его вручную, он говорит: "Служба планировщика заданий недоступна. Планировщик заданий попытается подключиться к нему". Но планировщик задач работает нормально, другие задачи можно запланировать или выполнить вручную, и они работают.
Кто-нибудь достиг этого успешно?
РЕДАКТИРОВАТЬ Я попытался изменить триггерную часть, чтобы изменить "Basic" на "Custom", и я поместил фильтр XPath в поле XML, пытаясь найти идентификатор события:
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[(EventID=20225)]]</Select>
</Query>
</QueryList>
Это тоже не сработало.
Проблема та же. Задача отображается как "Никогда не запускается".
EDIT2 Я заметил в средстве просмотра событий, что всегда, после успешного VPN-соединения (id 20225) всегда есть другое событие (id 900), которое может быть связано... возможно, все настроено, но что-то блокирует триггер... Я не не знаю Смотрите этот скриншот (извините, скриншот на испанском):
2 ответа
Наконец, я не смог заставить его работать... так что, к сожалению, решил искать альтернативу. Я сделал пакетный файл, используя rasdial, который работает как шарм. Единственная "проблема" - команда маршрута должна запускаться с повышенными привилегиями. Это потому, что я положил runas
с /savedcred
аргумент, который будет запрашивать пароль только один раз, и тогда он будет работать автоматически. Затем для vpn вы можете поставить свой пароль (в открытом виде!) Или оставить set mypass="*"
спрашивать пароль каждый раз.
Вот мой код:
@echo off
cls
echo.
REM put your VPN connection name here
set myvpn="Your VPN name"
REM put your user here
set myuser="foo"
REM put your pass here. Leave * for asking
set mypass="testpass"
REM put your win admin user here
set winadmin="administrator"
REM put your network route here
set network="192.168.8.0"
REM put your network mask here
set mask="255.255.255.0"
REM put your gateway mask here
set gateway="192.168.1.1"
ipconfig | find /i %myvpn% > nul 2>&1
if %ERRORLEVEL% == 0 (
echo "VPN already connected. Disconnecting..."
echo.
rasdial %myvpn% /disconnect
runas.exe /user:%winadmin% /savedcred "route delete %network% mask %mask% %gateway%"
) else if %ERRORLEVEL% == 1 (
echo "VPN not connected. Connecting..."
echo.
rasdial %myvpn% %myuser% %mypass%
runas.exe /user:%winadmin% /savedcred "route add %network% mask %mask% %gateway%"
)
Надеюсь, это кому-нибудь поможет.
На Win 10 у Powershell есть доступный командлет, который добавляет маршруты к VPN-соединению и снова удаляет их при отключении VPN: Add-VpnConnectionRoute. Работает без указания идентификатора интерфейса.
Основной синтаксис выглядит так:
Add-VpnConnectionRoute -ConnectionName "Имя VPN-подключения" -DestinationPrefix 10.0.0.0/16
После ввода этой команды маршруты будут созданы / удалены автоматически при подключении / отключении VPN.