iptables para reenviar/duplicar/reflejar el tráfico UDP generado localmente

iptables para reenviar/duplicar/reflejar el tráfico UDP generado localmente

Estoy ejecutando un programa en una Raspberry Pi que lee datos de sensores y los envía a un servidor a través de UDP. Para depurar y monitorear estos datos, redirigí estos datos UDP a mi PC usando iptables en Raspberry Pi:

sudo iptables -t nat -A OUTPUT -p udp -d 192.168.178.10 --dport 4000 -j DNAT --to-destination 192.168.178.22:4000

Las direcciones IP utilizadas son
192.168.178.10 - Servidor
192.168.178.22 - PC utilizada para la depuración.

Esto funciona bien. Sin embargo, los datos sólo llegan a la PC pero ya no al servidor.

Así que intenté copiar y reenviar los datos UDP tanto a la PC como al servidor usando algo como esto:

sudo iptables -t mangle -A POSTROUTING -p udp -d 192.168.178.10 --dport 4000 -j TEE --gateway 192.168.178.22

He usado diferentes combinaciones de parámetros como mangle/nat, POSTROUTING/OUTPUT/PREROUTING, etc.

Hasta el momento no logré enviar los datos a ambos destinos. Como los datos se generan localmente, supuse que -A OUTPUT debería funcionar. Pero aparentemente me estoy perdiendo algo...

Además, puedo borrar las reglas de iptables usando

sudo iptables -F
sudo iptables -X

Pero la regla aún se ejecuta y tengo que reiniciar la Raspberry Pi para empezar desde cero.

Entonces hay dos preguntas:

¿Cómo funciona la duplicación y el reenvío de datos generados localmente?
¿Cómo se aclaran las reglas de manera efectiva?

Todos los ejemplos que he encontrado hasta ahora se aplican al tráfico entrante/saliente, pero no a los datos generados localmente.

Respuesta1

Ahora, por accidente, encontré una solución:

sudo sysctl -w net.ipv4.ip_forward=1

sudo iptables -t nat -A OUTPUT -p udp -d 192.168.178.10 --dport 4000 -j DNAT --to-destination 192.168.178.22:4000

sudo iptables -t mangle -A POSTROUTING -p udp -d 192.168.178.22 --dport 4000 -j TEE --gateway 192.168.178.10

Esto funciona bien, sin embargo, parece innecesariamente complicado ya que esperaba que esto fuera posible con una sola regla.

Quizás alguien tenga una idea sobre cómo simplificar esto.

información relacionada