LXC en mode Bridge - Configuration

Objet : Configurer les conteneurs LXC et l'hôte afin que les conteneurs dispose d'un accés ethernet extérieur par le biais de la machine hôte.

Niveau requis :

Commentaires : Modifier la configuration réseau d'un : environnement LXC.

Suivi :

Création par bendia 22/sources03/2014

Mis à jour par greenmerlin 29/10/2016

Testé par captnfab le 01/07/2014

Commentaires sur le forum : ici 1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !

N'hésitez pas, aussi, à regarder la méthode alternative pour créer, rapidement, des bridges partagés avec Network Manager !

Introduction

Lors d'une installation par défaut d'un conteneur LXC, le conteneur partage la même interface réseau que la machine hôte.
Elle dispose donc de la même adresse IP, et en partage les mêmes ports.

On peut alors modifier la configuration réseau afin d'individualiser cette adresse !

Préparer la machine hôte

Il est nécessaire que la paquet bridge-utils soit installé.

Si ce n'est pas le cas :

apt-get install bridge-utils

La configuration réseau de la machine hôte

Par défaut, un conteneur lxc n'aura aucune configuration réseau2) sur une jessie en tout cas , il revient d'abord de lui en configurer une.

Au menu :

SimpleBridge (NAT)

MasqueradedBridge

VlanNetworking

Dans notre exemple, nous ne verrons que le cas d'un Pont Simple

Création de l'interface réseaux de pont nommer lxcbr0

brctl addbr lxcbr0

On vérifie en utilisant la commande ip :

ip addr show

remplacé par

ip a show

On ajoute l'interface a bridger :

brctl addif br0 eth0

Puis on active le pont :

ifup lxcbr0

On édite /etc/network/interface pour configurer notre pont de manière permanente :

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp # pont réseau auto lxcbr0 iface lxcbr0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0

À la suite, modifier la configuration de notre conteneur :
on édite le fichier /var/lib/lxc/proxies/config pour remplacer la valeur lxc.network.type = none :

... lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxcbr0 lxc.network.name = eth0 lxc.network.hwaddr = 00:16:3e:a3:23:1d //l'adresse MAC vous l'inventez bien entendu lxc.network.mtu = 1500 ...

Redémarrez maintenant votre conteneur pour tester si vous avez le réseau.
Note : Vous n'avez pas ping d’installé par défaut sur votre conteneur c'est normal, testez plutôt avec apt

Réseau facile avec Lxc-net

Stretch apporte une nouvelle version de LXC qui embarque la possibilité de configurer facilement un bridge simple (NAT en IPV4) pour vos conteneurs grâce à lxc-net.

Pour configurer cette interface de bridge lxcbr0 il faut créer un fichier lxc-net dans /etc/default/ :

> /etc/default/lxc-net

et y inscrire ceci :

USE_LXC_BRIDGE="true"

Ensuite il faut éditer le fichier /etc/lxc/default.conf de façon à modifier la partie suivante :

lxc.network.type = empty

par :

#indique la création d'une interface virtuelle rattachée à un bridge.
lxc.network.type = veth
#indique le bridge auquel est rattachée l'interface virtuelle
lxc.network.link = lxcbr0
#indique d'activer l'interface au démarrage du conteneur.
lxc.network.flags = up
#indique l'adresse MAC attribuée à l'interface
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

Les lignes précédées du # sont justes là en aide-mémoire pour expliquer la ligne qui les suit3) il n'est donc pas nécessaire de les recopier .

Pour finir il faut démarrer le réseau :

service lxc-net start
Cette commande n'est à faire qu'une seule fois. Par la suite le réseau lxcbr0 démarrera tout seul à chaque démarrage de Debian.

Source : https://wiki.debian.org/LXC