7.4. FORWARDNAT 規則

大部分的公司從他們的 ISP 都只分配到數量有限的公眾可存取的 IP 位址,由於這個限制,系統管理員必須 想一個辦法以分享網際網路的服務,而且不給予每一個區網節點相當稀少的 IP 位址。 使用私有 IP 位址是 允許區網內所有節點能夠存取內部與外部網路服務的一般方式,邊緣的路由器(如防火牆)可以接收來自網際 網路的外來傳輸,然後傳送封包到預定的區網節點,同時防火牆/閘道器也可傳送來自一個區網節點的內部要求 到遠端的網際網路服務。 有時候,這種網路流量的轉送可能會很危險,特別是當使用可以偽裝內部 IP 位址的破解工具時,將會使得遠端攻擊者的機器當作您區網內的一個節點。 如要避免這個情況發生, iptables 提供路由與轉送的政策可以實作來防止對網路資源的異常使用情況。

FORWARD 政策允許系統管理員控制封包在區網內部的傳送,例如要允許整個 區網的封包轉送(假設防火牆/閘道器在 eht1 上擁有一個內部的 IP 位址),可以設定下列的規則:

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

注請注意
 

預設情況下,Red Hat Enterprise Linux 核心的 IPv4 政策停用 IP 轉送的支援,這將可避免執行 Red Hat Enterprise Linux 的機器用來當作既定的 邊緣路由器。 如要啟用 IP 轉送,請執行下列指令:

sysctl -w net.ipv4.ip_forward=1

假如這個指令是在 shell 提示符號下執行,那麼在重新開機後設定將會失效,您可以藉由編輯 /etc/sysctl.conf 檔案來永久性地設定轉送。 請找出並且編輯下列這一行,請以 1 取代 0

net.ipv4.ip_forward = 0

執行下列的指令來使 sysctl.conf 檔案的變更生效:

sysctl -p /etc/sysctl.conf

這將會允許區網節點彼此進行通訊,然而它們並不允許與外部通訊(例如網際網路)。 如要允許擁有私有 IP 位址的區網節點與外部公眾網路連線,請設定 『IP 偽裝』 的防火牆,以防火牆之 外部裝置 (此例為 eth0)的 IP 位址偽冒來自區網節點的要求:

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