28 марта 2024, 16:24

Цитата дня:

Единственный способ установить границы возможного - это выйти за них в невозможное.  Закон Кларка


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

Автор ival, 18 декабря 2020, 15:11

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Вниз

ival

18 декабря 2020, 15:11 Последнее редактирование: 18 декабря 2020, 22:11 от Уваров А.С.
Добрый день.

Я всегда был против использования сетей 192.168.0.0/24 в конечных сетях, но случилась ситуация при которой нужно было попасть в сеть 192.168.100.0/24.

Описание:

Есть пространство сетей: 10.1.1.0-10.1.254.254. Сети имеют разные размерности, от 23 до 28
Есть VPN сервер использующий L2tp over IPSec
Есть VPN клиенты: 10.2.1.0/24

При подключении VPN клиенту выдается маршрут на основе класса

IPv4 Route Table
============================================================
Active Routes:
Network Destination           Netmask          Gateway       Interface  Metric
                 0.0.0.0               0.0.0.0       192.168.0.1    192.168.0.147                     50
              10.0.0.0            255.0.0.0        10.2.1.254            10.2.1.18                     36
             10.2.1.18  255.255.255.255             On-link            10.2.1.18                    291

   ххх.ххх.ххх.ххх  255.255.255.255       192.168.0.1    192.168.0.147                     51
             127.0.0.0             255.0.0.0             On-link            127.0.0.1                    331
             127.0.0.1  255.255.255.255             On-link            127.0.0.1                    331
  127.255.255.255  255.255.255.255             On-link            127.0.0.1                    331
          192.168.0.0     255.255.255.0             On-link     192.168.0.147                    306
      192.168.0.147  255.255.255.255             On-link     192.168.0.147                    306
      192.168.0.255  255.255.255.255             On-link     192.168.0.147                    306
             224.0.0.0             240.0.0.0             On-link            127.0.0.1                    331
             224.0.0.0             240.0.0.0             On-link     192.168.0.147                    306
             224.0.0.0             240.0.0.0             On-link            10.2.1.18                     291
  255.255.255.255  255.255.255.255             On-link             127.0.0.1                    331
  255.255.255.255  255.255.255.255             On-link      192.168.0.147                    306
  255.255.255.255  255.255.255.255             On-link             10.2.1.18                    291
============================================================


Имеем ресурс по адресу 192.168.100.5 и к нему нужно получить доступ. Есть вариант заворачивать все на шлюз удаленной рабочей сети, но это вариант так себе. Второй вариант добавить маршрут в ручную, но сомневаюсь, что обычный офисный работник это может сделать. Добавить маршрут заранее не получится, т.к. нет интерфейса.

Есть решение, которое описано MS. Как полноценное решение его использовать конечно нельзя, но как костыль для нескольких пользователей сойдет.

Нам необходимо выполнить на компьютере VPN-клиента команду в PowerShell:

Add-VPNConnectionRoute -Connection "Имя VPN подключения" -DestinationPrefix 192.168.100.5/32 -PassThru


Результатом выполнения будет вывод на экран:

DestinationPrefix       192.168.100.5/32
InterfaceIndex
InterfaceAlias            Имя VPN подключения
AddressFamily           IPv4
NextHop                    0.0.0.0
Publish                      0
RuoteMetric               1
PolicyStore


Теперь при запуске VPN подключения с именем "Имя VPN подключения" в таблицу маршрутизации будет добавляться дополнительный маршрут


IPv4 Route Table
===========================================================
Active Routes:
Network Destination           Netmask          Gateway       Interface  Metric
                 0.0.0.0               0.0.0.0       192.168.0.1    192.168.0.147                     50
              10.0.0.0            255.0.0.0        10.2.1.254            10.2.1.18                     36
             10.2.1.18  255.255.255.255             On-link            10.2.1.18                    291

   ххх.ххх.ххх.ххх  255.255.255.255       192.168.0.1    192.168.0.147                     51
             127.0.0.0             255.0.0.0             On-link            127.0.0.1                    331
             127.0.0.1  255.255.255.255             On-link            127.0.0.1                    331
  127.255.255.255  255.255.255.255             On-link            127.0.0.1                    331
          192.168.0.0     255.255.255.0             On-link     192.168.0.147                    306
      192.168.0.147  255.255.255.255             On-link     192.168.0.147                    306
      192.168.0.255  255.255.255.255             On-link     192.168.0.147                    306
      192.168.100.5  255.255.255.255             On-link            10.2.1.18                    306
             224.0.0.0             240.0.0.0             On-link            127.0.0.1                    331
             224.0.0.0             240.0.0.0             On-link     192.168.0.147                    306
             224.0.0.0             240.0.0.0             On-link            10.2.1.18                     291
  255.255.255.255  255.255.255.255             On-link             127.0.0.1                    331
  255.255.255.255  255.255.255.255             On-link      192.168.0.147                    306
  255.255.255.255  255.255.255.255             On-link             10.2.1.18                    291

После того как соединение будет разрываться, маршрут удалиться автоматически.

Чтобы прекратить добавление дополнительного маршрута используется команда Remote-VPNConnectionRoute

Подробно про ключи можно прочитать в оф. документации https://docs.microsoft.com/en-us/previous-versions/windows/powershell-scripting/dn262649(v=wps.630)

Работает на Win 10, на win 8 не проверялось. Win 7 не поддерживается. К сожалению красиво оформлять долго, поэтому все криво косо, главное смысл.

 

Уваров А.С.

Ну не такой уж и костыль, вполне нормальное решение. Потому что других вариантов особо и нет. Если вы не против оформлю как статью.

ival

Ну не такой уж и костыль, вполне нормальное решение. Потому что других вариантов особо и нет. Если вы не против оформлю как статью.
Конечно не против.

Вверх