encaminhamento de porta iptables para conexões UDP ativas

encaminhamento de porta iptables para conexões UDP ativas

Estou tentando configurar o encaminhamento de porta no UDP port 12345usando port 54321o seguinte:

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

Isso funciona bem para novas conexões, porém não funcionaria para conexões atualmente ativas.

Para esclarecer o que quero dizer, digamos que antes de adicionar as regras, haja uma conexão ativa de 192.168.0.2:55555<---> 192.168.0.1:12345e estou tentando redirecionar todas as conexões de entrada 192.168.0.1:12345para 192.168.0.1:54321.

Depois de adicionar as duas regras acima, todos os outros pacotes destinados a 192.168.0.1:12345são recebidos em, 192.168.0.1:54321exceto os de 192.168.0.2:55555.

Acho que o estado da conexão desempenha um papel nisso. Como posso resolver isso e fazer com que os pacotes 192.168.0.1:55555destinados port 12345sejam entregues port 54321?

Responder1

Eu descobri como fazer isso!

Você precisa usar o REDIRECT no NAT! Porém antes disso você deve apagar a entrada correspondente a esta conexão do conntrack! Algo como o seguinte

conntrack -D -p udp -d  192.168.0.1 --dport=55555 

informação relacionada