Estoy intentando configurar el reenvío de puertos en UDP port 12345
usando port 54321
lo siguiente:
iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1 --dport 12345 -j DNAT --to 192.168.0.1:54321
iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Esto funciona bien para conexiones nuevas, sin embargo, no funcionaría para conexiones actualmente activas.
Para aclarar lo que quiero decir, digamos que antes de agregar las reglas, hay una conexión activa desde 192.168.0.2:55555
<---> 192.168.0.1:12345
y estoy intentando redirigir todas las conexiones entrantes 192.168.0.1:12345
a 192.168.0.1:54321
.
Después de agregar las dos reglas anteriores, todos los demás paquetes destinados a 192.168.0.1:12345
se reciben en 192.168.0.1:54321
excepto los de 192.168.0.2:55555
.
Supongo que el estado de la conexión influye en esto. ¿Cómo puedo resolver esto y obtener los paquetes 192.168.0.1:55555
destinados a port 12345
ser entregados port 54321
?
Respuesta1
¡Descubrí cómo hacerlo!
¡Necesitas usar REDIRECT en NAT! ¡Sin embargo, antes de eso tienes que borrar la entrada correspondiente a esta conexión de conntrack! Algo como lo siguiente
conntrack -D -p udp -d 192.168.0.1 --dport=55555