Здравствуйте. Имеется сеть с такой топологией. Маска /24.
Цель: R1 сделать сервером, а R3-R4 клиентами. При отправке сообщения с R1 они должны приходить на оба клиента. Ответ с R3 и R4 должен приходить на R1.
Я сделал следующим образом: на R2 при отправке пакетов на IP 17.12.2.2 дублирую их на 17.12.3.2 с помощью TEE таблицы mangle. Аналогично при отправке на 17.12.3.2 дублирую их на 17.12.2.2. Таким образом обеспечивается получение пакетов обоими клиентами.
Проблема возникла при отправке пакетов клиент -> сервер. Например, соединяюсь
- R1: netcat -u 17.12.2.2 -p 37333 20023
- R3: netcat -ulp 20023
- R4: netcat -ulp 20023
Пакеты дублируются, с R1 приходит и на R3, и на R4. С R3 на R1 сообщение приходит. C R4 - нет. Оно и понятно. Потому что на R1 я соединялся по IP 17.12.2.2. Тогда на R2 в таблицу nat были добавлены 2 правила:
- iptables -t nat -A PREROUTING -i enp0s9 -p udp -s 17.12.3.2 -j DNAT --to-destination 17.12.1.1:37333
- iptables -t nat -A POSTROUTING -o enp0s3 -p udp -d 17.12.1.1 --dport 37333 -j SNAT --to-source 17.12.2.2:20023
Т.е. пакеты с R4 должны для R1 представлятся как от R3, и в netcat должны появлятся сообщения, отправленные с R4. Но, увы, их там нет. И в tcpdump на R2 их не видно. В чем проблема?