像 iptables 桥接一样的双向转发

像 iptables 桥接一样的双向转发

我有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

相关内容