Criando uma interface virtual de camada 2, vinculada via bridge virtual a eth0

1

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.

    
por Oliver Jones 26.11.2017 / 22:28

2 respostas

2

Não use dispositivos fictícios

Isso acontece regularmente, não sei por que as pessoas insistem em usá-las. Dispositivos fictícios só são úteis para permitir que aplicativos antigos se vinculem a um IP específico endereço , para que os dispositivos fictícios possam ser movidos para outros dispositivos mais de curta duração, se necessário.

O que você quer é um macvlan ou vários que substituam seu código%. Apesar do nome, o macvlan não tem nada a ver com a marcação de VLAN. O macvlan operará na camada 2, já estará em forma de ponte com a interface principal ( vnic* ) e você poderá selecionar um dos vários modos que possivelmente restringem a interação dos dispositivos em ponte, se necessário.

    
por 27.11.2017 / 08:58
1

As interfaces ethernet virtuais são interfaces virtuais, criadas em pares, que funcionam como um patch cable:

ip link add name nic0 type veth peer name vnic0 address 00:11:22:33:44:55
ip link set dev eth-VM master vbr0
ip link set nic0 up
ip link set vnic0 up

Você deve acabar com um% de vnic0 solto com um endereço MAC 00: 11: 22: 33: 44: 55 que pode ser atribuído à sua VM. Eles são discutidos na página macvlan mencionada acima. Eu não sei muito sobre o macvlan, mas isso deve funcionar bem e você não usaria a bridge vbr0 .

ip link add link eth0 name vnic0 address 00:11:22:33:44:55 type macvlan mode bridge
ip link set vnic0 up
    
por 07.12.2017 / 18:47