Aller au contenu

LXD : le réseau

LXD crée un pont réseau lxdbr0 : les instances y obtiennent une adresse privée et accèdent à Internet par NAT. Les exemples utilisent un conteneur nommé c1.

Fenêtre de terminal
lxc network list # réseaux connus (dont lxdbr0)
lxc network show lxdbr0 # configuration
lxc network info lxdbr0 # état et adresses
lxc network create lxdbr1 ipv4.address=10.20.0.1/24 ipv4.nat=true ipv6.address=none
lxc network set lxdbr1 dns.domain lxd.local
lxc network edit lxdbr1 # édition complète
lxc network delete lxdbr1 # supprime (aucune instance rattachée)
Fenêtre de terminal
lxc launch ubuntu:24.04 c1 --network lxdbr1 # à la création
lxc network attach lxdbr1 c1 eth0 # ajoute une carte réseau à une instance existante
lxc network detach lxdbr1 c1 eth0
Fenêtre de terminal
lxc config device override c1 eth0 ipv4.address=10.20.0.50
lxc restart c1

L’adresse doit appartenir à la plage du réseau (lxc network show).

Le périphérique proxy redirige un port de l’hôte vers un port de l’instance :

Fenêtre de terminal
lxc config device add c1 http proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80
lxc config device remove c1 http # supprimer la redirection

Le pont lxdbr0 fournit un DNS interne : une instance se joint par c1.lxd depuis une autre instance. Pour l’utiliser aussi depuis l’hôte avec systemd-resolved (Ubuntu) :

Fenêtre de terminal
resolvectl dns lxdbr0 $(lxc network get lxdbr0 ipv4.address | cut -d/ -f1)
resolvectl domain lxdbr0 '~lxd'

Ces réglages ne survivent pas à un redémarrage : à rendre persistants avec un service systemd ou un script de démarrage.

Avec UFW actif, autoriser le trafic du pont, sans quoi les instances perdent l’accès réseau :

Fenêtre de terminal
sudo ufw allow in on lxdbr0
sudo ufw route allow in on lxdbr0
sudo ufw route allow out on lxdbr0

Si Docker est installé sur la même machine, il modifie aussi les règles du pare-feu : voir Installer LXD sur Ubuntu.

Symptôme Piste
Pas d’adresse IP dans lxc list lxc network list : le pont lxdbr0 doit exister et être géré (YES)
Instance sans accès à Internet Règles UFW ou Docker (voir ci-dessus), lxc network get lxdbr0 ipv4.nat doit valoir true
Le nom c1.lxd ne se résout pas depuis l’hôte Configurer systemd-resolved (section précédente)
Conflit de plage d’adresses Choisir une autre plage : lxc network set lxdbr0 ipv4.address 10.30.0.1/24