主机突然失去网络连接,但 KVM 客户机仍保持在线

主机突然失去网络连接,但 KVM 客户机仍保持在线

这是我几年来一直忽视的一个问题。

我有一台运行 Linux 3.16.0-4-amd64 的 Debian 稳定服务器。启动几分钟到几小时后,服务器会失去出站网络连接,并停止响应 SSH 和 ping。打开 SSH 连接会挂起。不过,我在该主机上运行了 3 个基于 KVM 的虚拟机,它们实际上可以运行数年而没有任何连接问题。我也可以重新启动它们。

/etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0 inet manual

auto br0
iface br0 inet static
    address xxx.xxx.xxx.6
    netmask 255.255.255.0
    network xxx.xxx.xxx.0
    broadcast xxx.xxx.xxx.255
    gateway xxx.xxx.xxx.1
    bridge_ports eth0
    bridge_stp off
    bridge_maxwait 0
    bridge_fd 0

日志没有显示任何有趣的内容。其中唯一与网络相关的消息如下,它通常在启动后 10-15 分钟出现,但可能在断开连接前数小时出现:

kernel: br0: Multicast hash table maximum of 512 reached, disabling snooping: eth0

route -n断开连接时输出ip addr不会改变。ping 8.8.8.8说:

From OWN_IPv4 icmp_seq=1 Destination Host Unreachable

禁用 IPv6(我目前不使用)没有帮助。

编辑:无论虚拟机是否正在运行,都会发生这种情况。我只是觉得很奇怪,它们有连接,而主机却没有,这就是我提到它们的原因。除了偶尔的 SSH 扫描外,不应该有任何流量。

答案1

这台机器已经连续 16 小时没有断过网络连接,所以我很确定它已经“修好了”。我所做的是使用一个/etc/network/interfaces没有定义桥接的文件进行启动:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address xxx.xxx.xxx.6
    netmask 255.255.255.0
    network xxx.xxx.xxx.0
    broadcast xxx.xxx.xxx.255
    gateway xxx.xxx.xxx.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers SOME_IP SOME_OTHER_IP

两个小时后(为了确保万无一失),我/etc/network/interfaces从问题中复制了内容并运行:

ip address flush eth0 scope global && ifup br0

四分钟后,多播哈希表又满了,但我不在乎。又过了两个小时,我启动了虚拟机。

因此,显然使用桥接器启动会使系统在一段时间后失去连接,而启动后添加桥接器似乎有效。但不知道为什么会这样。

相关内容