Eu tenho uma rede física configurada com máquinas A ← - → B ← - → C. As configurações de IP e Ethernet são resumidas da seguinte forma:
A(eth0: 10.10.10.2) ←—→ (eth0: 10.10.10.3)B(eth1: 192.168.0.3) ←—→ (eth1: 192.168.0.2)C
Eu gostaria de enviar um pacote UDP de A para C.
Um tcpdump
do pacote se parece com: 10.10.10.2:10000-->192.168.0.2:10001
(10000 ou 10001 são os números de porta). É claro que o pacote deve passar por B, chegando em eth0
de B e saindo por eth1
.
A tabela de roteamento de B já está configurada como sub-rede 192.168.0.0/24 para eth1
. E /proc/sys/net/ipv4/ip_forward
é 1.
tcpdump
on B confirma que o pacote UDP pode ser recebido em eth0
. Mas eth1
não tem nada (nem para C), o que significa que o pacote não é encaminhado corretamente. (Não há política de descarte por iptables
em B.)
Eu recriei a topologia em máquinas virtuais e ela funciona. Mas em máquinas físicas reais, não está funcionando. Eu também tentei escrever um módulo de kernel simples usando netfilter
que faz printk("some messages")
sempre que detecta um pacote UDP de entrada com porta de destino, digamos, 10001 (como no exemplo anterior), mas ainda assim o kernel Linux não imprime nada. p>
PS. O sistema operacional de B é Debian 6.0.10 (squeeze).
Eu agradeceria muito se alguém pudesse lançar alguma luz sobre o problema.