Обзор #
В этой статье объясняется, как выявлять и устранять проблемы. проблемы асимметричной маршрутизации в RELIANOID развертывание, когда балансировщик нагрузки имеет несколько сетевых интерфейсов, подключенных к разным подсетям.
Такая ситуация может возникнуть, когда клиентам на стороне фронтенда необходимо получить доступ к бэкэнд-сервисам, расположенным в другой подсети, в то время как балансировщик нагрузки имеет интерфейсы в обеих сетях.
Неправильное поведение маршрутизации может привести к тому, что ответный трафик будет выходить через другой интерфейс, отличный от того, который использовался для входящего запроса, что приведет к... асимметричная маршрутизация.
Описание проблемы #
В некоторых случаях развертывания RELIANOID Балансировщик нагрузки настроен с использованием нескольких интерфейсов, подключенных к различным сетям.
Следующая конфигурация представляет собой Пример среды, использованной в демонстрационных целях..
| Интерфейс | Cеть | Цель |
| eth0 | 192.168.1.0/24 | Управление и менеджмент |
| eth1 | 192.168.110.0/24 | Frontend |
| eth2 | 192.168.100.0/24 | Приложение / Бэкенд |
Серверы бэкэнда расположены в 192.168.100.0/24 подсеть и доступ к ним осуществляется через фермы, настроенные на балансировщике нагрузки.
Однако некоторые клиенты находятся в 192.168.110.0/24 Сети также необходимо получить доступ к сервисам, размещенным в ней. 192.168.100.0/24 сеть.
Поскольку балансировщик нагрузки имеет интерфейс в обеих сетях, и пересылка IP-пакетов активна по умолчанию, система может направлять ответный трафик непосредственно через него. интерфейс внешнего интерфейса (eth1) вместо того, чтобы направлять его через ожидаемый шлюз.
Это приводит к асимметричная маршрутизациячто может привести к сбоям соединения или потере пакетов.
Пример конфигурации интерфейса #

Что такое асимметричная маршрутизация? #
Асимметричная маршрутизация возникает, когда Входящий и исходящий трафик одного и того же соединения следует по разным сетевым путям..
Пример потока #
Конечный маршрут: 192.168.110.11 через eth2 (Клиент) > 192.168.100.100 (Балансировщик нагрузки) > 192.168.100.42 (Бэкенд)
Обратный путь (неверный): 192.168.100.42 (Бэкенд) > 192.168.100.100 (Балансировщик нагрузки) > 192.168.110.11 через eth1 (Клиент)
Поскольку обратный трафик проходит через другой интерфейс, промежуточные устройства, такие как межсетевые экраны или маршрутизаторы, могут отбрасывать пакеты.
Как работают таблицы маршрутизации #
RELIANOID использования таблицы маршрутизации для каждого интерфейса для управления тем, как трафик перенаправляется между сетями.
Каждый интерфейс автоматически генерирует свою собственную таблицу маршрутизации.
Примеры таблиц маршрутизации: table_eth1, table_eth2
Эти таблицы маршрутизации определяют:
- Маршруты, связанные с интерфейсом
- Шлюзы, используемые для переадресации трафика.
- Интерфейсы, которым разрешена маршрутизация трафика.
В каждой таблице маршрутизации интерфейсы можно настроить следующим образом:
Управляемые интерфейсы #
Интерфейсы, которым разрешено маршрутизировать трафик в таблице маршрутизации с использованием функции пересылки IP-пакетов.
Неуправляемые интерфейсы #
Интерфейсы, исключенные из решений по маршрутизации для данной таблицы и пересылки IP-пакетов, не будут применяться к этим интерфейсам.
Контролируя, какие интерфейсы являются управляемыми, а какие — неуправляемыми, администраторы могут влиять на поток трафика через балансировщик нагрузки и предотвращать конфликты маршрутизации.
Пример таблицы маршрутизации #

Решение #
Для решения проблемы асимметричной маршрутизации необходимо исключить конфликтующий интерфейс из таблицы маршрутизации, связанной с внутренней сетью.
В этом случае, Параметр eth1 следует удалить из таблицы маршрутизации. table_eth2, обеспечивая маршрутизацию трафика через правильный шлюз.
Решение с использованием веб-интерфейса. #
- Перейдите в раздел: Сеть > Маршрутизация
- Выберите таблицу маршрутизации, связанную с внутренним интерфейсом:
table_eth2 - Прокрутите страницу вниз.
- Найдите Управляемые интерфейсы .
- Переместить интерфейс eth1 от Управляемые интерфейсы в Неуправляемые интерфейсы.
Это предотвращает прямую маршрутизацию трафика через интерфейс внешнего пользователя при использовании таблицы маршрутизации внутреннего интерфейса.

Решение с использованием командной строки #
Аналогичную конфигурацию можно применить и с помощью RELIANOID Интерфейс командной строки.
Шаг 1: Включите доступ к API. #
Перейдите в раздел: Система > Пользовательские настройки
Включите доступ к API и настройте ключ API. Вы можете либо определить свой собственный ключ, либо сгенерировать случайный.
После создания ключа скопируйте и сохраните его, так как он понадобится при первом доступе к командной строке с помощью noid-cli.
Шаг 2: доступ RELIANOID CLI #
В системной консоли выполните следующую команду:
noid-cli
Введите ключ API, когда появится соответствующий запрос.
Шаг 3: Удалите интерфейс из таблицы маршрутизации. #
Выполните следующую команду:
network-routing-table-unmanaged add table_eth2 -interface eth1
Эта команда предотвращает маршрутизацию трафика. eth1 при использовании таблицы маршрутизации table_eth2.
Шаг 4: Отмена настроек (необязательно) #
При необходимости конфигурацию можно отменить с помощью следующей команды:
network-routing-table-unmanaged remove table_eth2 eth1
Лучшие практики #
- Вносите изменения в маршрутизацию во время часы низкой загруженности или периоды технического обслуживания.
- После применения настроек проверьте подключение.
- Убедитесь, что изменения в маршрутизации не затрагивают другие сервисы.
Заключение #
Проблемы асимметричной маршрутизации могут возникать, когда балансировщик нагрузки подключен к нескольким сетям, и трафик возвращается через другой интерфейс, отличный от того, который использовался для входящего соединения.
In RELIANOIDЭту проблему можно решить, скорректировав конфигурацию таблиц маршрутизации и исключив конфликтующие интерфейсы из определенных таблиц маршрутизации.
Это гарантирует, что трафик будет следовать по правильному сетевому пути и предотвратит проблемы с подключением.