Outils pour utilisateurs

Outils du site


reseau:linuxcontainerreseaun

Gestion basique du réseau

Un préalable : installer un switch virtuel (bridge) sur la machine hôte

Principe de mise en réseau d'un container LXC

Pour mettre en réseau un container, il faut paramétrer :

  • le container (à partir de son fichier de configuration : /var/lib/nom_container/config
  • la machine hôte (à partir de son fichier : /etc/network/interfaces
AVERTISSEMENT

Ici, nous avons vu une configuration très simple qui s'appuie le serveur DHCP de la machine hôte LXC (une machine virtuelle VirtualBox/Debian dans notre exemple).

Nous allons approfondir en voyant des cas typiques de connexion réseaux… Cela demande au lecteur de s'approprier a minima les connaissances réseau de base…

Et aussi d'avoir quelques connaissances au niveau des techniques de Translation d'adresses (NAT) et de ports (PAT) et des techniques de filtrage de paquets avec iptables

On ne rappellera donc pas ici le rôle du fichier de configuration Linux /etc/network/interfaces. Le lecteur pourra utilement lire ceci.

Configuration réseau du container

Analyse lapidaire du fichier de configuration d'un container

root@netLXC2017:/home/btssio# cat  /var/lib/lxc/deb-clone1/config
lxc.mount = /var/lib/lxc/deb-clone1/fstab
lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry = sysfs sys sysfs ro 0 0
lxc.tty = 4
lxc.pts = 1024
lxc.arch = x86_64
lxc.seccomp = /usr/share/lxc/config/common.seccomp
lxc.kmsg = 0
lxc.autodev = 1
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm

...

lxc.cgroup.devices.allow = c 10:232 rwm
lxc.utsname = deb-clone1
lxc.network.type = empty
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.veth.pair = veth0-deb-temp
lxc.network.hwaddr = 00:16:3e:9c:29:a5
lxc.cap.drop = sys_module
lxc.cap.drop = mac_admin
lxc.cap.drop = mac_override
lxc.cap.drop = sys_time
lxc.rootfs = /var/lib/lxc/deb-clone1/rootfs
lxc.pivotdir = lxc_putold

# lxc.start.auto = 0 | 1 Lancement auto (1) du container au boot de l'hote
lxc.start.auto = 1
# plus le lxc.start.order est eleve, plus le container sera prioritaire
# sur les autres containers au demarrage...
lxc.start.order = 2
# delai de demarrage en secondes entre 2 groupes de containers 
# de priorite differente
#lxc.start.delay = 600
# groupe de containers
# lxc.group = 10 ; le container appartient au groupe 10
# lxc.group = 10
root@netLXC2017:/home/btssio# 

Certaines lignes du fichier /var/lib/lxc/deb-clone1/config concerne le container lui-même :

lxc.utsname = deb-clone1 # indique le nom du container
lxc.tty = 4 # nombre de consoles virtuelles
lxc.pts = 1024 # nombre de "pseudo-terminaux"
lxc.rootfs = /var/lib/lxc/deb-clone1/rootfs # chemin du système de fichiers "racine"

# les points de montage fournis au container pour que le système ait accès aux bibliothèques du système hôte.
lxc.mount = /var/lib/lxc/deb-clone1/fstab
lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry = sysfs sys sysfs ro 0 0

D'autres lignes de /var/lib/lxc/deb-clone1/config concerne le paramètrage du réseau du container :

# spécifie que nous créons une interface virtuelle rattachée à un bridge
lxc.net.0.type = veth
# activer l'interface au démarrage du container
lxc.net.0.flags = up
# spécifie le bridge auquel est rattachée l'interface virtuelle du container; la création du bridge sur la machine hôte est de la responsabilité de l'administrateur.
lxc.net.0.link = br0
# spécifie le nom de l'interface virtuelle vue depuis le container
lxc.net.0.veth.pair = veth0-deb-temp
# spécifie l'adresse MAC attribuée à l'interface virtuelle du container
lxc.net.0.hwaddr = 00:16:3e:9c:29:a5
Ici, nous voyons que le container deb-clone1 est attaché au bridge virtuel br0 de la machine hôte via l'interface du container veth0-deb-temp

~~DISCUSSION~~

reseau/linuxcontainerreseaun.txt · Dernière modification: 2020/06/08 12:13 (modification externe)