systemd bridge para VM + vários IPs estáticos

3

Eu tenho um servidor Ubuntu 18.04 com 3 IPs públicos. O IP principal já está pré-configurado.

Gostaria de configurar o IP2 e o IP3. O IP2 deve ser usado para um domínio SSL e IP3 para uma máquina virtual (qemu libvirt). O problema (para mim) é que versões anteriores do Ubuntu usavam o upstart e eu era capaz de configurá-lo, mas o a versão atual tem o systemd e não consigo resolvê-lo.

Anteriormente, usei o seguinte howto para a configração e tudo funcionou bem: link

Agora, com o systemd, este é o arquivo de configuração de rede (somente com 1 IP) com o qual eu comecei:

# /etc/systemd/network/10-eno1.network
[Match] 
Name=eno1 

[Network]
Gateway=IP_GATEWAY

[Address] 
Address=IP1
Peer=IP_GATEWAY/32 

Adicionar IP2 (para SSL) é fácil, pois requer apenas uma seção [Address] adicional no arquivo acima.

Quanto ao IP3, acho que para rotear o IP3 para minha VM, preciso criar uma ponte como no howto original. Então, ao tentar configurar uma ponte qemu / libvirt para a VM, acabei com algo muito semelhante a essa configuração: link ou seja, - dispositivo br0 + eno1 adicionado à ponte + configurar ponte como acima

Mas, assim como no tópico acima, o servidor se torna inacessível (não é possível pingar) e a saída do comandos de diagnóstico é praticamente o mesmo.

Alguma sugestão sobre como configurar o IP3 para uso com VM?

    
por wanson 15.05.2018 / 20:42

1 resposta

2

Eu mesmo consegui encontrar a solução. Demorei muito, porque quando eu testei em um KVM virtual, não funcionou por algum motivo.

Suponha que:

  • IP1 - IP principal do meu servidor
  • IP2 - IP extra usado para o certificado SSL do meu site
  • IP3 - IP extra usado para minha máquina virtual
  • eno1 é minha interface física de ethernet

No host - 3 arquivos:

# /etc/systemd/network/10-virbr1.netdev
[NetDev]
Name=virbr1
Kind=bridge
MACAddress=00:1e:67:ad:8d:12

[Bridge]
STP=false

# /etc/systemd/network/20-eno1.network
[Match]
Name=eno1

[Network]
Bridge=virbr1

# /etc/systemd/network/30-virbr1.network
[Match]
Name=virbr1

[Network]
Gateway=IP_GATEWAY

[Address]
Address=IP1
Peer=IP_GATEWAY/32

[Address]
Address=IP2
Peer=IP_GATEWAY/32

Na máquina virtual (algum Ubuntu mais antigo - não usa systemd):

# /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address IP3
    netmask 255.255.255.255
    gateway IP_GATEWAY
    pointopoint IP_GATEWAY
    dns-nameservers 8.8.8.8 1.1.1.1

Alguma explicação extra: MACAddress = 00: 1e: 67: ad: 8d: 12 foi necessário porque minha empresa de hospedagem (Hetzner) faz uma filtragem de MAC para que a ponte tenha que ter o MAC da placa de rede física.

Pela mesma razão, a VM precisa ter algum endereço MAC específico que você possa gerar no painel de controle do servidor do Hetzner. Então, no meu caso, a saída de "virsh dumpxml my-vm" é assim:

...
<interface type='bridge'>
      <mac address='00:50:56:00:53:E1'/>
      <source bridge='virbr1'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...
    
por 18.05.2018 / 10:26