LXC : le réseau
LXC : le réseau jppLXC le réseau.
La partie réseau est gérée par « lxc-net » qui est un démon que se lance au démarrage du système.
Sa configuration n’est pas complexe mais, pour être fonctionnelle rapidement, nécessite la création d’une interface « pont » dédiée et donc la présence des "br-utils".
Ici et pour ne pas modifier une configuration réseau « qui marche » déjà avec deux ponts j’ai préféré rajouter une carte réseau dédiée dans ma machine de développement. Le seul problème que j’ai rencontré est le fait que l’interface supplémentaire s’est « intercalée » entre les deux interfaces existantes et qu’il a fallu que je modifie la config d'un des deux ponts déjà existants … "ensp3s0" est devenu "ensp4s0" dans ma config.
J’ai ajouté dans /etc/network/interfaces :
allow-hotplug enp3s0 iface br2 inet static address 192.168.3.1 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.3.255 bridge_ports enp3s0 bridge_maxwait 1
Contenu du fichier de config de « lxc-net « dans / etc / default / lxc-net :
USE_LXC_BRIDGE="true"
LXC_BRIDGE="br2"
LXC_ADDR="192.168.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="192.168.3.0/24"
LXC_DHCP_RANGE="192.168.3.0,192.168.3.255"
LXC_DHCP_MAX="254"
LXC_DHCP_CONF_FILE=""
LXC_DOMAIN=""
En ce qui concerne le fichier de config de mon instance « debian-a » déjà créée par « lxc-create -n debian-a -t debian » j’ai ajouté à la fin du fichier /var/lib/lxc/debian-a/config :
# pour le réseau eth0
lxc.net.0.type = veth
# lxc.net.0.veth.mode = bridge
lxc.net.0.link = br2
lxc.net.0.name = eth0
lxc.net.0.ipv4.address = 192.168.3.11/24
lxc.net.0.ipv4.gateway = 192.168.3.1
lxc.net.0.flags = up
Comme lxc-net utilise dnsmasq il est nécessaire de désactiver un autre serveur DNS, ici j’ai du désactiver bind9.
D’autre part lxc-net utilise dnsmasq mais il lui transfère un paramètre indésirable (-U dnsmasq) qui déclenche chez moi une erreur de dnsmasq, il m’ a donc fallu :
renommer « dnsmasq » en « dnsmasq_real », faire un script « dnsmasq » qui contient :
#!/bin/bash
#
# Faux dnsmasq pour analyser et filtrer les paramètres reçus
#
# ------------------------------------------------------------------------------
shift
shift
/usr/sbin/dnsmasq_real $*
Afin d’éliminer les deux paramètres superflus. Une fois cette « manip » réalisée dnsmasq est bien présent comme le montre un "ps" après un reboot et l’adresse de mon pont « br2 » est bien celle attendue.
On va pouvoir passer à la suite.