I have a physical network set up with machines A←–→B←–→C.  IP and Ethernet configurations are summarized as following:

A(eth0: ←—→ (eth0: ←—→ (eth1:

I would like to send a UDP packet from A to C.  A tcpdump of the packet looks like:> (10000 or 10001 are the port numbers). Of course the packet must go through B, coming in at eth0 of B and going out through eth1.

B's routing table is already configured as subnet to eth1. And /proc/sys/net/ipv4/ip_forward is 1.

tcpdump on B confirms that the UDP packet can be received at eth0. But eth1 has nothing (neither for C), which means the packet is not correctly forwarded. (There is not any dropping policy by iptables at B.)

I recreated the topology on virtual machines, and it works. But on real physical machines, it is not working. I also tried to write a simple kernel module using netfilter which does printk("some messages") whenever it detects an incoming UDP packet with destination port, say, 10001 (as previous example), but still the Linux kernel does not print anything.

PS. B's OS is Debian 6.0.10 (squeeze).

I would very much appreciate it if somebody can shed some light on the problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.