![像 iptables 橋接一樣的雙向轉發](https://rvso.com/image/164730/%E5%83%8F%20iptables%20%E6%A9%8B%E6%8E%A5%E4%B8%80%E6%A8%A3%E7%9A%84%E9%9B%99%E5%90%91%E8%BD%89%E7%99%BC.png)
我有linux盒子。它有兩個介面(eth0,eth1)。
eth0 是上側連接,eth1 是下側連接。
eth0、eth1 與每個交換器(s/w0、s/w1)連接。
s/w0 正在連接互聯網,s/w1 連接到一台筆記型電腦。
我想要 eth0 , eth1 像橋一樣雙向轉送。
但不使用 brctl,僅使用 iptables。
因此,如果 iptables 規則集正確,則筆記型電腦應該啟用互聯網。
我已經嘗試過這個規則,但不起作用。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我將不勝感激任何幫助。
編輯。
我的網路如下圖所示。
internet - router - switch0 - eth0:linuxBox:eth1 - switch1 - laptop
當使用 brctl 進行橋接時,如下所示,筆記型電腦可以使用互聯網
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 off
ifconfig br0 up
我的目標是製定 iptables 規則來取代 brctl。
答案1
您應該指定您想要什麼。橋接器不支援 NAT,如果橋接器工作,網路也不會像乙太網路那樣運作。
如果你想擁有一個帶有 Nat 的互聯網網關並根據你的 Linux 機器的 IP 路由表轉發你的包你的 iptables 路由看起來相當不錯。您只需要確保機器上啟用了 IP 轉發,並且筆記型電腦的預設閘道設定為 linux 機器的 eth1 位址。
因此,在您更新之後:您不需要橋樑。網關就足夠了。
1. 確保linux box的介面位於不同的子網路中。或確保其路由表中透過網關網際網路路由器在 eth0 上具有預設路由,且本地網路(例如您的筆記型電腦所在的位置)的其他流量在 eth1 中傳送。
2、在您的筆記型電腦上進行靜態 IP 配置,其 IP 與 eth1 位於同一網路中,並且預設路由器設定為介面位址(如果是 eth1)。或在 Linux 機器上配置 dhcp 伺服器以實現相同目的。
3. 確保您的 Linux 機器上啟用了 IP 轉送。
答案2
你可以試試
iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
iptables –A FORWARD –i eth0 –o eth1 –m state --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
然後保存ip表規則
iptables-save
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables.service
然後開啟iptables檔案並編輯規則,將這些規則移至拒絕規則之上
iptables –A FORWARD –i eth0 –o eth1 –m state --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
A FORWARD -o vibr0 -j REJECT --reject-with icmp-port-unreachable
A FORWARD -i vibr0 -j REJECT --reject-with icmp-port-unreachable