Вопрос о создании дополнительного маршрута после поднятия VPN соединения всплывает на этом форуме достаточно часто.
Как известно, в PPTP протоколе передача дополнительных маршрутов пользователю не предусмотрена, кроме того маршрута, который определяется классом сети, к которой происходит подключение.
Для решения этой проблемы приходится прописывать маршрут вручную, либо пользоваться сторонним клиентским ПО, выполняющим нужные действия.
Чтобы упростить эту задачу и остаться в рамках стандартного ПО ОС Windows я написал батник. Он назначает маршрут для дополнительной сети при VPN соединении, т.е находит шлюз для нужной сети в таблице маршрутов и добавляет нужный маршрут.
Выкладываю его сюда. Может быть еще кому-то пригодится. Вопросы, пожелания и конструктивная критика приветствуются.
В коде батника используется временный файл, из которого тут же читается переменная. Вероятно, использования этого временного файла можно избежать, читая переменную сразу с консоли. У меня с ходу это не получилось. Может быть, кто-то подскажет как упростить эту процедуру?
Код батника:
Код:
@echo off
Rem назначение маршрута для дополнительной сети при VPN соединении
Rem (Находим шлюз для нужной сети в таблице маршрутов и добавляем нужный маршрут)
Rem (Нужны права администратора. Можно назначить в ярлыке на этот батник)
Rem Версия 1.30, 07.08.2019
Rem Временный вспомогательный файл
set tmp_file=_tmp_file_@Q56RtH0LkA-6nC
Rem Искомая VPN сеть
set _network=172.17.0.0
Rem Назначаемая дополнительная сеть вместе с маской
set _add_network=192.168.34.0 mask 255.255.255.0
Rem Копируем строку найденной сети во временный файл
route print|findstr /c:"%_network%" > %tmp_file%
Rem Копируем в переменную найденную строку
set /p str=<%tmp_file%
Rem Удаляем временный файл
del /q %tmp_file%
rem goto Yes
Rem Если сеть не VPN, то выходим и ничего не делаем
if "%str:~36,15%"==" On-link " (
echo.
echo ********************************************************************
echo VPN network %_network% not found! Nothing to do...
echo ********************************************************************
echo.
pause
exit /b
)
:Yes
Rem Выделяем шлюз
set str=%str:~53,15%
Rem Назначаем дополнительный временный маршрут
Rem (Нужны права администратора)
set _command=route delete %_add_network%
echo %_command%
%_command%
set _command=route add %_add_network% %str%
echo %_command%
%_command%
pause
exit /b
Файл батника лежит во вложении. Только надо изменить его тип с txt на bat или cmd.
_________________
6 x
DFL-210, 2 x
DFL-800. Для
DFL-210/260/800/860 лучшая прошивка 2.27.08.03 (for WW).
СКАЧАТЬ.Совет: Не используйте в IP- и Routing-правилах сочетание
any/all-nets нигде, кроме временных правил. Иначе возможны бреши в безопасности и несрабатывание последующих правил.