Como definir um endereço IPv6 estático para um contêiner LXD

2

Em um host Ubuntu Xenial, estou executando o LXD 2.12 a partir do xenial-backports. Embora seja fácil alterar um endereço ipv4 de contêineres para um endereço estático de fora do contêiner, não posso alterar seu endereço ipv6. Qual é a maneira certa de fazer isso?

Eu configurei o lxd com uma ponte lxdbr0 com IPv4 e IPv6. A parte relacionada na configuração é assim:

ipv4.address: 10.122.45.1/24
ipv4.nat: "true"
ipv6.address: fd42:7146:f400:1::1/64
ipv6.nat: "true"

Depois de lançar um contêiner com o Xenial (contxenial), seu ifconfig para eth0 era parecido com isto:

peter@led:~$ lxc exec contxenial -- ifconfig eth0
eth0 Link encap:Ethernet  HWaddr 00:16:3e:bc:f5:8d
     inet addr:10.122.45.223  Bcast:10.122.45.255  Mask:255.255.255.0
     inet6 addr: fd42:7146:f400:1:216:3eff:febc:f58d/64 Scope:Global
     inet6 addr: fe80::216:3eff:febc:f58d/64 Scope:Link
     :

Agora, eu queria alterar ambos, seu endereço ipv4 AND ipv6 para endereços IP estáticos usando os seguintes comandos:

peter@led:~$ lxc network attach lxdbr0 contxenial eth0
peter@led:~$ lxc config device set contxenial eth0 ipv4.address 10.122.45.71
peter@led:~$ lxc config device set contxenial eth0 ipv6.address fd42:7146:f400:1::71

Por fim, reiniciei meu contêiner.

peter@led:~$ lxc restart contxenial

Para minha surpresa, o endereço IPv4 mudou como esperado, mas o endereço IPv6 não mudou!

peter@led:~$ lxc exec contxenial -- ifconfig eth0
eth0 Link encap:Ethernet  HWaddr 00:16:3e:bc:f5:8d
     inet addr:10.122.45.71  Bcast:10.122.45.255  Mask:255.255.255.0
     inet6 addr: fd42:7146:f400:1:216:3eff:febc:f58d/64 Scope:Global
     inet6 addr: fe80::216:3eff:febc:f58d/64 Scope:Link
     :

No entanto, o dnsmasq.hosts contém tanto o endereço IPv4 alterado quanto o endereço IPv6 alterado.

peter@led:~$ sudo cat /var/lib/lxd/networks/lxdbr0/dnsmasq.hosts
00:16:3e:bc:f5:8d,id:*,10.122.45.71,[fd42:7146:f400:1::71],contxenial

O que é isso, estou fazendo errado? Qual é o caminho certo para alcançar isso atualmente (desde o LXC / LXD 2.3 ou superior)?

    
por Peter Gloor 19.04.2017 / 15:01

1 resposta

1

De Stéphane Graber, o líder do projeto da LXC / LXD, recebi a seguinte resposta para o meu problema :

% bl0ck_qu0te%

Esta foi a parte que faltava, não encontrei em nenhuma documentação. Isso também significa que não é possível alterar os endereços IPv6 de fora do contêiner da mesma maneira simples que pode ser feita com o IPv4.

No meu caso, eu tive que adicionar a seguinte linha ao /etc/network/interfaces.d/50-cloud-init.cfg dentro do container.

iface eth0 inet6 dhcp

Sem comentários, deve ser algo como isto:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

O arquivo é chamado de / etc / network / interfaces. Pode ser diferente em outras distribuições.

Finalmente, deve funcionar após o reinício do contêiner (pelo menos funcionou para mim).

Espero que isso ajude os outros também.

    
por Peter Gloor 20.04.2017 / 09:48