O STP deve estar ativado na ponte usada para máquinas virtuais KVM.
Corrija isso no seu arquivo /etc/network/interfaces
:
bridge_stp on
Habilite-o em tempo de execução sem reiniciar o serviço de rede:
# brctl stp br0 on
Eu tenho um host KVM (em 192.168.0.10
) que atualmente tem um guest KVM em funcionamento (em 192.168.0.12
). Na tentativa de instalar um novo guest KVM hoje, cheguei a um problema em que a rede do novo guest funciona apenas parcialmente.
As únicas coisas que posso acessar do novo convidado são recursos dentro da rede. Tentar acessar quaisquer outros recursos de rede (incluindo aqueles que passaram pelo gateway) resulta em 100% de perda de pacotes para o destino.
Os convidados se conectam por meio de uma ponte em br0
que usa eth2
para acessar a rede.
A rede do host funciona como esperado, e a rede do outro (apenas um, atualmente) convidado, também conectando através da mesma ponte, funciona. Fechar o convidado em funcionamento não resolve o problema.
Ambos os convidados recebem seus dados de rede pelo DHCP.
A execução de tcpdump
do host na interface virtual para o convidado mostra o convidado tentando se comunicar com o mundo externo e obtendo apenas respostas do host e do gateway.
O convidado com o problema está atualmente se conectando por meio de 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
Observe que o convidado que não trabalha usa 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
Tanto o host quanto os convidados executam o Debian Wheezy.
Eu não vejo nenhuma configuração incorreta nos detalhes postados, especialmente tendo em mente que o mesmo método de configuração funcionou recentemente para instalar o outro convidado KVM (e continua a funcionar mesmo agora). Qual poderia ser a causa desse problema e como posso corrigi-lo?
O STP deve estar ativado na ponte usada para máquinas virtuais KVM.
Corrija isso no seu arquivo /etc/network/interfaces
:
bridge_stp on
Habilite-o em tempo de execução sem reiniciar o serviço de rede:
# brctl stp br0 on