LINUX.ORG.RU
ФорумAdmin

клиент-серверная архитектура и netcat

 ,


0

2

Здравствуйте. Имеется сеть с такой топологией. Маска /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 их не видно. В чем проблема?

«C R4 - нет. Оно и понятно.» rp_filter отключи и убедись, что в iptables не дропаются такие пакеты.

Вообще дублирование пакетов с помощью tee - не очень хорошая идея.

Конечная цель какая ?

vel ★★★★★
()

Хватит тут лабораторки подсовывать.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.