Андрей Смирнов
Время чтения: ~15 мин.
Просмотров: 41

Добавление маршрутов при работе с VPN (VPN маршруты)

vpn-topology-000.pngПродолжая разговор о виртуальных частных сетях (VPN) следует обязательно коснуться вопроса структуры создаваемой сети, которая в свою очередь зависит от выполняемых задач. Неверные решения на стадии проектирования могут сказаться далеко не сразу, а по мере роста и развития инфраструктуры, когда поменять что-либо «малой кровью» будет очень проблематично. В статье мы рассмотрим типовые сценарии использования VPN, области их применения, достоинства и недостатки.

Мы не будем рассматривать решения на базе топологии L2, когда сети объединяются на канальном уровне, таких сценариев следует избегать, допуская их только в том случае, когда вам действительно нужен L2-туннель.

Очень часто L2-решения используют начинающие администраторы, которые испытывают затруднения с маршрутизацией и таким образом решают вопрос недостатка знаний и практических навыков. Но по факту бездумное использование соединений на канальном уровне приносит только пласт новых проблем, которые будут накапливаться по мере роста сети и решить которые без существенного изменения сетевой структуры будет невозможно.

Для оставшегося большинства задач следует использовать L3 VPN, работающий на сетевом уровне и использующий маршрутизацию, которая позволяет эффективно управлять потоками трафика и строить достаточно сложные сетевые решения. В данной статье мы не будем подробно разбирать вопросы маршрутизации, для знакомства с ее основами рекомендуем обратиться к другой нашей статье.

Соединение хост-хост (Сквозной VPN, End-to-End)

Самая простая схема, при которой туннель непосредственно соединяет два узла. В данном случае VPN-сервер не является маршрутизатором и клиент не имеет доступа за его пределы. В данной схеме не используется маршрутизация и нет требований к локальным адресам клиента и сервера.

vpn-topology-001-thumb-600xauto-9668.pngДанное решение используется в первую очередь для создания защищенного канала связи для удаленной работы с сервисами, имеющими недостаточный уровень безопасности. Например, для организации удаленного доступа бухгалтера к базам 1С:Предприятия, либо для доступа к административной панели расположенного в сети интернет сервера.

Также подобное решение часто используют для защиты недостаточно защищенных протоколов, скажем FTP или POP3, если вариант с SSL по какой-либо причине (чаще всего обратной совместимости) недоступен.

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

Соединение хост — сеть (Удаленный доступ, End-to-Site)

В случаях, когда удаленному сотруднику требуется полный доступ к сети предприятия используют несколько иную схему. В этом случае VPN-сервер должен являться маршрутизатором, а адресное пространство клиента и локальной сети не должно пересекаться. Именно поэтому мы категорически не рекомендуем использовать в локальных сетях подсети 192.168.0.0 и 192.168.1.0, которые широко используются в сетевом оборудовании уровня SOHO (для дома и малого офиса), так как в этом случае вы с очень большой долей вероятности столкнетесь с пересечением адресного пространства.

vpn-topology-002-thumb-600xauto-9671.pngДля того, чтобы удаленный компьютер имел доступ к локальной сети нам потребуется использовать маршрутизацию. Для этого на клиенте потребуется создать маршрут, который укажет, что все пакеты для сети 192.168.51.0 следует направлять через туннель на адрес VPN-сервера 10.10.0.1. Никаких обратных маршрутов со стороны локальной сети указывать не нужно.

Как и в предыдущем сценарии следует понимать, что подобное соединение дает доступ внутрь периметра и требует доверия к удаленному пользователю. В ряде случаев, когда уровень доверия низок, имеет смысл изолировать удаленных пользователей в DMZ-зоне и контролируя с помощью брандмауэра их доступ к остальной части сети.

Еще один сценарий использования подобного соединения — административный, используемый системным администратором для доступа к собственной сети из любой точки земного шара.

Соединение сеть-сеть (Site-to-Site)

Наиболее популярная в корпоративной среде схема, позволяющая соединить сети офисов между собой. В этом случае туннель обычно поднимается между маршрутизаторами сетей, хотя это не обязательно, но при расположении VPN-сервера и клиента на отдельных узлах сети потребуется дополнительная маршрутизация.

vpn-topology-003-thumb-600xauto-9674.pngВ нашем примере узлы VPN-сети совпадают с основными шлюзами и на каждом их них потребуется добавить дополнительный маршрут, который будет направлять пакеты к удаленной сети на другую сторону туннеля.

При наличии нескольких филиалов схема немного усложнится. Так как VPN — это всегда соединения точка-точка, то следует понимать, что даже если различные узлы VPN-сети находятся в едином адресном пространстве обмен трафиком возможен только между двумя концами туннеля. Все прочие взаимодействия решаются исключительно с помощью маршрутизации.

vpn-topology-004-thumb-600xauto-9677.pngКак видно из следующей схемы, два филиала с сетями 192.168.41.0/24 и 192.168.31.0/24 могут общаться между собой исключительно через сервер центрального офиса. Все пакеты для иных сетей филиалы направляют на VPN-адрес офиса — 10.10.0.1, потому как если указать для 41-й сети путь к 31-й через 10.10.0.2, то такой маршрут работать не будет.

Почему? Потому что туннель — это точка-точка, в данном случае у нас есть соединения 10.10.0.2-10.10.0.1 и 10.10.0.3-10.10.0.1, но соединения 10.10.0.2 — 10.10.0.3 нет и быть не может. Понимание данного факта заставляет по-новому взглянуть на потоки трафика между удаленными сетями и предполагает построение оптимальной топологии с учетом этого факта.

Допустим сети 31 и 41 территориально расположены в одном городе и предполагают большой объем трафика между ними (скажем филиал и производственная площадка). В этом случае нет никакой необходимости гонять трафик через центральный офис и более правильно будет настроить два VPN-канала: между 31-й и 51-й сетями (филиал — офис) и 31-й и 41-й (филиал — производство), а благодаря маршрутизации мы можем также без проблем настроить соединение офис — производство через филиал.

Доступ в интернет

Если быть формалистами, то данный сценарий к виртуальной частной сети (VPN) не относится, но использование VPN-соединений для доступа в интернет становится все более и более популярным, поэтому рассмотрим и этот сценарий.

В каких случаях использование VPN для доступа в интернет оправдано? В первую очередь низкий уровень доверия к текущей сети. Скажем вы находитесь в командировке и вынуждены использовать гостиничный Wi-Fi, вы не знаете, что это за сеть и какой у нее уровень безопасности, поэтому для работы будет вполне оправданно поднять VPN-соединение с корпоративным шлюзом и уже через него выходить в глобальную сеть.

Другой сценарий — это доступ к сайтам, которые недоступны через вашего основного провайдера или для вашего регионального расположения. В этом случае VPN-сервер должен располагаться в юрисдикции, из которой доступ к интересующему сайту ничем не ограничен.

vpn-topology-005-thumb-600xauto-9680.pngТак если вы занимаетесь работой с американскими интернет-магазинами, то вам понадобится VPN-сервер в США, чтобы вы выглядели для сайтов резидентами этой страны.

В подобных случаях нет никакой необходимости пускать в туннель весь исходящий трафик, более разумно настроить правила, когда через VPN будут работать только необходимые сайты, а весь остальной трафик пойдет через основного провайдера.

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

Routes-VPN.png

Добрый день, уважаемые читатели. Недавно столкнулся с одной проблемой, один из моих клиентов попросил настроить VPN тоннель на роутере для связи с одним из его серверов, я это настроил, но заметил, что после добавления VPN соединения на ПК с которого я подключаюсь к VPN серверу, доступ в интернет начинает по умолчанию идти через VPN подключение (что напрочь убивает скорость интернета на ПК). Я долго искал в интернете способы решения данного вопроса, но ничего толкового я не нашел.  Однако я понимал что дело в маршруте через который идет доступ в Интернет. Я долго копался в метриках и маршрутах и решил данную проблему следующим образом:

1. Заходим в центр управления сетями и общим доступом и переходим во вкладку изменение параметров адаптера:

centr-upravleniya-setiami-i-obshim-dostupom.png

2. Кликаем правой клавишей по ранее созданному VPN подключению, заходим в свойства, в свойствах находим раздел Сеть и заходим в настройки протокола Интернет версии 4.

О том как создать VPN подключение на ПК под управлением ОС семейства Windows я писал в своей статье.

svoistva-vpn.png

3. Далее переходим во вкладку дополнительно:

svoistva-vpn-2.png

4. Чтобы не использовать VPN сервер основным маршрутом выхода в Интернет ставим галочку на пункте «Отключить добавление маршрута основанное на классе» и сохраняем изменения.

svoistva-vpn-3.png

Для доступа к серверу через VPN подключение добавляем маршрут в командной строке, открытой от имени Администратора.

route add 192.168.9.0 mask 255.255.255.0 192.168.2.1, где 192.168.9.0 — сетевой адрес, 255.255.255.0 — сетевая маска, 192.168.9.0 — сетевой шлюз (IP адреса настроенные на VPN сервере)

route-add.png

После этого при работе с VPN выход в интернет будет осуществляться через наш основной шлюз, т.е. проблема решена.

VPN-route-000.jpgОрганизация каналов между удаленными сетями посредством VPN-соединения одна из самых популярных тем на нашем сайте. В тоже время, как показывает читательский отклик, наибольшие затруднения вызывает правильная настройка маршрутизации, хотя мы специально уделяли внимание этому моменту. Проанализировав наиболее часто задаваемые вопросы, мы решили посвятить теме маршрутизации отдельную статью. Есть вопросы? Надеемся, что после прочтения данного материала их станет меньше.

Прежде всего разберемся, что такое маршрутизация. Маршрутизация — это процесс определения маршрута следования информации в сетях связи. Скажем честно, тема эта весьма глубокая и требующая солидного багажа теоретических знаний, поэтому в рамках данной статьи мы сознательно упростим картину и коснемся теории ровно в той мере, которой будет достаточно для осмысления происходящих процессов и получения практических результатов.

Возьмем произвольную рабочую станцию, подключенную к сети, каким образом она определяет куда посылать тот или иной пакет? Для этой цели предназначена таблица маршрутизации, которая содержит перечень правил для всех возможных адресов назначения. На основании этой таблицы хост (или маршрутизатор) принимают решение, на какой интерфейс и адрес назначения отправить пакет, адресованный определенному получателю.

Чтобы не быть голословными рассмотрим таблицу маршрутов самой обыкновенной рабочей станции. В Windows системах это можно сделать командой:

route print

В итоге мы увидим следующую таблицу:

VPN-route-001-thumb-autox636-6190.jpgВсе очень просто, нас интересует секция IPv4 таблица маршрута, первые две колонки содержат адрес назначения и маску сети, затем следует шлюз — узел которому следует перенаправить пакеты для указанного назначения, интерфейс и метрика. Если в колонке Шлюз указано On-link, то это означает что адрес назначения находится в одной сети с хостом и доступен без маршрутизации. Метрика определяет приоритет правил маршрутизации, если адрес назначения имеет в таблице маршрутов несколько правил, то используется тот, что имеет меньшую метрику.

VPN_route-4-thumb-600xauto-7955.png

Наша рабочая станция принадлежит к сети 192.168.31.0 и, согласно таблице маршрутов, все запросы к данной сети отправляет на интерфейс 192.168.31.175, что соответствует сетевому адресу это станции. Если адрес назначения находится в одной сети с адресом источником, то доставка информации происходит без использования IP-маршрутизации (сетевой уровень L3 модели OSI), на канальном уровне (L2). В противном случае пакет отправляется узлу, указанному в соответствующему сети назначения правилу таблицы маршрутов.

Если такого правила нет, то пакет отправляется по нулевому маршруту, который содержит адрес основного шлюза сети. В нашем случае это адрес роутера 192.168.31.100. Нулевым этот маршрут называется потому, что адресом назначения для него указывается 0.0.0.0. Этот момент является очень важным для дальнейшего понимания процесса маршрутизации: все пакеты, не принадлежащие данной сети и не имеющие отдельных маршрутов, всегда отправляются основному шлюзу сети.

Что сделает маршрутизатор, получив такой пакет? Прежде всего разберемся, чем отличается маршрутизатор от обычной сетевой станции. Если говорить крайне упрощенно, то маршрутизатором (роутером) является сетевое устройство, которое настроено передавать пакеты между сетевыми интерфейсами. В Windows это достигается включением службы Маршрутизация и удаленный доступ, в Linux заданием опции ip_forward.

Решение о передаче пакетов в этом случае также принимается на основании таблицы маршрутизации. Посмотрим, что содержит данная таблица на самом обычном роутере, например, описанном нами в статье: Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3. В Linux-системах получить таблицу маршрутов можно командой:

route -n

Как видим, наш роутер содержит маршруты к известным ему сетям 192.168.31.0 и 192.168.3.0, а также нулевой маршрут к вышестоящему шлюзу 192.168.3.1.

VPN-route-002-thumb-600xauto-6193.jpgАдрес 0.0.0.0 в колонке шлюза (Gateway) обозначает, что адрес назначения доступен без маршрутизации. Таким образом все пакеты с адресами назначения в сетях 192.168.31.0 и 192.168.3.0 будут отправлены на соответствующий интерфейс, а все остальные пакеты будут переданы дальше по нулевому маршруту.

Следующий важный момент — адреса приватных (частных) сетей, они же «серые», к ним относятся три диапазона:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

Данные адреса могут свободно использоваться любым желающим и поэтому они не маршрутизируются. Что это значит? Любой пакет с адресом назначения принадлежащим одной из этих сетей будет отброшен маршрутизатором, если для него нет отдельной записи в таблице маршрутизации. Проще говоря, маршрут по умолчанию (нулевой) для таких пакетов маршрутизатором не применяется. Также следует понимать, что данное правило применяется только при маршрутизации, т.е. при передаче пакетов между интерфейсами, исходящий пакет с «серым» адресом будет отправлен по нулевому маршруту, даже если данный узел сам является маршрутизатором.

Например, если наш роутер получит входящий пакет с назначением, скажем, 10.8.0.1, то он будет отброшен, так как такая сеть ему неизвестна и адреса этого диапазона не маршрутизируются. Но если мы обратимся к этому же узлу непосредственно с роутера, то пакет будет отправлен по нулевому маршруту шлюзу 192.168.3.1 и будет отброшен уже им.

Самое время проверить, как это все работает. Попробуем с нашего узла 192.168.31.175 пропинговать узел 192.168.3.106, который находится в сети за роутером. Как видим, это нам удалось, хотя таблица маршрутов узла не содержит никаких сведений о сети 192.168.3.0.

VPN-route-003-thumb-600xauto-6196.jpgКак это стало возможным? Так как узел-источник ничего не знает о сети назначения, то он отправит пакет на адрес шлюза. Шлюз проверит свою таблицу маршрутов, обнаружит там запись для сети 192.168.3.0 и отправит пакет на соответствующий интерфейс, в этом несложно убедиться выполнив команду трассировки, которая покажет весь путь нашего пакета:

tracert 192.168.3.106

VPN-route-004-thumb-600xauto-6199.jpg Теперь попробуем выполнить пинг узла 192.168.31.175 с узла 192.168.3.106, т.е. в обратном направлении. У нас ничего не вышло. Почему?

VPN-route-005-thumb-autox603-6202.jpgДавайте внимательно посмотрим таблицу маршрутизации. Никаких записей для сети 192.168.31.0 она не содержит, поэтому пакет будет отправлен маршрутизатору 192.168.3.1, как основному шлюзу сети, который данный пакет отбросит, так как никаких данных о сети назначения не имеет. Как быть? Очевидно, что следует отправить пакет тому узлу, который содержит нужную информацию и может передать пакет по назначению, в нашем случае это роутер 192.168.31.100, который в данной сети имеет адрес 192.168.3.108.

Чтобы пакеты для сети 192.168.31.0 отправлялись именно ему, нам нужно создать отдельный маршрут.

192.168.31.0 mask 255.255.255.0 192.168.3.108

В дальнейшем мы будем придерживаться такой записи маршрутов, что она значит? Все просто, пакеты для сети 192.168.31.0 с маской 255.255.255.0 следует отправлять узлу 192.168.3.108. В Windows маршрут можно добавить командой:

route add 192.168.31.0 mask 255.255.255.0 192.168.3.108

В Linux:

route add -net 192.168.31.0 netmask 255.255.255.0 gw 192.168.3.108

Попробуем.

VPN-route-006-thumb-autox641-6205.jpgДавайте проанализируем результат, в таблице маршрутизации появился маршрут и все пакеты к сети 192.168.31.0 теперь отправляются роутеру этой сети, что видно из ответа команды ping, но до назначения не доходят. В чем дело? Самое время вспомнить, что одной из основных задач роутера является не только маршрутизация, но и функция сетевого экрана, который явно запрещает доступ из внешней сети внутрь. Если мы временно заменим данное правило разрешающим, то все будет работать.

VPN-route-007-thumb-600xauto-6208.jpgДобавленные вышеуказанными командами маршруты сохраняются до перезагрузки узла, это удобно, даже если вы сильно накуролесили, достаточно просто выполнить перезагрузку, чтобы отменить внесенные изменения. Чтобы добавить постоянный маршрут в Windows выполните команду:

route add 192.168.31.0 mask 255.255.255.0 192.168.3.108 -p

В Linux в /etc/network/interfaces, после описания интерфейса, следует добавить:

post-up route add -net 192.168.31.0 netmask 255.255.255.0 gw 192.168.3.108

Кстати, это не единственный способ настроить доступ из сети 192.168.3.0 в сеть 192.168.31.0, вместо того, чтобы добавлять маршрут для каждого узла, можно «научить» правильно отправлять пакеты маршрутизатор.

VPN-route-008-thumb-600xauto-6211.jpgВ этом случае узел источник не имеет записей о сети назначения и отправит пакет шлюзу, в прошлый раз шлюз такой пакет отбросил, но теперь мы добавили в его таблицу маршрутизации нужный маршрут, и он отправит пакет узлу 192.168.3.108, который доставит его по назначению.

Мы настоятельно рекомендуем самим потренироваться на аналогичных примерах, чтобы маршрутизация перестала быть для вас черным ящиком, а маршруты — китайской грамотой. После того как возникнет понимание, можно переходит ко второй части данной статьи.

Теперь рассмотрим реальные примеры по объединению сетей офисов через VPN-соединение. Несмотря на то, что чаще всего для этих целей используется OpenVPN и в наших примерах мы также подразумеваем решения на его основе, все сказанное будет справедливо для любого типа VPN-соединения.

Самый простой случай, когда VPN-сервер (клиент) и маршрутизатор сети располагаются на одном хосте. Рассмотрим схему ниже:

VPN-route-009-thumb-autox501-6214.jpgТак как теорию, надеемся, вы усвоили и закрепили на практике, проанализируем маршрут пакетов из сети офиса 192.168.31.0 в сеть филиала 192.168.44.0, такой пакет будет отправлен на шлюз по умолчанию, который является также VPN-сервером. Однако данный узел ничего не знает о сети назначения и должен будет откинуть данный пакет. В тоже время мы уже можем обратиться к маршрутизатору филиала по его адресу в VPN-сети 10.8.0.2, так как данная сеть доступна с маршрутизатора офиса.

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

192.168.44.0 mask 255.255.255.0 10.8.0.2

Теперь шлюз офиса, получив пакет для сети филиала, отправит его через VPN-канал маршрутизатору филиала, который, являясь узлом сети 192.168.44.0 доставит пакет по назначению. Для доступа из сети филиала в сеть офиса нужно прописать аналогичный маршрут на маршрутизаторе филиала.

Возьмем схему посложнее, когда маршрутизатор и VPN-сервер (клиент) являются разными узлами сети. Здесь возможны два варианта, передать нужный пакет непосредственно VPN-серверу (клиенту) или заставить это делать шлюз.

Сначала рассмотрим первый вариант.

VPN-route-010-thumb-autox475-6218.jpgДля того, чтобы пакеты для сети филиала попали в VPN-сеть мы должны добавить на каждый клиент сети маршрут к VPN-серверу (клиенту), в противном случае они будут отправлены шлюзу, который их отбросит:

192.168.44.0 mask 255.255.255.0 192.168.31.101

Однако VPN-сервер ничего не знает о сети филиала, но может отправлять пакеты в пределах VPN-сети, где есть интересующий нас узел сети филиала, поэтому направим пакет туда, добавив на VPN-сервере (клиенте) маршрут:

192.168.44.0 mask 255.255.255.0 10.8.0.2

Недостаток данной схемы — необходимость прописывать маршруты на каждом узле сети, что не всегда удобно. Его можно использовать если устройств в сети немного или требуется выборочный доступ. В остальных случаях задачу маршрутизации будет правильнее переложить на основной маршрутизатор сети.

VPN-route-011-thumb-autox475-6221.jpgВ этом случае сетевые устройства офиса ничего не знают о сети филиала и отправят пакеты для него по нулевому маршруту, шлюзу сети. Теперь задача шлюза перенаправить этот пакет VPN-серверу (клиенту), это просто сделать, добавив в его таблицу маршрутизации нужный маршрут:

192.168.44.0 mask 255.255.255.0 192.168.31.101

Про задачу VPN-сервера (клиента) мы упоминали выше, он должен доставить пакеты тому узлу VPN-сети, который является частью сети назначения или имеет маршрут к ней.

192.168.44.0 mask 255.255.255.0 10.8.0.2

Для доступа из сети филиала в сеть офиса потребуется добавить соответствующие маршруты на сетевые узлы филиала. Сделать это можно любым удобным способом, не обязательно также, как это сделано в офисе. Простой реальный пример: все компьютеры филиала должны иметь доступ к сети офиса, но не все компьютеры офиса должны иметь доступ в филиал. В таком случае в филиале добавляем маршрут к VPN-серверу (клиенту) на маршрутизаторе, а в офисе добавляем его только на нужные компьютеры.

В целом, если вы представляете, как работает маршрутизация и каким образом принимается решение о перенаправлении пакетов, а также умеете читать таблицу маршрутизации, то настройка правильных маршрутов не должна вызывать затруднений. Надеемся, что после прочтения данной статьи у вас их также не будет.

Используемые источники:

  • https://interface31.ru/tech_it/2019/07/nastraivaem-vpn-chast-2-struktura.html
  • http://blog.umicorp.ru/dobavlenie-marshrutov-pri-rabote-s-vpn-vpn-marshrutyi/
  • https://interface31.ru/tech_it/2015/08/organizaciya-vpn-kanalov-mezhdu-ofisami-marshrutizaciya.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации