Linux 中的桥接网络接口

Linux 中的桥接网络接口

我有两个物理网卡(eth2 和 eth3),其中 eth2 连接到家庭路由器/dhcp 服务器,eth3 连接到另一台需要访问互联网的机器。

我正在尝试创建一个网桥,以便 eth3 上的第二台机器可以连接到局域网。我尝试了以下方法,但是当尝试从路由器获取 IP 地址时它会挂起。同样,尝试给它一个静态路由似乎也不起作用。

$ sudo aptitude install bridge-utils
$ sudo ifconfig eth2 down
$ sudo ifconfig eth3 down
$ sudo brctl addbr br0
$ sudo brctl addif br0 eth2 eth3
$ sudo dhclient br0 # this hangs and fails to get a dhcp address

我试图确保我的路由表模仿正常使用 eth2 时的样子,但我根本无法到达网关。

$ 路线-n
内核 IP 路由表
目标网关 Genmask 标志 指标参考使用 Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 2 0 0 br0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 br0

当我桥接 eth2/3 时,我尝试对路由器的 MAC 地址进行“arping”,但它也无法获取其 IP 地址。

我注意到一件有趣的事情,当我尝试关闭网桥并在 eth2 上重新激活我的互联网时,我遇到了无法 ping 网关的问题。原来是“ipmasq”已安装并正在运行,导致出现奇怪的问题。当我停止 ipmasq 服务时,我的互联网又开始正常工作了。我完全删除了“ipmasq”包,并尝试再次桥接 NIC,认为它可能导致了问题,但仍然失败了。

关于如何解决这个问题有什么建议吗?有什么万无一失的方法可以使它发挥作用吗?

答案1

配置桥接接口后,启动桥接接口及其成员:

for i in br0 eth2 eth3; do
 sudo ifconfig $i up # or sudo ip link set dev $i up
done

此后,根据网桥的 STP 设置,网桥实际进入转发模式可能需要更短或更长的时间。如果不需要生成树,请在添加成员接口后执行以下命令,以使其更快地进入转发状态:

sudo brctl stp br0 off  # disable spanning tree protocol
sudo brctl setfd br0 0 # configure forwarding delay to 0

如果有效则告知我们。

相关内容