使用bridge utils通过Linux连接两台计算机

使用bridge utils通过Linux连接两台计算机

我之前一直使用 Bridge utils 将网络连接的计算机连接到 Linux 计算机上的单个接口。我遇到的问题是,当我安装新的 Linux(带有 Slackware)时,两台连接的计算机甚至无法互相 ping 通。基本上计算机的连接方式如下:

client - server - client
           |
       [Internet]

所以我试图让两个客户端相互连接。两者都可以访问互联网,测试时两个客户端的防火墙均已关闭。

互联网位于 eth0 上,我设置了一个网桥

bridge name     interfaces
br0             eth1, eth2

ip addr br0ip route show分别显示

inet 10.0.0.1/24 brd 10.0.0.255
10.0.0.0/24 dev br0  proto kernel  scope link  src 10.0.0.1

所以在我看来,来自客户端的调用应该直接路由到我的 br0 接口,这应该是正确的。

如何配置我的 Slackware 发行版以路由两台连接网络电缆的计算机以便能够看到对方,最好使用桥接工具?

答案1

服务器上的防火墙是否被禁用?可能有一些防火墙规则阻止了数据包。查看 iptables 的输出(必须以 root 身份运行),如果您看到除 ACCEPT 规则/策略之外的任何内容,那么它们可能会阻止某些内容。

iptables -L

iptables -t nat -L

答案2

如果两个设备无法互相 ping 通,则表明网桥设置不正确。网桥中不涉及 ip 协议路由。的输出是什么brctl显示?那应该显示类似的内容

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.003018a46079       no              eth1
                                                        eth2

如果两个接口均未列出,则需要更正。

您可能还想尝试该brctl showmacs br0命令以及该命令上方是否启用了 STP(生成树协议)brctl showstp br0。前者应该显示两个设备的 MAC 地址,对于后者,您应该确保每个端口都处于状态转发

鉴于您说每个接口都可以访问互联网,我假设所有接口都已启动。如果没有,下面应该这样做。

ip link set br0 up
ip link set eth0 up
ip link set eth1 up
ip link set eth2 up

答案3

使用命令检查服务器上是否启用了 ip 转发

sysctl net.ipv4.ip_forward

如果给出 0,则执行

sysctl -w net.ipv4.ip_forward=1

作为服务器上的 root。如果这有帮助,请通过编辑 /etc/sysctl.conf 使更改永久生效

相关内容