Contêineres e host LXD no DHCP

1

Estou trabalhando em contêineres no momento e tendo problemas em configurá-los para usar o DHCP da rede, para que eles possam ser acessados diretamente pelo nome do host (nome do contêiner). Isso significará que aplicativos em outros dispositivos podem acessar os serviços no contêiner e, se eu quiser SSH para o contêiner, não preciso primeiramente de SSH para o host e usar lxc exec [containername] bash.

Consegui criar com sucesso um container do Ubuntu 16.04 e ele roda bem. Ele é executado dentro do intervalo de IPs inicialmente configurado quando eu usei o init lxd (10.0.1. *), No entanto, eu gostaria de fazer com que eles usassem o intervalo de IP da rede principal e o DHCP.

Eu consegui fazer isso adicionando ao meu arquivo / etc / network / interfaces o seguinte:

auto br0
iface br0 inet static
    address 192.168.1.64
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.0.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.254

bridge_ports enp3s0  
iface enp3s0 inet manual

Depois de recarregar o serviço de rede, isso funcionou bem e os contêineres puderam ser vistos na rede e vice-versa. No entanto, o host perdeu o acesso à Internet e não pôde mais ver outros dispositivos na rede e vice-versa.

A reversão das alterações permitiu que a máquina host acessasse a rede novamente. No entanto, os contêineres retornaram ao seu intervalo de IP original e sem visibilidade da rede.

Eu tinha mais tentativas, mas sem sucesso, então voltei para o host tendo internet e os containers não visíveis no momento; isso não é o que eu quero.

Alguém pode fornecer mais informações sobre onde eu poderia ter errado? Eu deveria estar fazendo algo completamente diferente?

Obrigado antecipadamente.

    
por Larnu 29.10.2017 / 11:28

2 respostas

0

Bem, no final, a única coisa que pareceu consertar foi uma nova instalação do sistema operacional. Agora estou executando o Ubuntu 17.10. Em vez de atualizar, eu instalei fresco (mas fiz uma imagem da minha instalação antiga, caso eu precise dela).

Quanto ao arquivo / etc / network / interfaces, foi tão simples quanto:

auto br0
iface br0 inet dhcp

bridge_ports enp3s0
iface enp3s0 inet manual

Quanto ao perfil lxd, ele é configurado como:

config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0
    type: nic
name: default

Realmente não tenho certeza por que se recusou a trabalhar em 16.04.3 LTS, mas pelo menos está trabalhando em 17.10.

Obrigado pela ajuda mesmo assim!

    
por Larnu 03.11.2017 / 22:52
1

Apenas para que tudo seja escrito em conjunto, na minha configuração, todos os contêineres e sua máquina host obtêm seu IP do mesmo servidor DHCP (do meu roteador) e estão todos disponíveis na LAN.

Em um host Ubuntu Server 16.04, meu /etc/network/interfaces lê:

iface br0 inet dhcp
  bridge_ports eth0
iface eth0 inet manual

Como eu disse nos comentários, depois de um reinício e quando a rede do host funciona como deveria, acho que você pode reconfigurar a rede do LXD (entre outras coisas) com sudo dpkg-reconfigure -p medium lxd .

Quando eu fiz lxd init , respondi yes a Do you want to configure the LXD bridge (yes/no)? , depois disse <No> quando pediu para configurar uma ponte de rede, <Yes> gostaria de usar uma existente e br0 como o nome da ponte.

Por último, confio nos MAC's para atribuir IPs estáticos a qualquer máquina (incluindo o host e vários contêineres) nas configurações do meu servidor DHCP (meu roteador). Isso simplifica as configurações nos contêineres e no host.

    
por Jonathan Y. 02.11.2017 / 13:12