Criando uma interface virtual de camada 2, vinculada via ponte virtual à eth0

Criando uma interface virtual de camada 2, vinculada via ponte virtual à eth0

Boa noite,

Eu tenho um problema persistente, pois preciso criar uma interface virtual para usar com uma VM, mas ela deve 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 mascarará outro endereço MAC predefinido.)

A maioria das soluções que já encontrei estão relacionadas ao uso da camada 3 (ou seja, endereços IP) e, infelizmente, essas soluções não funcionarão para mim: a configuração da camada 3 deve ser feita dentro da VM, e a NIC virtual e o switch virtual devem ser configurado apenas para tráfego L2.

Por motivos operacionais e de segurança, não exijo nenhuma configuração de endereço IP (ou seja, link local apenas para IPv4 e IPv6 ou camada 3 completamente desativada).

Simplificando, preciso de uma topologia como esta:

My VM <-> vnic0 <-> vbr0 <-> eth0 <-> external network

Preciso criar um adaptador virtual, chamado vnic0, conectado (junto com o adaptador real eth0) a uma ponte virtual, chamada vbr0. De preferência, procuro arquivos de configuração para 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. Também posso precisar criar vnic1, vnic2, vnic3, etc., todos conectados ao vbr0, no futuro.

O uso de VLANs não é estritamente necessário (pode-se presumir que tudo está em uma VLAN não VLAN/nativa), mas se algum gênio puder me mostrar como configurar, digamos, tráfego dot1q marcado, com VLAN 50 nativa ativada vnic0, VLAN nativa 51 em vnic1, etc., com eth0 funcionando como um tronco (com todas ou um subconjunto de VLANs autorizados a viajar ao longo dele), sérios pontos 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 é muito conversadora, mas espero ver pelo menos alguns pacotes de transmissão recebidos por vnic0 via vbr0. No entanto, isso não está acontecendo. As tentativas de executar o DHCP na VM conectada ao vnic0 resultam em um tempo limite, embora haja um servidor DHCP funcionando perfeitamente conectado ao eth0.

Responder1

Não use dispositivos fictícios

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

O que você quer é ummacvlanou vários que substituem o seu vnic*. Apesar do nome, os macvlan não têm nada a ver com marcação de VLAN. O macvlan irá operar na camada 2, já estará meio que em ponte com a interface mestre ( eth0), e você pode selecionar um dos vários modos que possivelmente restringem a interação dos dispositivos em ponte, se precisar.

Responder2

Interfaces Ethernet virtuais são interfaces virtuais, criadas em pares, que atuam 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 vnic0endereço MAC 00:11:22:33:44:55 que pode atribuir à sua VM. Eles são discutidos nomacvlanpágina mencionada acima. Não sei muito sobre macvlan, mas isso também deve funcionar e você não usaria 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

informação relacionada