启动时桥接会导致系统挂起

启动时桥接会导致系统挂起

每当我将 br0 设置为在启动时自动启动时,它都会导致系统挂起 - 通常在一行上写着“等待 2 秒让 br0 准备好”或“绑定到 xxxx 到 br0 - 在 xxxx 中更新”(即在启动过程中,在任何图形界面初始化之前)。

将 Debian Sid 与 KVM 和 virt-manager 结合使用。一旦启动,我就可以毫无问题地让桥开始运行,而且它的工作方式就像一个魅力。问题是我希望它自动连接 br0,就像普通接口一样。我不认为这是一个荒谬的想法,但话又说回来,我在 Linux 网络方面没有太多经验。

我已经尝试了几乎所有我发现的 /etc/network/interfaces 配置,所有这些配置都会导致它在启动时挂起,或者不自动启动 br0。我唯一没有广泛探索的是我偶尔看到的“pre-up”和“post-down”命令,但我的印象是这些不一定需要。因为系统完全挂起并且拒绝进一步启动,所以每次强制它重新启动、启动救援发行版并删除接口文件中的任何配置是相当痛苦的。

我已经通过在 /etc/rc.local 中放入“ifup br0”成功地使其自动启动,但这会导致一些其他问题,例如共享无法连接和 VNC 无法启动。虽然我还没有完全达到那个阶段,但我担心的是,如果我使用这种方法,一旦我将它们设置为自动启动,我的客人将无法启动。

答案1

这感觉像是一个非解决方案,但它似乎有效。我所做的是创建了两个接口文件——interfaces_eth0 和interfaces_br0。然后我添加了

cp "/etc/network/interfaces_br0" "/etc/network/interfaces"
service networking restart
cp "/etc/network/interfaces_eth0" "/etc/network/interfaces"

到/etc/rc.local

Debian 将启动,我的共享连接并且我的访客可以访问网络,即使设置为自动启动也是如此。

答案2

迄今为止似乎有效的另一个解决方案涉及以下内容。我在 /etc/init.d/network_fix 创建了一个脚本,其中包含以下内容:

### BEGIN INIT INFO
# Provides:          network_fix
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Fix network for KVM
# Description:       Resolve bridging bug causing hang on boot.
### END INIT INFO
#! /bin/sh
# /etc/init.d/blah
#
cp -f /etc/network/interfaces_br0 /etc/network/interfaces
ifdown br0 eth0 eth1
ifup br0
cp -f /etc/network/interfaces_none /etc/network/interfaces
exit 0

然后用 刷新我的 init.d update-rc.d/etc/network/interfaces_none仅包含环回,并/etc/network/interfaces_br0包含以下内容:

auto lo
iface lo inet loopback

auto eth1
allow-hotplug eth1
iface eth1 inet dhcp

auto br0
iface br0 inet dhcp
        bridge_ports eth1
        bridge_stp off

此时我添加了一个额外的 NIC,因此eth1.

相关内容