У меня есть KVM-хост (в 192.168.0.10
), у которого в настоящее время есть один работающий гостевой KVM (в 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 (и продолжает работать даже сейчас). Что может быть причиной этой проблемы и как ее исправить?
STP должен быть включен на мосте, используемом для виртуальных машин KVM.
Исправьте это в своем /etc/network/interfaces
файл:
bridge_stp on
Включите его во время выполнения без перезапуска сетевой службы:
# brctl stp br0 on