2

TL; DR:

В немного сложном сценарии маршрутизации запросы / сообщения ICMP и DNS работают, как и ожидалось, от хоста к Интернету через встроенный маршрутизатор, а веб-браузеры (так что я предполагаю, что TCP и / или HTTP) - нет. Как я могу отладить проблему с таблицами маршрутизации RPDM+? Кажется, что когда я добавляю маршрутизацию по умолчанию для основной таблицы маршрутизатора, некоторые правила RPDM игнорируются, и я не понимаю поведение, которое вижу.

Полное объяснение:

У меня есть встроенное устройство Linux, которое одновременно подключено к двум ISP, и я предоставляю 2 хост-устройствам (через eth0, eth1) эксклюзивный доступ к каждому провайдеру. Это означает, что хост 1 будет использовать исключительно соединение 1 с провайдером, а хост 2 будет использовать только соединение 2 с провайдером. В то же время я хочу, чтобы встроенное устройство делило соединение с одним из провайдеров с хостом (скажем, через соединение провайдера 2). - eth3).

Я использую RPDM, чтобы отделить обработку для каждого устройства:

32762: from all iif eth3 lookup 102 
32763: from all iif eth2 lookup 101 
32764: from 192.168.1.102 lookup 102 
32765: from 192.168.1.101 lookup 101 

где таблицы маршрутизации настроены, например, как:

default dev eth2 scope link 
123.123.123.123 dev eth2 scope link 
124.124.124.124 dev eth3 scope link 
127.0.0.0/8 dev lo scope link 
192.168.1.0/24 dev bridge0 scope link

Я использую маскарад на обоих соединениях провайдера:

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE

Пока на устройстве не настроен маршрут по умолчанию и на каждом хосте правильно настроен DNS (т. Е. DNS-адреса интернет-провайдеров) - все работает, как и ожидалось, без доступа к Интернету для самого устройства.

Когда я добавляю маршрут по умолчанию в основную таблицу маршрутизации устройства (допустим, что это для eth3), устройство получает доступ в Интернет, но хост 1 (который должен использовать eth2) теряет соединение, и некоторые пакеты теряются где-то на пути. ICMP с хоста 1 работает нормально, как и DNS. Wireshark на хосте 1 показывает, что существует много ретрансляций TCP. tcpdump на устройстве показывает, что некоторые пакеты с хоста 1 попадают на eth 3.

Как я могу понять, почему это не работает? похоже, что маршрут по умолчанию, который я добавляю, имеет приоритет над правилами из RPDM, чего не должно быть ..

настроить вывод здесь.

Разъяснение:

Я знаком с iptables/TRACE target. Я добавил трассировку для каждого пакета, поступающего с моста, но не увидел ни одного, выходящего на eth3 - только на eth2, в отличие от журнала tcpdump. возможно я ищу не ту вещь?

            +                                 +
            |                                 |
            |                                 |
            |                                 |
            |                                 |
+---------------------------------------------------------+
|---------------------------------------------------------|
||  |eth2 (ISP connection)|       |eth3 (ISP connetion 2)||
||  |IP 123.123.123.123   |       |IP 124.124.124.124    ||
||  +---------------------+       +-----------------------|
||                                                       ||
||                    "Embedded Device"                  ||
||               +--------+------------+                 ||
||       +-------+bridge0 + DHCP server+-----+           ||
||       |       |IP 192.168.1.1       |     |           ||
||       |       +---------------------+     |           ||
||       |                                   |           ||
|--------+------------+               +------+------------|
||  eth0              |               |eth1              ||
||  (local connection)|               |(local connection)||
||  IP 192.168.10.1   |               |IP 192.168.10.2   ||
|---------------------------------------------------------|
+---------------------------------------------------------+
        |                                   |
        |                                   |
        |                                   |
+--------------------+              +--------------------+
|--------------------|              |--------------------|
||  host 1          ||              || host 2           ||
||  IP 192.168.1.100||              || IP 192.168.1.101 ||
|--------------------|              |--------------------|
+--------------------+              +--------------------+

1 ответ1

0

Только для будущих пользователей:

Проблема заключалась в использовании ускорителя пакетов, используемого во встроенном устройстве, которое переопределяет таблицы маршрутизации linux (с именем SFE, предоставляемые qualcomm). он просто игнорировал некоторые из более сложных правил.

его открытый исходный код и патч был предоставлен.

удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .