Boa noite,
Eu tenho um problema persistente, pois preciso criar uma interface virtual para uso com uma VM, mas ela precisa ser apenas da camada 2: a VM se comunicará com um endereço MAC predefinido (qualquer um pode ser definido para o adaptador, que será usado pela VM - ou a VM irá mascarar outro endereço MAC predefinido.)
A maioria das soluções que já encontrei está relacionada ao uso da camada 3 (ou seja, endereços IP) e, infelizmente, essas soluções não funcionam para mim: a configuração da camada 3 deve ser feita dentro da VM, e a NIC virtual e switch virtual deve ser configurado apenas para tráfego L2.
Por motivos operacionais e de segurança, não preciso de nenhuma configuração de endereço IP (isto é, link-local apenas para IPv4 e IPv6 ou camada 3 totalmente desativada.)
Simplificando, preciso de uma topologia como esta:
My VM <-> vnic0 <-> vbr0 <-> eth0 <-> external network
Eu preciso criar um adaptador virtual, chamado vnic0, conectado (juntamente com o adaptador real eth0) a uma ponte virtual, chamada vbr0. De preferência, estou atrás dos arquivos de configuração do RHEL 7.4 / CentOS 7.4 que permitirão que a configuração funcione automaticamente, sem interação de um administrador do sistema, após uma reinicialização. Eu também posso precisar criar vnic1, vnic2, vnic3, et cetera, todos conectados a vbr0, no futuro.
O uso de VLANs não é estritamente necessário (pode-se supor que tudo está em uma VLAN não-VLAN / nativa), mas se algum gênio lá fora puder me mostrar como configurar, digamos, tráfego dot1q marcado, com VLAN 50 na vnic0, VLAN nativa 51 na vnic1, etc, com a eth0 funcionando como um tronco (com todo ou um subconjunto de VLANs permitido viajar ao longo dela), pontos graves de brownie seriam devidos a você. :)
Eu já tentei o seguinte:
modprobe dummy
ip link set name vnic0 dev dummy0
ip link add vbr0 type bridge
ip link eth0 down
ip link set dev eth0 master vbr0
ip link set dev vnic0 master vbr0
ip link set vbr0 up
ip link set vnic0 up
ip link set eth0 up
O maior problema é que minha rede vnic0 transmite pacotes, mas nunca os recebe. Minha rede não é super-chatty, mas eu esperaria ver pelo menos alguns pacotes de broadcast recebidos pelo vnic0 via vbr0. No entanto, isso não está acontecendo. As tentativas de executar o DHCP dentro da VM conectada ao vnic0 resultam em um tempo limite, embora haja um servidor DHCP em perfeito funcionamento conectado à eth0.