O mesmo efeito em muitos servidores com várias versões do kernel.
Existem várias regras DNAT do Iptables:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 12345 -j DNAT --to-destination 10.20.30.40:5678
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23456 -j DNAT --to-destination 10.11.12.13:5789
....
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 34567 -j LOG --log-prefix 'natudp: '
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 34567 -j DNAT --to-destination 10.55.66.77:34567
Problema: as regras do UDP não estão funcionando para solicitações recebidas da eth0.
Contadores de pacotes e bytes para eles têm valores zero.
Simplificação (remoção de dport) não tem efeito.
Como resultado, as solicitações são passadas para a cadeia filter / INPUT em vez de FORWARD.
Nenhum problema para pacotes de interfaces virtuais (tap, veth) - eles ficam presos por regras de pré-formatação.
Nenhum tal problema para TCP.
Nenhum problema desse tipo para o UDP responde .
Mas as solicitações UDP de entrada da eth0 são ignoradas pelas regras de pré-detalhamento:
# iptables -t nat -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 3 packets, 174 bytes)
pkts bytes target prot opt in out source destination
(testing rules)
2 126 LOG udp -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "prerouting-udp: "
0 0 udp -- * * 1.2.3.4 0.0.0.0/0
0 0 udp -- * * 1.2.3.4 0.0.0.0/0 udp dpt:25826
0 0 udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:25826
0 0 udp -- eth0 * 1.2.3.4 0.0.0.0/0
0 0 udp -- eth0 * 1.2.3.4 0.0.0.0/0 udp dpt:25826
(production rules)
7 412 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345 to:10.20.30.40:8080
63 3804 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:56789 to:10.30.40.50:8000
0 0 DNAT udp -- eth0 * 1.2.3.4 0.0.0.0/0 udp dpt:25826 to:10.40.50.60:25826
Alguma idéia?
Tags iptables nat linux-networking dnat