7.4. FORWARDNAT 规则

多数机构从它们的 ISP 处得到数量有限的可公开选路的 IP 地址。鉴于这种限额,管理员必须创建性地积极寻求分享互联网服务的方法,而又不必把稀有的 IP 地址分配给 LAN 上的每一台机器。使用专用 IP 地址是允许 LAN 上的所有机器正确使用内部和外部网络服务的常用方法。边缘路由器(如防火墙)可以接收来自互联网的进入交通,并把这些分组选路发送它们意图发送的 LAN 节点上;同时,防火墙/网关还可以把来自 LAN 节点的输出请求选路发送到远程互联网服务中。这种转发网络交通行为有时会很危险,特别是随着能够假冒内部 IP 地址、使远程攻击者的机器成为你的 LAN 上的一个节点的现代攻击工具的出现。为防止此类事件的发生,iptables 提供了选路发送和转发策略,你可以实施它们来防止对网络资源的变相利用。

FORWARD 策略允许管理员控制分组可以被选路发送到 LAN 内的哪些地方。例如:要允许整个 LAN 的转发(假定防火墙/网关在 eth1 上有一个内部 IP 地址),你可以设置以下规则:

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

注记注记
 

按照默认设置,红帽企业 Linux 内核中的 IPv4 策略禁用了对 IP 转发的支持,这会防止运行红帽企业 Linux 的机器成为专用边缘路由器。要启用 IP 转发,请运行以下命令:

sysctl -w net.ipv4.ip_forward=1

如果该命令是通过 shell 提示运行的,那么其设置在重新引导后就不会被保存。你可以通过编辑 /etc/sysctl.conf 文件来永久性地设置转发。寻找并编辑以下行,把 0 改成 1

net.ipv4.ip_forward = 0

执行以下命令来启用 sysctl.conf 文件中的改变:

sysctl -p /etc/sysctl.conf

这会允许 LAN 节点彼此通信;不过,它们没有被允许和外界(如互联网)通信。要允许带有专用 IP 地址的 LAN 节点和外部的公共网络通信,配置防火墙的 IP 伪装(IP masquerading),这会把来自 LAN 节点的请求都伪装成防火墙的外部设备(在这个例子中是 eth0)的 IP 地址。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE