FORWARD策略與NAT 規(guī)則
FORWARD 和 NAT 規(guī)則
多數(shù)機構(gòu)從它們的 ISP 處得到數(shù)量有限的可公開選路的 IP 地址。鑒于這種限額,管理員必須創(chuàng)建性地積極尋求分享互聯(lián)網(wǎng)服務(wù)的方法,而又不必把稀有的 IP 地址分配給 LAN 上的每一臺機器。使用專用 IP 地址是允許 LAN 上的所有機器正確使用內(nèi)部和外部網(wǎng)絡(luò)服務(wù)的常用方法。邊緣路由器(如防火墻)可以接收來自互聯(lián)網(wǎng)的進入交通,并把這些分組選路發(fā)送它們意圖發(fā)送的 LAN 節(jié)點上;同時,防火墻/網(wǎng)關(guān)還可以把來自 LAN 節(jié)點的輸出請求選路發(fā)送到遠程互聯(lián)網(wǎng)服務(wù)中。這種轉(zhuǎn)發(fā)網(wǎng)絡(luò)交通行為有時會很危險,特別是隨著能夠假冒內(nèi)部 IP 地址、使遠程攻擊者的機器成為你的 LAN 上的一個節(jié)點的現(xiàn)代攻擊工具的出現(xiàn)。為防止此類事件的發(fā)生,iptables 提供了選路發(fā)送和轉(zhuǎn)發(fā)策略,你可以實施它們來防止對網(wǎng)絡(luò)資源的變相利用。
FORWARD 策略允許管理員控制分組可以被選路發(fā)送到 LAN 內(nèi)的哪些地方。例如:要允許整個 LAN 的轉(zhuǎn)發(fā)(假定防火墻/網(wǎng)關(guān)在 eth1 上有一個內(nèi)部 IP 地址),你可以設(shè)置以下規(guī)則:
- iptables -A FORWARD -i eth1 -j ACCEPT
- iptables -A FORWARD -o eth1 -j ACCEPT
注記:按照默認(rèn)設(shè)置,紅帽企業(yè) Linux 內(nèi)核中的 IPv4 策略禁用了對 IP 轉(zhuǎn)發(fā)的支持,這會防止運行紅帽企業(yè) Linux 的機器成為專用邊緣路由器。要啟用 IP 轉(zhuǎn)發(fā),請運行以下命令:
- sysctl -w net.ipv4.ip_forward=1
如果該命令是通過 shell 提示運行的,那么其設(shè)置在重新引導(dǎo)后就不會被保存。你可以通過編輯 /etc/sysctl.conf 文件來永久性地設(shè)置轉(zhuǎn)發(fā)。尋找并編輯以下行,把 0 改成 1:
- net.ipv4.ip_forward = 0
執(zhí)行以下命令來啟用 sysctl.conf 文件中的改變:
- sysctl -p /etc/sysctl.conf
這會允許 LAN 節(jié)點彼此通信;不過,它們沒有被允許和外界(如互聯(lián)網(wǎng))通信。要允許帶有專用 IP 地址的 LAN 節(jié)點和外部的公共網(wǎng)絡(luò)通信,配置防火墻的 IP 偽裝(IP masquerading),這會把來自 LAN 節(jié)點的請求都偽裝成防火墻的外部設(shè)備(在這個例子中是 eth0)的 IP 地址。
- iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
以上就是FORWARD策略與NAT 規(guī)則。
【編輯推薦】