Как избавиться от асимметричной маршрутизации трафика

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

Асимметричная маршрутизация при наличии роутера в локальной сети

Допустим, в локальной сети NGFW есть роутер, устанавливающий связь с другими сетями. NGFW - шлюз по умолчанию для клиентов сети. Требуется настроить маршрутизацию на NGFW так, чтобы клиенты сети 10.80.1.0/24 получали доступ в удаленную сеть 192.168.10.0/24 и обратно через роутер.

Пример неправильной топологии сети:

Здесь:

  • Ideco NGFW - шлюз для локальной сети 10.80.1.0/24.

  • 10.80.1.2 - роутер, который имеет доступ в удаленную сеть 192.168.10.0/24.

  • Красная стрелка - двусторонняя связь роутера с удаленным шлюзом (или тоже роутером), которая обеспечивает доступ к удаленной сети 192.168.10.0/24 (туннель к шлюзу, расположенному в интернете, или маршрут до роутера в соседнюю сеть предприятия).

  • Черные стрелки - трафик от хостов локальной сети 10.80.1.0/24 до удаленной сети 192.168.10.0/24 - через шлюз NGFW (10.80.1.1) и роутер (10.80.1.2).

  • Пунктирная стрелка - участок трафика, который роутер возвращает хостам локальной сети, минуя NGFW, что приводит к непринятию такого трафика хостами локальной сети.

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

Асимметричная маршрутизация при публикации сайтов через DNAT

Аналогичная ситуация складывается, когда в одной локальной сети находится хост и сервер, на котором работает ресурс, опубликованный в интернете при помощи DNAT-правила:

  • 188.114.8.8 - адрес сайта в интернете;

  • 10.80.1.1 - адрес Ideco NGFW в локальной сети;

  • 10.80.1.2 - адрес сервера в локальной сети;

  • 10.80.1.5 - адрес хоста в локальной сети;

  • Красная стрелка - ответ напрямую от сервера хосту в локальной сети.

Когда хост 10.80.1.5 обращается на сайт по внешнему адресу 188.114.8.8 (например, в случае обращения по доменному имени, которое резолвится во внешний IP), трафик проходит через NGFW. На NGFW срабатывает правило DNAT и перенаправляет трафик на сервер 10.80.1.2. Однако сервер отвечает непосредственно хосту в обход NGFW, и ответ не проходит.

Пример правильной топологии

Чтобы схема работала правильно, нужно:

1. Вынести роутер в отдельную локальную сеть (DMZ) (например, 10.90.1.0/24), чтобы избежать асимметричной маршрутизации между роутером и клиентами локальной сети.

2. Настроить DMZ на NGFW, добавив еще один IP-адрес на локальный интерфейс NGFW 10.90.1.1/24, к локальной сети которого подключен роутер.

3. На роутере настроить IP-адрес из адресного пространства новой сети 10.90.1.2. Шлюзом указать дополнительный IP-адрес, настроенный на локальном интерфейсе NGFW из этой сети 10.90.1.1.

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

Также можно физически изолировать локальную сеть клиентов NGFW и роутер. Для этого:

  • Подключите к Ideco NGFW дополнительную сетевую карту.

  • Настройте на ней дополнительный локальный интерфейс и отдельную IP-адресацию в этой сети.

  • Укажите в качестве шлюза для роутера адрес, настроенный на дополнительном локальном интерфейсе.

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

Чтобы избавиться от асимметричной маршрутизации между клиентами в локальной сети и сервером, нужно выделить в DMZ сервер:

Настройка NGFW

Чтобы настроить несколько виртуальных локальных сетей на одном физическом локальном интерфейсе NGFW, перейдите в раздел Сервисы -> Сетевые интерфейсы и выполните действия:

2. Если IP-адрес вашей локальной сети был автоматически сконфигурирован через DHCP, снимите галку и введите его вручную:

4. Нажмите Сохранить.

После изоляции роутера в DMZ нужно указать маршрут на NGFW до удаленной сети. Для этого перейдите в Сервисы -> Маршрутизация и выполните действия:

1. Перейдите на вкладку Внешние сети нажмите кнопку Добавить.

2. В поле Адрес источника выберите Создать новый объект, для которого выберите тип Подсеть и введите адрес вашей локальной сети (10.80.1.0/24):

Выберите в качестве источника только что созданный объект.

3. В поле Адрес назначения выберите Создать новый объект, для которого выберите тип Подсеть и введите адрес внешней сети (192.168.10.0/24), в которую нужно настроить доступ:

Выберите в качестве назначения только что созданный объект.

4. В поле Шлюз выберите Создать новый объект, для которого выберите тип IP-адрес и введите адрес роутера в DMZ (10.90.1.2):

5. Сохраните маршрут вида:

Теперь трафик между сетями NGFW (10.80.1.0/24 и 192.168.10.0/24) во всех направлениях будет направляться через NGFW и роутер.

Настройка клиентских машин

Хосты сетей, которые теперь обслуживает NGFW (10.80.1.0/24 и 10.90.1.0/24), физически включены в один ethernet-сегмент. Чтобы шлюзом и DNS-сервером для хостов этих сетей был соответствующий адрес на локальном интерфейсе NGFW:

1. Для хостов из подсети 10.80.1.0/24 укажите шлюзом и DNS-сервером 10.80.1.1.

2. Для хостов из подсети 10.90.1.0/24 шлюзом и DNS-сервером укажите 10.90.1.1.

Если по какой-то причине изолировать сервер в DMZ невозможно, создайте на NGFW специальное SNAT-правило.

Создание на NGFW SNAT-правила для избавления асимметричной маршрутизации

Чтобы сервер 10.80.1.2 не отвечал напрямую на 10.80.1.5, а посылал ответ на NGFW 10.80.1.1, нужно в разделе Правила трафика -> Файрвол -> SNAT создать правило вида:

Заполните поля:

  • Адрес назначения - 10.80.1.2;

  • Исходящая зона - Локальные интерфейсы;

В этом случае трафик хоста 10.80.1.5 на внешний адрес сайта 188.114.8.8 будет перенаправлен на адрес сервера 10.80.1.2 правилом DNAT. При этом созданное правило SNAT подменит адрес источника 10.80.1.5 на адрес NGFW, пакет приобретает вид: scr 10.80.1.1 dst 10.80.1.2. За счет этого ответ от сервера также пройдет через NGFW, поскольку пакет будет иметь вид: scr 10.80.1.2 dst 10.80.1.1.

Last updated