Автоматическое добавление маршрута после успешного VPN-подключения в Windows 10

2722
OscarAkaElvis

Я пытаюсь на моем 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), которое может быть связано ... возможно, все настроено, но что-то блокирует триггер ... Я не не знаю Смотрите этот скриншот (извините, скриншот на испанском):

event

5
Если вы работаете в Windows 10, рассмотрите возможность использования PowerShell Add-vpnConnectionRoute в модуле VPNClient. tmh 7 лет назад 0

2 ответа на вопрос

2
OscarAkaElvis

Наконец, я не смог заставить его работать ... так что, к сожалению, решил искать альтернативу. Я сделал пакетный файл, используя 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%" ) 

Надеюсь, это кому-нибудь поможет.

2
Vorona

На Win 10 у Powershell есть доступный командлет, который добавляет маршруты к VPN-соединению и снова удаляет их при отключении VPN: Add-VpnConnectionRoute . Работает без указания идентификатора интерфейса.

Основной синтаксис выглядит так:

Add-VpnConnectionRoute -ConnectionName "Имя VPN-подключения" -DestinationPrefix 10.0.0.0/16

После ввода этой команды маршруты будут создаваться / удаляться автоматически при подключении / отключении VPN.

Похожие вопросы