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

4

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

мероприятие

OscarAkaElvis
источник
Если вы работаете в Windows 10, рассмотрите возможность использования PowerShell Add-vpnConnectionRoute в модуле VPNClient.
TMH

Ответы:

3

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

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

OscarAkaElvis
источник
3

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

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

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

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

Vorona
источник