Quero saber se existe outra maneira além de usar pontes Linux para interconectar interfaces de duas máquinas virtuais?
Como estou tentando executar a implementação de spanning tree privado em máquinas virtuais ... a ponte linux subjacente que conecta ambas as máquinas virtuais está eliminando os BPDUs.
O VirtualBox resolve o problema fornecendo opção de rede interna.
Existe alguma opção semelhante se eu usar KVM?
Atualização-01:Habilitar o STP acabaria criando uma topologia contendo 3 pontes (2VMs e 1 ponte Linux conectando ambas as VMs) em vez de 2 pontes (2VMs).
Responder1
Parece que você poderia usar -netdev socket
a opção do QEMU aqui, provavelmente a versão UDP se encaixará melhor.
Também -netdev vde
pode funcionar, embora seja mais complicado e exija o daemon de switch VDE configurado.
Mas eu tentaria superar o problema com a ponte Linux de qualquer maneira, com a opção STP habilitada, como sugeriu @Martin. Esta é uma configuração simples e muito comum.
Responder2
Você pode tentar usar o driver macvtap. Observe que isso tem algumas limitações - certifique-se de ler a documentação da libvirt sobre isso.
Responder3
QEmu/KVM oferece opções para usar umTOCARinterface em seu host:
quando seu host envia um quadro Ethernet para esta interface, ele é enviado para a interface do seu convidado;
quando seu convidado envia um quadro Ethernet para sua interface, ele é enviado para a interface TAP em seu host.
Você pode criar ambos VMS com interfaces TAP. Agora você precisa trocar os quadros entre as duas interfaces TAP: você pode fazer isso escrevendo um programa que encaminha quadros Ethernet entre as interfaces (usando AF_PACKET
, SOCK_RAW
soquetes) porrecebendo quadrosde uma interface eenviandoeles para o outro.
Responder4
As pessoas que sugeriram um dispositivo TAP estavam no caminho certo, mas você também precisa de algo mais:
Primeiro, crie umquinto par. Este é um par de interfaces virtuais, cada uma das quais simplesmente passa qualquer tráfego que recebe para a outra.
Em seguida, anexe uma de suas duas VMs via macvtap a uma das interfaces veth do par e anexe a outra VM à outra interface veth.
Finalmente, envie algum tráfego.