Могу ли я автоматически ROUTE ADD xxxx после того, как я установил VPN-подключение в Windows 7?

8

после того, как я установил VPN-подключение к своей работе / чему-либо еще, мне нужно зайти в командную строку и вручную добавить маршрут.

например.

ROUTE ADD 10.1.0.0 255.255.0.0 172.16.3.0 METRIC 1 или какая бы команда ни была.

Возможно ли, чтобы это происходило автоматически после успешного подключения VPN?

Pure.Krome
источник

Ответы:

4

Если вы хотите сделать это за 1 шаг, вы можете создать пакетный файл, который запускает rasdial для автоматизации вашего VPN-подключения, а затем выполняет ROUTE ADD:

rasdial "connection name" username password ('*' to prompt for password)
ROUTE ADD 10.1.0.0 255.255.0.0 172.16.3.0 

Предполагается, что вы подключаетесь к Microsoft VPN, но вы можете написать скрипт для клиента OpenVPN таким же образом:

openvpn c:\path\to\config-file.ovpn
ROUTE ADD 10.1.0.0 255.255.0.0 172.16.3.0 
nedm
источник
Клиент OpenVPN должен автоматически добавить соответствующие маршруты, при условии, что он настроен правильно.
MDMarra
Истинно для маршрутов, назначенных / отправленных с сервера, но могут быть дополнительные маршруты, которые вы хотите определить.
Недм
ООО! теперь это интересно :) Была опечатка в строке ROUTE ADD .. но кроме того, что .bat не работает, потому что он должен работать в привилегированном режиме :(
Pure.Krome
Да, «добавление маршрута» требует прав администратора, но вы должны иметь возможность щелкнуть правой кнопкой мыши значок панели задач командной строки и выбрать «Запуск от имени другого пользователя» и ввести учетные данные администратора, а затем запустить файл bat из командной строки. Я бы поместил файл .bat в любой каталог, который при этом оставляет командную строку по умолчанию, так что вы можете просто ввести vpnscript.bat или что-то еще после входа в систему без переключения каталогов. В качестве альтернативы, control-shift-click также должен открыть командную строку в привилегированном режиме / режиме администратора с UAC.
Недм
С подсказкой powershell от @ErikvO вы настраиваете ее и забываете о ней, обычно используя VPN-подключение, не требуя прав администратора.
Лоран
19

Если у вас несколько VPN, вы можете столкнуться с проблемой, что при подключении в произвольном порядке их идентификаторы интерфейса изменяются. В этом случае нормальный ROUTE -P ADD 10.0.0.0 MASK 255.255.0.0 10.0.0.1 IF 42не работает. В следующий раз при подключении VPN он может иметь другой номер интерфейса.

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

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

Add-VpnConnectionRoute -ConnectionName "VPN Connection Name" -DestinationPrefix 10.0.0.0/16

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

ErikvO
источник
Должен быть принятый ответ. Кстати, я не знал об этом "PowerShell" до этого ... Я не понимаю, почему эти команды не доступны в CMD. Еще одна глупость Microsoft ...
Лоран
+1 за Пауэлл. Удивляет меня, почему MS не добавляет еще одну вкладку в настройках IP - кроме того, что они все еще строят сменные панели управления для (в настоящее время) современного / мобильного пользовательского интерфейса.
Mayyit
1
Моя Windows 7 не имеет этой команды!
LatinSuD
3
netsh interface ipv4 add route [destination/prefixlength] "[interface/connection name]"

Я использую это, чтобы иметь дело с соединениями, которые имеют перекрытие подсети, добавляя статические маршруты для хостов на удаленных подсетях - серверах и т.п.

Стюарт Смит
источник
Это именно то, что мне было нужно, поскольку я использую Windows Server 2008. Решение PoswerShell не сработало.
Майкл Коксон
Это отлично работает для моего клиента Windows 7. Спасибо.
Вик
Это не является постоянным, и это требует, что VPN уже подключен, верно?
LatinSuD
Это правильно. У меня была проблема с перекрытием подсети, поэтому наличие постоянных маршрутов могло бы вызвать проблемы. Вы хотите, чтобы это происходило только после установления соединения. Я смотрел на использование триггеров событий через планировщик задач, но никогда не получал его согласованно. Для этого должна быть возможность создать службу, подписывающуюся на SENS (я думаю, что подключение и отключение интерфейса покрыто SENS), но перемещение по контексту безопасности для порождения другого процесса с правами администратора проблематично из-за UAC. Я полагаю, что это можно сделать, разрешив взаимодействие с рабочим столом и
Стюарт Смит
1

Вы можете сделать маршрут постоянным (я думаю, с route -p), поэтому вам не нужно вводить его каждый раз. Если вы используете openVPN, сервер может отправить маршрут клиенту: push "route 192.168.1.0 255.255.255.0"например. С другими VPN-серверами я не знаю, но, думаю, у них тоже может быть похожая опция.

Laurent
источник
так что это нельзя сделать, на стороне клиента .. и по требованию?
Pure.Krome
Я не знаю никакого способа сделать это (с openVPN) на стороне клиента и не постоянно, в отличие от ответа nedm, но будет необходимость запустить файл bat с правами администратора. Я думаю, что постоянный маршрут не является плохим решением, если вы не можете изменить конфигурацию сервера openVPN.
Лоран