Aller au contenu
Conteneurs & Orchestration medium

Réseau Incus : bridge, NAT et exposition de services

6 min de lecture

logo incus

Par défaut, Incus connecte les instances à un bridge NAT nommé incusbr0 : elles obtiennent une IP privée et sortent vers Internet à travers l'hôte. Ce guide montre comment inspecter ce réseau, en créer d'autres, exposer un service avec un device proxy, et surtout comment régler le conflit classique avec Docker qui prive les conteneurs de réseau. Tout a été testé sur Incus 7.0. Pour qui veut maîtriser la connectivité de ses instances.

  • Comment fonctionne le réseau par défaut (incusbr0, NAT).
  • Inspecter et créer des réseaux.
  • Exposer un service avec un device proxy.
  • Régler le conflit réseau avec Docker (le piège n°1).

À l'initialisation, Incus crée un bridge managé incusbr0 en NAT. Les instances s'y branchent, reçoivent une IP privée par DHCP et accèdent à Internet via l'hôte.

Fenêtre de terminal
incus network list
+----------+----------+---------+-----------------+---------+---------+
| NAME | TYPE | MANAGED | IPV4 | USED BY | STATE |
+----------+----------+---------+-----------------+---------+---------+
| incusbr0 | bridge | YES | 10.173.191.1/24 | 4 | CREATED |
| eth0 | physical | NO | | 0 | |
+----------+----------+---------+-----------------+---------+---------+

Le détail (sous-réseau, NAT, DNS) s'obtient avec incus network show :

Fenêtre de terminal
incus network show incusbr0
# ipv4.address: 10.173.191.1/24
# ipv4.nat: "true"

On isole un groupe d'instances sur son propre réseau avec incus network create :

Fenêtre de terminal
incus network create labnet ipv4.address=10.20.20.1/24 ipv4.nat=true
# Network labnet created

On connecte ensuite une instance à ce réseau via un device nic (ou en modifiant son profil) :

Fenêtre de terminal
incus config device add c1 eth1 nic network=labnet

Une instance sur incusbr0 n'est pas joignable depuis l'extérieur de l'hôte. Pour publier un port, on ajoute un device proxy qui relie un port de l'hôte à un port de l'instance :

Fenêtre de terminal
incus config device add c1 web proxy \
listen=tcp:0.0.0.0:8888 connect=tcp:127.0.0.1:80
web:
connect: tcp:127.0.0.1:80
listen: tcp:0.0.0.0:8888
type: proxy

Le service de l'instance (ici sur le port 80) devient accessible sur le port 8888 de l'hôte. C'est la méthode la plus simple ; pour exposer une instance entière sur le réseau physique, on la place plutôt sur un bridge ponté (macvlan ou bridge de l'hôte).

C'est l'erreur qui fait perdre deux heures. Si Docker est installé sur le même hôte qu'Incus, ses conteneurs perdent le réseau.

Un pare-feu de l'hôte (firewalld, ufw) trop strict produit le même symptôme : il faut alors autoriser le DHCP et le DNS entre incusbr0 et l'hôte.

Sur un hôte utilisant systemd-resolved, la résolution des noms d'instances (.incus) peut échouer, car le serveur DNS d'Incus ne gère ni DNSSEC ni DNS-over-TLS. On l'indique explicitement à resolved :

Fenêtre de terminal
resolvectl dns incusbr0 10.173.191.1
resolvectl domain incusbr0 '~incus'
resolvectl dnssec incusbr0 off

Pour des réseaux distribués sur un cluster multi-nœuds (réseaux virtuels qui suivent les instances d'un nœud à l'autre, isolation par projet), Incus s'appuie sur OVN. C'est un sujet avancé, réservé aux déploiements en cluster : le bridge incusbr0 couvre l'immense majorité des besoins sur un hôte unique.

  • Par défaut, les instances sont sur le bridge NAT incusbr0 (IP privée + sortie Internet via l'hôte).
  • incus network list/show inspecte, incus network create crée un réseau isolé.
  • Un device proxy (listen/connect) publie un port d'instance sur l'hôte.
  • Piège n°1 : Docker force iptables FORWARD DROP et coupe le réseau d'Incus, réglez-le via DOCKER-USER.
  • Avec systemd-resolved, déclarez le DNS d'incusbr0 (et rendez-le persistant).

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn