Crie virbr0 para virsh

0

Estou tentando configurar VMs baseadas em KVM em um servidor local e seguindo este documento: link

Nesta documentação, você afirma que obterá virbr0 para conexão de ponte, mas infelizmente não foi criada automaticamente. Doc sugerir para usar o virt-manager para consertar isso, mas estou tendo apenas uma instalação padrão do servidor debian sem GUI. Então, como posso criar isso a partir da linha de comando?

Eu criei br0, tudo parece bom:

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:1f:c6:9c:0f:0d brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:1f:c6:9c:0f:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.200/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::21f:c6ff:fe9c:f0d/64 scope link
       valid_lft forever preferred_lft forever

$ sudo ip route
default via 192.168.1.1 dev br0


$ brctl show
bridge name bridge id           STP enabled interfaces
br0         8000.001fc69c0f0d   no          eth0

aviso, não há virbr0 .

Se eu tentar criar o ifage-bridge, recebo um erro:

$ virsh iface-bridge eth0 br0
error: failed to get interface 'eth0'
error: internal error: couldn't find interface named 'eth0': required entry missing

Eu também tenho o bridge configurado para qemu, o que fiz manualmente e adicionei ao qemu autostart:

$ cat /etc/libvirt/qemu/networks/bridge.xml
<network>
  <name>bridge</name>
  <bridge name="br0"/>
  <forward mode="bridge"/>
</network>

E não consigo criar / iniciar uma VM por causa da bridge:

$ virt-install --virt-type kvm --name testvm --network bridge
Starting install...
Retrieving file MANIFEST...                  | 3.3 kB     00:00 ...
Retrieving file linux...                     | 6.0 MB     00:08 ...
Retrieving file initrd.gz...                 |  29 MB     00:56 ...
Allocating 'testvm.qcow2'                    | 8.0 GB     00:00
ERROR    failed to retrieve file descriptor for interface: Transport endpoint is not connected

Funciona se eu omitir a configuração --network . Esta VM não teria rede, basicamente inútil. Se eu adicionar uma configuração de ponte por virsh edit testvm :

<interface type='bridge'>
  <source bridge='br0'/>
  <model type='virtio'/>
</interface>

e executado, ele falhará de qualquer maneira:

$ virsh start testvm
error: Failed to start domain testvm
error: failed to retrieve file descriptor for interface: Transport endpoint is not connected

O que fiz incorretamente? Como devo adicionar virbr0 e quente para configurar a rede para VMs?

Eu tenho uma nova instalação do Debian Jessie, nada foi instalado exceto os principais componentes, ssh e kvm / qemu / libvirt

    
por Igor Artamonov 27.01.2017 / 12:27

3 respostas

1

O motivo foi insuficiente para usar o bridge de um usuário não root.

Documentação afirma que:

libvirt defaults to qemu:///session for non-root. So from <youruser> you'll need to do:

$ virsh --connect qemu:///system list --all

Não ficou claro que você precisa especificá-lo para instalação e quando faria isso. Acontece que é uma opção de linha de comando necessária para usuários não-root.

O comando correto para instalar uma nova VM com rede deve incluir o seguinte:

virt-install --connect qemu:///system .......

Ou também é possível instalá-lo diretamente em root user

    
por 04.02.2017 / 10:29
0

Você já tem o br0 configurado, é bom o suficiente. A opção correta de virt-install é --network bridge=br0

EDIT: e exemplo de uma interface anexada a uma ponte, como prometido nos comentários:

</interface>
  <mac address='00:1a:4a:01:00:04'/>
  <source bridge='br0'/>
  <target dev='vnet2'/>
  <model type='virtio'/>
  <link state='up'/>
  <alias name='net0'/>
</interface>

target dev e alias name são opcionais

    
por 27.01.2017 / 18:09
0

É assim que deve funcionar:

# cat /tmp/virt-net-example.xml
<network connections='9'>
  <name>some-virt-net</name>
  <uuid>530f11c4-617b-447c-bdba-704f34374277</uuid>
  <bridge name='virbr42' stp='on' delay='0'/>
  <mac address='42:13:37:23:21:87'/>
  <ip address='172.20.42.254' netmask='255.255.255.0'>
    <dhcp>
      <range start='172.20.42.1' end='172.20.42.42'/>
    </dhcp>
  </ip>
</network>
# virsh net-define /tmp/virt-net-example.xml
# virsh net-start some-virt-net
Network some-virt-net started

# brctl show virbr42
bridge name     bridge id               STP enabled     interfaces
virbr42         8000.421337232187       yes             virbr42-nic

# link show virbr42-nic
99: virbr42-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr42 state DOWN mode DEFAULT group default qlen 1000
    link/ether 42:13:37:23:21:87 brd ff:ff:ff:ff:ff:ff

Testado agora mesmo no FC22 contra o libvirt 1.2.13

    
por 31.01.2017 / 09:45