web-dev-qa-db-fra.com

Conteneurs LXD et hôte sur DHCP

Je travaille actuellement sur des conteneurs et je ne parviens pas à les configurer pour qu'ils utilisent le protocole DHCP du réseau, afin de pouvoir y accéder directement via le nom d'hôte (nom du conteneur). Cela signifie que les applications sur d'autres appareils peuvent accéder aux services du conteneur. Si je souhaite passer de SSH à un conteneur, je n'ai pas besoin tout d'abord de SSH sur l'hôte, et j'utilise lxc exec [Containername] bash.

J'ai réussi à créer un conteneur Ubuntu 16.04, et tout se passe bien. Il fonctionne dans la plage IP initialement configurée lorsque j’utilisais lxd init (10.0.1. *), Cependant, je voudrais les amener à utiliser la plage IP et le DHCP du réseau principal.

J'ai réussi à le faire en ajoutant à mon fichier/etc/network/interfaces ce qui suit:

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

Après avoir rechargé le service réseau, cela a bien fonctionné et les conteneurs ont pu être vus sur le réseau, et inversement. Cependant, l'hôte a perdu l'accès à Internet et ne pouvait plus voir d'autres périphériques sur le réseau, et inversement.

En annulant les modifications, la machine hôte a de nouveau accès au réseau. Toutefois, les conteneurs sont ensuite revenus à leur plage IP d'origine et ne permettaient aucune visibilité du réseau.

J'ai eu d'autres bricolages, mais sans succès, je suis donc de retour à l'hôte avec Internet, et les conteneurs non visibles pour le moment; ce n'est pas ce que je veux.

Quelqu'un peut-il fournir des informations supplémentaires sur les endroits où j'ai peut-être mal tourné? Devrais-je faire quelque chose de complètement différent?

Merci d'avance.

2
Larnu

Eh bien, à la fin, la seule chose qui semblait résoudre ce problème était une nouvelle installation du système d'exploitation. Je suis maintenant sous Ubuntu 17.10. Plutôt que de mettre à niveau, j’ai installé Fresh (mais j’ai créé une image de mon ancienne installation, si j’en avais besoin).

Quant au fichier/etc/network/interfaces, il était aussi simple que:

auto br0
iface br0 inet dhcp

bridge_ports enp3s0
iface enp3s0 inet manual

Quant au profil lxd, il est configuré comme suit:

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

Vraiment pas bien pourquoi il a refusé de travailler sur 16.04.3 LTS, mais au moins ça marche sur 17.10.

Merci pour l'aide quand même!

1
Larnu

Pour que tout soit écrit ensemble, dans ma configuration, tous les conteneurs et leur ordinateur hôte obtiennent leur adresse IP du même serveur DHCP (mon routeur) et sont tous disponibles sur le réseau local.

Sur un hôte Ubuntu Server 16.04, mon /etc/network/interfaces se lit comme suit:

iface br0 inet dhcp
  bridge_ports eth0
iface eth0 inet manual

Comme je l'ai dit dans des commentaires, après un redémarrage et lorsque le réseau de l'hôte fonctionne comme prévu, je pense que vous pouvez reconfigurer le réseau de LXD (entre autres) avec Sudo dpkg-reconfigure -p medium lxd.

Quand j’ai fait lxd init, j’ai répondu yes à Do you want to configure the LXD bridge (yes/no)?, puis je lui ai dit <No> lorsqu’il a demandé l’établissement d’un pont réseau, <Yes> que je voudrais utiliser. un existant, et br0 comme nom de pont.

Enfin, je me fie aux MAC pour attribuer des adresses IP statiques à n’importe quel ordinateur (y compris l’hôte et plusieurs conteneurs), dans les paramètres de mon serveur DHCP (mon routeur). Cela simplifie les paramètres dans les conteneurs et l'hôte.

1
Jonathan Y.