這個問題與答案和評論相關什麼是內核IP轉送?
來自@LawrenceC
貼文1:
因此,在上面的範例中,如果您在NIC 2 上有互聯網連接,則可以將NIC 2 設定為預設路由,然後來自NIC 1 的任何流量如果不發送至192.168.2.0/24 上的流量,都將透過透過網卡 2。
還有post2:
面向網際網路的介面(上面的 NIC 1)需要 iptables 鏈上的 POSTROUTING 中的 MASQUERADE 規則來執行此操作。看 revsys.com/writings/quicktips/nat.html
在http://www.revsys.com/writings/quicktips/nat.html它說:
然後,您需要設定 iptables 將封包從 /dev/eth1 上的內部網路轉送到 /dev/eth0 上的外部網路。
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
為什麼我會使用FORWARD
(根據貼文2) 如果轉送已經透過僅設定完成ip_forward
(根據貼文1):
echo 1 > /proc/sys/net/ipv4/ip_forward
答案1
環境ip_forward
允許封包轉發一般來說。iptables
出於安全原因,某些 Linux 發行版可能不允許轉送封包,例如,如果ip_forward
設定錯誤。
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
設定規則以允許來自 的資料包eth0
對eth1
已建立的連線進行回應或類似相關的資料包。
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
設定顯式規則以允許來自eth1
到 的資料包eth0
。
這允許客戶端eth1
存取後面的伺服器,eth0
無論預設iptables
配置如何。