我有两个物理网卡(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
如果有效则告知我们。