Como o virbr0-nic é criado?

11

Como posso criar uma interface de rede virtual como virbr0-nic? Estou tentando encontrar uma maneira de criar uma NIC como, virbr0-nicmas tudo o que posso encontrar na Internet é como criar uma interface anexada à interface física eth0:0. Quando escrevo

# brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.525400e0af01   yes virbr0-nic
virbr1      8000.525400e8a6b1   yes virbr1-nic
                            vnet1

Assim virbr0é a ponte à qual virbr0-nicestá ligada. Então, como são virbr0-nice vnet1criados?

cosimo
fonte
geralmente isso está associado a algo como uma ponte específica para um pouco de software. O que você realmente está tentando fazer?
Journeyman Geek
Instalei o KVM e notei que ele criou o novo NIC virbr0-nic. Estou apenas me perguntando como posso criar minha própria NIC como esta.
cosimo

Respostas:

10

Estes são dispositivos fictícios. Você pode correr

modprobe dummy

Para criar uma interface de rede chamada dummy0.

Se você deseja mais de um dispositivo, pode criar digamos 5 com

modprobe dummy numdummies=5

Você pode controlar esses dispositivos como qualquer outro dispositivo de rede.

Dê a ele um endereço MAC com

ip link set dummy0 address aa:aa:aa:bb:bb:bb

Dê a ele um endereço IP com

ip addr add 10.0.0.1/24 dev dummy0

Adicione-o à sua ponte existente com

brctl addif virbr0 dummy0

Configure, configure, NAT desligue e assim por diante.

suprjami
fonte
1
Essas respostas parecem ser mais corretas que a alternativa, mas faltam detalhes sobre a criação de uma interface equivalente ao que o KVM configura por padrão (virbr0-nic).
pepper_chico
O pôster da pergunta parece entender o que a ponte faz e o que o dispositivo fictício faz, ele só queria saber como criar interfaces semelhantes. Você pode melhorar a resposta se achar que pode ser melhor.
24816 suprjami
6

A libvirt está usando o dispositivo TUN para essa finalidade. Você pode criar este dispositivo manualmente, seguindo o comando:

# /usr/bin/tunctl -t virbr0-nic
Max A.
fonte
3

virbr0-nic significa ponte virtual NIC.

É basicamente uma ponte entre sua placa de rede física e a placa de rede virtual da sua máquina virtual.

Para gerenciar a interface em ponte, você pode usar o brctlcomando Você pode listar todas as suas interfaces de ponte com

brctl show 

e adicione ou modifique pontes de acordo com suas necessidades. Para criar uma nova ponte, use

brctl addbr <name>

onde <name>será o nome da sua nova ponte (como virbr0-nic). Em seguida, você pode adicionar interfaces à ponte com

brctl addif <brname> <ifname>

Você pode consultar a página do manual para obter informações adicionais.

Giorgio Previtera
fonte
1
Na verdade, isso não diz sobre a criação de um novo "virbr1-nic", apenas um novo "virbr1" cuja interface a ser configurada ("virbr1-nic") está implícita a existir anteriormente.
pepper_chico
Também não acho que seja uma ponte entre físico e virtual. Eu tenho que fazer o disfarce entre virbr0 e o físico para que os pacotes sejam roteados.
Pete Ashdown
2

Não está claro exatamente quais tipos de dispositivos virbr0-nice vnet1estão em sua configuração. Existem alguns tipos de dispositivos virtuais que podem ser úteis para incluir em uma ponte, alguns dos quais podem ser criados usando o ipcomando

Um tipo de dispositivo virtual é o vethque cria pares de interfaces Ethernet virtuais conectadas.

ip link add veth0 type veth peer name veth1

Neste exemplo veth0e veth1são nomes de interface arbitrários que eu criei para o exemplo. Este método pode, por exemplo, ser útil se você deseja mover uma das duas interfaces para um espaço para nome de rede diferente.

Outro tipo de interface virtual é vlanonde você cria uma única interface Ethernet virtual conectada a uma tag 802.1q específica em uma interface física:

ip link add link eth0 name eth0.10 type vlan id 10

Há uma página de manual com informações sobre ainda mais tipos de interfaces virtuais que podem ser criadas com o ipcomando O nome da página de manual depende da versão que você instalou, eu a vi nomeada ip-linkou apenas ip.

Além disso, se você estiver usando qualquer virtualização, existem interfaces virtuais que conectam host e VM. Os detalhes específicos dependem da solução de virtualização que você está usando.

Kasperd
fonte
1

mas eu não tenho essa coisa / usr / bin / tunctl -t virbr0-nic que é instalada no cockpit e não consigo encontrar uma opção de exclusão quando vou usar uma máquina virtual, tudo bem quando existe, mas para redes com systemd-networkd eu tenho muitos problemas com ele. O Cockpit usará o Network-Manager e os arquivos de configuração. após a instalação, minha rede está desativando todos os dispositivos e aplicativos sobem com muitas falhas.

Se você verificar o 'ifconfig -a' após uma nova instalação do sistema RHEL / CentOS 6,7, você encontrará o nome da interface virbr0. Aqui está um exemplo do sistema CentOS 7 recém-instalado.

ifconfig -a

....

virbr0: flags=4099[UP,BROADCAST,MULTICAST]  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:d5:f2:0c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0-nic: flags=4098[BROADCAST,MULTICAST]  mtu 1500
        ether 52:54:00:d5:f2:0c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

O que é a interface virbr0 A interface da ponte virbr0 é criada pela configuração de rede padrão da libvirtd. libvirtd é o serviço que fornece uma base para o host atuar como um hypervisor. Portanto, caso você não esteja usando a virtualização xen, você pode impedir que a rede padrão da libvirtd seja ativada na inicialização ou pode impedir que a própria libvirtd seja ativada na inicialização. O primeiro impedirá que qualquer convidado da VM conectado à rede padrão da libvirtd tenha conectividade de rede e o último impediria a execução de VMs. O que é bom se você não estiver usando. Desativar rede padrão libvirtd

  1. Você pode desativar temporariamente a rede padrão da libvirtd usando o comando virsh. Isso não persistirá durante a reinicialização.

    padrão virsh net-destroy

  2. Para desativar permanentemente a rede padrão libvirtd de ser criada na inicialização:

    virsh net-autostart default --disable

Remover rede padrão libvirtd Para remover permanentemente a rede padrão libvirtd:

virsh net-undefine default

Para desativar permanentemente o serviço libvirtd, iniciando na inicialização no RHEL5 e RHEL6:

chkconfig libvirtd off

Para desativar permanentemente o serviço libvirtd, iniciando na inicialização no RHEL7:

systemctl disable libvirtd.service
Aktony
fonte