Iptables – How to define iptables rule to add all transport to a given interface to nfqueue

iptableslinux-networking

Running on Ubuntu.
I have machine 1 < – > machine 2 < – > machine 3.
I dont know machine 1 or machine 3 ip. It can be any ip.
machine 1 send packet to machine 3 and machine 3 send packet to machine 1.

Machine 2 is used as a bridge:

ifconfig eth0 0.0.0.0
ifconfig eth2 0.0.0.0
brctl addbr br0
brctl addif br0 eth0 eth2
ifconfig br0 up

i want to have an iptable rule in machine 2 that will add all traffic that come to eth0 to nfqueue1 and all traffic that come to eth2 to nefqueue2.

Now i have the following rule:

iptables -A FORWARD -p tcp -j NFQUEUE --queue-num 0

which is not good to me because i want to distinguish between traffic that come from machine 3 to traffic that come from machine 1, so i want to have 2 rule.

Add -i eth0 to the rule doesn’t help.

Best Answer

since you're operating a bridge, you need to use -m physdev

for usage, run iptables -m physdev -h - if you compile your own kernel, you may need to add this module.