У меня есть 3 машины с Linux (клиент (C), сервер (S) и узел посередине (M)). C и M имеют прямой канал в подсети 192.168.100.0/24. Для простоты я буду называть интерфейсы и IP-адреса, к которым они подключены через C_M (интерфейс C к M) и M_C (интерфейс M к C). Каждый из C и M подключен к S через отдельные интерфейсы (M_S, C_S) в подсети 10.45.0.0/24. S использует один и тот же интерфейс (S_CM) для подключения к обоим. S находится в паре шагов от C и M.
Моя цель — отправлять пакеты между C и S, используя оба пути одновременно (клиент-сервер, клиент-средний сервер). По каждому пути должны отправляться одни и те же пакеты (дубликаты). C одновременно отправляет дубликаты пакетов, предназначенных для S, по своей ссылке на S и по своей ссылке на M. S делает то же самое в ответ. M просто пересылает полученные пакеты. Я пытаюсь сделать это с помощью iptables и статических IP-маршрутов.
Однако пути с использованием M не работают. Чтобы проверить, работает ли эта конфигурация, я отправил два пинг-запроса с сервера клиенту и с клиента на сервер. Я использовал правила сопоставления iptables для подсчета входящих и исходящих пакетов для каждого узла. По результатам я пришел к таким выводам:
- M видит трафик от C, но не пересылает его.
- M ничего не получает от S.
- C получает дубликаты пакетов от S, но только через C_S.
- S не получает дубликаты пакетов от C.
- C правильно отправляет дубликаты пакетов через оба интерфейсы.
[*]Клиент: iptables -t mangle -A OUTPUT -d S_CM -j TEE --gateway M_C
[*]Средний: ip r добавить C_S через I_C
[*]Сервер: sudo iptables -t mangle -A OUTPUT -d C_S -j TEE --gateway M_S
Я никогда не меняю адрес источника или назначения любого пакета.
Моя теория состоит в том, что я неправильно понимаю TEE. Может быть, M нужно сделать что-то особенное, чтобы иметь возможность пересылать пакеты C? Теперь я совершенно уверен, что шлюз TEE не может находиться дальше одного перехода (что объясняет, почему M ничего не получает от S).
Однако я не конечно, как это исправить. Любые советы приветствуются.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ee-packets