Linux

新的 KVM 來賓無法訪問外部 LAN

  • August 3, 2013

我有一個 KVM 主機 (at 192.168.0.10),它目前有一個工作的 KVM 來賓 (at 192.168.0.12)。今天嘗試安裝新的 KVM 來賓時,我遇到了一個問題,即新來賓上的網路只能部分工作。

我可以從新來賓訪問的唯一內容是網路內的資源。嘗試訪問任何其他網路資源(包括通過網關的資源)會導致 100% 的封包遺失到目的地。

來賓通過用於訪問網路的網橋br0連接eth2

主機網路按預期工作,另一個(目前只有一個)來賓上的網路也通過同一個網橋連接,工作正常。關閉正在工作的客戶機並不能解決問題。

兩個來賓都通過 DHCP 獲取他們的網路詳細資訊。

在客戶機的虛擬介面上從主機執行tcpdump顯示客戶機嘗試與外部世界通信,並且只從主機和網關獲得響應。


主持人

有問題的客人目前正在通過 連接vnet0

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
   link/ether 00:1e:4f:34:dc:79 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
   link/ether 00:1e:4f:34:dc:7b brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
   link/ether 00:15:17:6a:fb:ee brd ff:ff:ff:ff:ff:ff
13: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
   link/ether 00:15:17:6a:fb:ee brd ff:ff:ff:ff:ff:ff
   inet 192.168.0.10/24 brd 192.168.0.255 scope global br0
   inet6 fe80::215:17ff:fe6a:fbee/64 scope link
      valid_lft forever preferred_lft forever
24: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 500
   link/ether fe:54:00:fc:0f:07 brd ff:ff:ff:ff:ff:ff
   inet6 fe80::fc54:ff:fefc:f07/64 scope link
      valid_lft forever preferred_lft forever
25: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 500
   link/ether fe:54:00:89:8e:17 brd ff:ff:ff:ff:ff:ff
   inet6 fe80::fc54:ff:fe89:8e17/64 scope link
      valid_lft forever preferred_lft forever
# ip route
default via 192.168.0.202 dev br0
192.168.0.0/24 dev br0  proto kernel  scope link  src 192.168.0.10
# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp
   bridge_ports    eth2
   bridge_stp      off
   bridge_maxwait  0
   bridge_fd       0
# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.0015176afbee   no      eth2
                           vnet0
                           vnet1

非工作客人

請注意,非工作客人使用 busybox ip

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisk pfifo_fast qlen 1000
   link/ether 52:54:00:fc:0f:07 brd ff:ff:ff:ff:ff:ff
   inet 192.168.0.27/24 scope global eth0
   inet6 fe80::5054:ff:fefc:f07/64 scope link
      valid_lft forever preferred_lft forever
# ip route
default via 192.168.0.202 dev eth0
192.168.0.0/24 dev eth0  src 192.168.0.27

工作客人

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 52:54:00:89:8e:17 brd ff:ff:ff:ff:ff:ff
   inet 192.168.0.12/24 brd 192.168.0.255 scope global eth0
   inet6 fe80::5054:ff:fe89:8e17/64 scope link
      valid_lft forever preferred_lft forever
# ip route
default via 192.168.0.202 dev eth0
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.12

主機和來賓都執行 Debian Wheezy。

我在發布的詳細資訊中沒有看到任何錯誤配置,特別是請記住,完全相同的設置方法最近可以安裝另一個 KVM 來賓(並且即使現在也可以繼續工作)。這個問題的原因可能是什麼,我該如何解決?

應在用於 KVM 虛擬機的網橋上啟用 STP。

/etc/network/interfaces在您的文件中修復此問題:

   bridge_stp      on

在執行時啟用它而不重新啟動網路服務:

# brctl stp br0 on

引用自:https://serverfault.com/questions/528449