7.4. FORWARD and
NAT Rules
Most organizations are allotted a limited number of publicly
routable IP addresses from their ISP. Due to this limited allowance,
administrators must find creative ways to share access to Internet
services without giving scarce IP addresses to every node on the
LAN. Using private IP address is the common way to allow all nodes on a
LAN to properly access network services internally and externally. Edge
routers (such as firewalls) can receive incoming transmissions from the
Internet and route the packets to the intended LAN node; at the same
time, firewall/gateways can also route outgoing requests from a LAN node
to the remote Internet service. This forwarding of network traffic can
become dangerous at times, especially with the availability of modern
cracking tools that can spoof internal IP addresses
and make the remote attacker's machine act as a node on your LAN. To
prevent this, iptables provides routing and
forwarding policies that can be implemented to prevent aberrant usage of
network resources.
The FORWARD policy allows an
administrator to control where packets can be routed within a LAN. For
example, to allow forwarding for the entire LAN (assuming the
firewall/gateway has an internal IP address on eth1), the following
rules can be set:
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT |
 | Note |
|---|
| | By default, the IPv4 policy in Red Hat Enterprise Linux kernels disables support
for IP forwarding, which prevents boxes running Red Hat Enterprise Linux from
functioning as dedicated edge routers. To enable IP forwarding, run
the following command: sysctl -w net.ipv4.ip_forward=1 |
If this command is run via shell prompt, then the setting is not
remembered after a reboot. You can permanently set forwarding by
editing the /etc/sysctl.conf file. Find and edit
the following line, replacing 0 with
1:
Execute the following command to enable the change to the
sysctl.conf file: sysctl -p /etc/sysctl.conf |
|
This allows LAN nodes to communicate with each other; however they
are not allowed to communicate externally (for example, to the
Internet). To allow LAN nodes with private IP addresses to communicate
with external public networks, configure the firewall for IP
masquerading, which masks requests from LAN nodes with the IP
address of the firewall's external device (in this case, eth0):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |