Free Hosting Online for WorkStations

< Previous | Contents | Next >

3.3.2. iptables Masquerading


iptables can also be used to enable Masquerading.

• Similar to ufw, the first step is to enable IPv4 packet forwarding by editing /etc/sysctl.conf and uncomment the following line:


net.ipv4.ip_forward=1


If you wish to enable IPv6 forwarding also uncomment:


net.ipv6.conf.default.forwarding=1

• Next, execute the sysctl command to enable the new settings in the configuration file:


sudo sysctl -p

• IP Masquerading can now be accomplished with a single iptables rule, which may differ slightly based on your network configuration:


sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE


The above command assumes that your private address space is 192.168.0.0/16 and that your Internet- facing device is ppp0. The syntax is broken down as follows:

• -t nat -- the rule is to go into the nat table

• -A POSTROUTING -- the rule is to be appended (-A) to the POSTROUTING chain

• -s 192.168.0.0/16 -- the rule applies to traffic originating from the specified address space

• -o ppp0 -- the rule applies to traffic scheduled to be routed through the specified network device

• -j MASQUERADE -- traffic matching this rule is to "jump" (-j) to the MASQUERADE target to be manipulated as described above

• Also, each chain in the filter table (the default table, and where most or all packet filtering occurs) has a default policy of ACCEPT, but if you are creating a firewall in addition to a gateway device, you may have set the policies to DROP or REJECT, in which case your masqueraded traffic needs to be allowed through the FORWARD chain for the above rule to work:


sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT sudo iptables -A FORWARD -d 192.168.0.0/16 -m state

--state ESTABLISHED,RELATED -i ppp0 -j ACCEPT


The above commands will allow all connections from your local network to the Internet and all traffic related to those connections to return to the machine that initiated them.

• If you want masquerading to be enabled on reboot, which you probably do, edit /etc/rc.local and add any commands used above. For example add the first command with no filtering:


iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE


Top OS Cloud Computing at OnWorks: