faq обучение настройка
Текущее время: Сб апр 20, 2024 01:13

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Ср авг 07, 2019 17:00 
Не в сети

Зарегистрирован: Вт июл 10, 2007 12:42
Сообщений: 7188
Откуда: Екатеринбург
Вопрос о создании дополнительного маршрута после поднятия 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.


Вложения:
add_vpn_route_v1.30.txt [1.37 KiB]
Скачиваний: 445

_________________
6 x DFL-210, 2 x DFL-800. Для DFL-210/260/800/860 лучшая прошивка 2.27.08.03 (for WW). СКАЧАТЬ.
Совет: Не используйте в IP- и Routing-правилах сочетание any/all-nets нигде, кроме временных правил. Иначе возможны бреши в безопасности и несрабатывание последующих правил.
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB