Take the 2-minute tour ×

We have a simple router which has NAT of symmetric type, but because this router doesn't provide us with any debugging interface, we cannot figure out if a specific packet reaches the NAT or not.

Thus we want to setup a LINUX computer making it be a router with symmetric NAT, in this way we can capture all packets to this "NAT" and get the information we want. How can we do this on linux (Fedora system, kernel 2.6.xx)?

share|improve this question
what do you mean by symmetric nat –  MohyedeenN Jan 3 at 15:07
en.wikipedia.org/wiki/… –  sciurus Jan 3 at 15:30

1 Answer 1

To set a linux machine as a router you need the following

1- Enable forwarding on the box with


Assuming your public interface is eth1 and local interface is eth0

2- Set natting the natting rule with:


3- Accept traffic from eth0:

iptables -A INPUT -i eth0 -j ACCEPT

4- Allow established connections from the public interface.

iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

5- Allow outgoing connections:

iptables -A OUTPUT -j ACCEPT
share|improve this answer
INPUT and OUTPUT chains affect only packets actually addressed to the router and packets actually generated by the router, respectively. What you need are rules on the FORWARD chain, which handle packets passing through. –  pepoluan Jan 3 at 15:38
yes correct, but when you do natting the packets are sent via the public interface and they are sent through the OUTPUT chain if i am not mistaken here, if all the ips are public and you are not doing natting then only the forward chain is needed, the same for the INPUT as the packets are sent via the public interface ip you will need to allow the previously established sessions to come back through the INPUT chain. –  MohyedeenN Jan 3 at 15:42
Um, I don't think so. All Netfilter diagrams I found on the Internet indicates that OUTPUT chains apply only to packets generated by Local Processes. For example: upload.wikimedia.org/wikipedia/commons/8/8f/… –  pepoluan Jan 6 at 14:20

Your Answer


