Kvm-Virtualization
主機自發斷開網路連接,但 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 掃描之外,不應該有任何流量。
這台機器已經連續 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
四分鐘後,多播雜湊表又滿了,但我不在乎。又過了兩個小時,我啟動了虛擬機。
因此,顯然使用網橋啟動會使系統在一段時間後失去連接,而在啟動後添加網橋似乎可以工作。不過,不知道為什麼會這樣。