DNAT: pacotes ed desaparecendo

2

Eu tenho uma máquina que tem uma regra DNAT que redireciona os dados para o servidor vizinho:

iptables -t nat -A PREROUTING -p udp -d 10.99.193.116 --dport 54321 -j DNAT --to 10.99.193.115:54321

Como pode ser visto, esta regra é acionada com bastante frequência:

pkts bytes target     prot opt in     out     source               destination         
192K   19M DNAT       udp  --  *      *       0.0.0.0/0            10.99.193.116       udp dpt:54321 to:10.99.193.115:54321 

No entanto, olhando para a interface, os pacotes redirecionados não são enviados na interface.

$ tcpdump -i eth0 -n port 54321
17:03:36.553363 IP 172.21.0.159.54321 > 10.99.193.116.54321: UDP, length 82
17:03:37.514257 IP 172.21.0.20.54321 > 10.99.193.116.54321: UDP, length 39
17:03:37.633556 IP 172.21.0.91.54321 > 10.99.193.116.54321: UDP, length 82
17:03:37.678211 IP 172.21.0.196.54321 > 10.99.193.116.54321: UDP, length 68
17:03:38.542620 IP 172.21.0.185.54321 > 10.99.193.116.54321: UDP, length 39

Esse problema ocorreu depois que a máquina foi reinicializada pela primeira vez depois de adicionar essas regras, então, presumivelmente, existe alguma diferença entre o momento atual e o atual. Mas o que? Ou há algum bug no kernel que significa que esses pacotes são descartados mesmo quando o contador é incrementado?

A máquina é uma caixa do CentOS4, Linux 2.6.9-67.0.1.ELsmp.

    
por Bittrance 10.10.2011 / 17:13

1 resposta

3

Você também precisa de uma regra FORWARD, por exemplo:

iptables -t filter -I FORWARD -m udp -p udp --dst 10.99.193.115 --dport 54321 -j ACCEPT

e para habilitar o encaminhamento, é claro:

sysctl -w net.ipv4.ip_forward=1
    
por 10.10.2011 / 17:22