
Ce guide de dépannage réseau KVM/libvirt couvre les problèmes les plus fréquents : VM sans IP, NAT cassé, bridge non fonctionnel, DNS KO, conflits Docker, firewall guest bloquant. Chaque section propose un diagnostic précis et une solution testée.
Ce que vous trouverez :
- Diagnostic Host vs Guest — identifier où ça coince (50% des pannes sont côté VM)
- Recettes par topologie — NAT, Bridge, DNS en onglets séparés
- Services modularisés — virtnetworkd vs libvirtd sur distros récentes
- Firewall backend — nftables/iptables selon votre distribution
- Pièges classiques —
virsh domifaddrvide,virbr0 in use, conflits Docker
Utilisez l’arbre de décision pour aller directement à votre problème, ou parcourez les onglets NAT/Bridge/DNS.
Où est la panne : hôte ou VM ?
Section intitulée « Où est la panne : hôte ou VM ? »Avant de plonger dans le dépannage, identifiez où ça coince. 50% des pannes sont côté VM (guest), pas côté hôte.
| Vérification | Côté | Commande |
|---|---|---|
| Réseau libvirt actif | Hôte | virsh net-list --all |
| Bridge existe | Hôte | ip link show virbr0 ou br0 |
| Services libvirt | Hôte | systemctl status virtnetworkd |
| Interface up | VM | ip -br link |
| IP attribuée | VM | ip -br addr |
| Route par défaut | VM | ip route |
| DNS fonctionnel | VM | resolvectl status ou cat /etc/resolv.conf |
Arbre de décision
Section intitulée « Arbre de décision »0) Confirmer la topologie (sinon vous dépannez le mauvais réseau)
Section intitulée « 0) Confirmer la topologie (sinon vous dépannez le mauvais réseau) »Avant tout diagnostic, vérifiez sur quelle topologie vous êtes réellement :
# Quelle interface la VM utilise ?virsh domiflist ma-vm
# Quels réseaux libvirt existent ?virsh net-list --all| Source affichée | Topologie | DHCP fourni par |
|---|---|---|
default / virbr0 | NAT | dnsmasq (libvirt) |
br0 | Bridge | DHCP du LAN |
| Autre nom | Réseau custom | Dépend de la config |
1) Pas d’IP dans la VM (ou 169.254.x.x)
Section intitulée « 1) Pas d’IP dans la VM (ou 169.254.x.x) »- Côté hôte : Le réseau fournit-il du DHCP ?
- NAT → Réseau default non démarré ou dnsmasq KO
- Bridge → Bridge mal configuré
- Côté VM : Le client DHCP tourne-t-il ?
- Cloud-Init / clone : machine-id, netplan
2) IP OK, pas de gateway
Section intitulée « 2) IP OK, pas de gateway »- Firewall guest bloque → Firewall côté VM
- Mauvais réseau / route → VM connectée au mauvais bridge
3) Gateway OK, pas Internet (ping 8.8.8.8 KO)
Section intitulée « 3) Gateway OK, pas Internet (ping 8.8.8.8 KO) »ip_forwarddésactivé → NAT vers Internet ne fonctionne pas- Règles NAT absentes → Firewall backend
- Conflit Docker → Conflit avec Docker
4) Internet OK, DNS KO
Section intitulée « 4) Internet OK, DNS KO »- dnsmasq ne répond pas → DNS ne fonctionne pas
- systemd-resolved interfère → DNS cassé par systemd-resolved
5) Bridge ne marche pas / VM pas joignable depuis LAN
Section intitulée « 5) Bridge ne marche pas / VM pas joignable depuis LAN »- Interface Wi-Fi ? → Bridge sur Wi-Fi
- STP / port-security / VLAN → VM bridge : pas d’IP du LAN
- MTU mismatch → Problème de MTU
6) Intermittent / après reboot / après Docker
Section intitulée « 6) Intermittent / après reboot / après Docker »- MTU qui change → Problème de MTU
- Docker écrase les règles → Conflit avec Docker
- Service libvirt down → Services libvirt
7) virsh domifaddr ne voit pas l’IP
Section intitulée « 7) virsh domifaddr ne voit pas l’IP »- Source incorrecte → Piège : virsh domifaddr
- Guest agent manquant → Installer qemu-guest-agent
Test en escalier (diagnostic universel)
Section intitulée « Test en escalier (diagnostic universel) »Exécutez ces commandes dans la VM pour identifier où ça coince :
# 1. Interface up et IP ?ip -br linkip -br addr
# 2. Ping gatewayping -c2 192.168.122.1 # NAT# ouping -c2 <gateway-lan> # Bridge
# 3. Ping Internetping -c2 8.8.8.8
# 4. DNSnslookup example.com| Résultat | Diagnostic | Section |
|---|---|---|
| (1) KO : pas d’IP | DHCP host ou guest | Pas d’IP |
| (1) OK, (2) KO | L2/L3 local, firewall guest | Firewall guest |
| (2) OK, (3) KO | NAT/forwarding | ip_forward + NAT |
| (3) OK, (4) KO | DNS | DNS |
Problèmes par topologie
Section intitulée « Problèmes par topologie »Réseau default non démarré
Section intitulée « Réseau default non démarré »Symptôme : virsh net-list --all montre “default” en état “inactive”.
# Démarrer et activer au bootvirsh net-start defaultvirsh net-autostart defaultSi ça échoue avec “Network is already in use by interface virbr0”, voir virbr0 already in use.
dnsmasq ne tourne pas
Section intitulée « dnsmasq ne tourne pas »libvirt lance un processus dnsmasq pour fournir DHCP et DNS aux VMs. S’il est absent, pas de DHCP.
# Vérifier le processusps aux | grep dnsmasq | grep virbr0Si absent :
# Redémarrer le réseau (relance dnsmasq)virsh net-destroy defaultvirsh net-start defaultVérifier les leases DHCP
Section intitulée « Vérifier les leases DHCP »Avant de supposer que le DHCP ne marche pas, vérifiez les baux existants :
# Voir les IPs attribuées par libvirtvirsh net-dhcp-leases default
# Ou directement le fichiercat /var/lib/libvirt/dnsmasq/default.leasesSi la VM a un bail mais virsh domifaddr ne montre rien, c’est un problème de source (voir piège ci-dessous).
Piège : virsh domifaddr ne voit pas l’IP
Section intitulée « Piège : virsh domifaddr ne voit pas l’IP »virsh domifaddr peut renvoyer “rien” alors que la VM a une IP. Par défaut, il utilise la source “lease” qui peut être vide si le bail a expiré ou si la VM a une IP statique.
Testez les différentes sources :
virsh domifaddr ma-vm --source lease # depuis les baux DHCPvirsh domifaddr ma-vm --source arp # depuis la table ARPvirsh domifaddr ma-vm --source agent # via qemu-guest-agentPour fiabiliser --source agent, installez qemu-guest-agent dans la VM :
# Debian/Ubuntusudo apt install qemu-guest-agentsudo systemctl enable --now qemu-guest-agent
# RHEL/Rocky/Almasudo dnf install qemu-guest-agentsudo systemctl enable --now qemu-guest-agentNAT vers Internet ne fonctionne pas
Section intitulée « NAT vers Internet ne fonctionne pas »Symptôme : La VM a une IP (192.168.122.x), peut ping la gateway (192.168.122.1), mais pas 8.8.8.8.
-
Vérifier ip_forward
Fenêtre de terminal cat /proc/sys/net/ipv4/ip_forward# Doit être 1Si 0 :
Fenêtre de terminal # Activer de façon permanenteecho "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-ip-forward.confsudo sysctl -p /etc/sysctl.d/99-ip-forward.conf -
Vérifier les règles NAT (voir section Firewall backend)
-
Redémarrer le réseau libvirt pour régénérer les règles :
Fenêtre de terminal virsh net-destroy defaultvirsh net-start default
DHCP client absent ou cassé dans la VM
Section intitulée « DHCP client absent ou cassé dans la VM »Symptôme : Côté hôte tout est OK (dnsmasq tourne, leases disponibles), mais la VM n’a pas d’IP.
C’est très fréquent avec les cloud images minimalistes ou après modification de la config réseau.
Diagnostic dans la VM :
# Interface up ?ip -br link# Si DOWN : sudo ip link set eth0 up
# Client DHCP actif ?# Debian/Ubuntu (systemd-networkd)systemctl status systemd-networkd
# Debian/Ubuntu (NetworkManager)nmcli dev status
# RHEL/Rocky/Almanmcli connection showSolutions selon le gestionnaire réseau :
# Vérifier la configcat /etc/systemd/network/*.network
# Exemple de config DHCPcat << 'EOF' | sudo tee /etc/systemd/network/20-dhcp.network[Match]Name=en* eth*
[Network]DHCP=yesEOF
# Redémarrersudo systemctl restart systemd-networkd# Voir les connexionsnmcli connection show
# Activer DHCP sur eth0sudo nmcli connection modify "Wired connection 1" ipv4.method autosudo nmcli connection up "Wired connection 1"# Vérifier la configcat /etc/netplan/*.yaml
# Exemple de config DHCPcat << 'EOF' | sudo tee /etc/netplan/01-dhcp.yamlnetwork: version: 2 ethernets: eth0: dhcp4: trueEOF
# Appliquersudo netplan applyProblème après clonage (Cloud-Init)
Section intitulée « Problème après clonage (Cloud-Init) »Symptôme : Après clonage d’une VM, le réseau ne fonctionne plus ou est aléatoire.
Causes :
- machine-id dupliqué : Le DHCP attribue la même IP à toutes les clones
- Cloud-Init ne rejoue pas : La config réseau n’est pas régénérée
- Netplan avec config statique : L’ancienne IP/MAC est hardcodée
Solutions :
# 1. Régénérer le machine-idsudo rm /etc/machine-idsudo systemd-machine-id-setup
# 2. Forcer Cloud-Init à rejouersudo cloud-init cleansudo cloud-init init
# 3. Si netplan : vérifier qu'il n'y a pas de MAC/IP hardcodéecat /etc/netplan/*.yamlBridge mal configuré
Section intitulée « Bridge mal configuré »Symptôme : La VM en mode bridge n’obtient pas d’IP du LAN.
-
Vérifier que le bridge existe
Fenêtre de terminal ip link show br0Si “Device not found”, le bridge n’est pas créé. Voir recette bridge ifupdown.
-
Vérifier que l’interface physique est dans le bridge
Fenêtre de terminal bridge link show# Doit montrer eno1 (ou votre interface) sous br0 -
Vérifier que l’IP est sur br0, pas sur l’interface physique
Fenêtre de terminal ip addr show eno1 # ne doit PAS avoir d'IPip addr show br0 # DOIT avoir l'IPSi l’IP est sur eno1, reconfigurer le bridge.
VM connectée au mauvais bridge
Section intitulée « VM connectée au mauvais bridge »virsh domiflist ma-vm# Vérifiez que "Source" indique br0 (pas virbr0)Pour modifier :
virsh edit ma-vm# Cherchez <interface type='bridge'> et corrigez <source bridge='br0'/>VM bridge : pas d’IP du LAN
Section intitulée « VM bridge : pas d’IP du LAN »Symptôme : Bridge OK côté hôte, mais la VM n’obtient pas d’IP du serveur DHCP du LAN.
Causes possibles :
-
Le DHCP du LAN ne répond pas : testez avec une autre machine sur le même segment
-
STP bloque le trafic : le switch met 30s à converger
Fenêtre de terminal # Désactiver STP sur le bridge (si pas de boucle)sudo ip link set br0 type bridge stp_state 0 -
MTU incompatible : voir Problème de MTU
Problème de MTU
Section intitulée « Problème de MTU »Symptôme : DHCP OK, ping gateway OK, mais trafic applicatif intermittent (gros paquets perdus).
# Comparer les MTUip link show br0ip link show eno1# Doivent être identiques (généralement 1500)Si vous êtes sur un réseau avec VLAN ou VPN, le MTU peut être réduit :
# Ajuster le MTU du bridgesudo ip link set br0 mtu 1450Bridge sur Wi-Fi
Section intitulée « Bridge sur Wi-Fi »Symptômes :
- DHCP ne passe pas (pas d’IP pour la VM)
- ARP bizarre, paquets perdus
- Ça marche 5 minutes puis plus rien
Alternatives au bridge sur Wi-Fi :
| Solution | Avantage | Inconvénient |
|---|---|---|
| NAT (default) | Fonctionne toujours | VM non joignable depuis LAN |
| Routed | VM joignable si routes configurées | Config manuelle |
| macvtap (vepa) | Parfois fonctionne | Dépend du driver Wi-Fi |
Configuration NAT (recommandé sur Wi-Fi) :
# Vérifier que la VM est sur le réseau NATvirsh domiflist ma-vm# Si elle est sur br0, la basculer sur default :virsh edit ma-vm# Modifier <source bridge='br0'/> en <source network='default'/>DNS ne fonctionne pas
Section intitulée « DNS ne fonctionne pas »Symptôme : La VM peut ping 8.8.8.8 mais pas résoudre de noms (ping google.com échoue).
-
Vérifier la config DNS dans la VM
Fenêtre de terminal # Systemd-resolved (Ubuntu, Fedora récent)resolvectl status# Ou classiquecat /etc/resolv.confEn NAT, le DNS doit pointer vers 192.168.122.1 (le dnsmasq de libvirt).
-
Tester le DNS de libvirt
Fenêtre de terminal # Depuis la VMnslookup google.com 192.168.122.1Si ça échoue, le dnsmasq de libvirt ne tourne pas. Côté hôte :
Fenêtre de terminal ps aux | grep dnsmasq | grep virbr0 -
Redémarrer le réseau pour relancer dnsmasq
Fenêtre de terminal virsh net-destroy defaultvirsh net-start default
DNS cassé par systemd-resolved
Section intitulée « DNS cassé par systemd-resolved »Sur les distributions modernes, systemd-resolved peut interférer. Si /etc/resolv.conf pointe vers 127.0.0.53 :
# Vérifier la config effectiveresolvectl statusSi le DNS upstream n’est pas correct, forcez-le :
# Dans la VMsudo resolvectl dns eth0 192.168.122.1Services libvirt : libvirtd vs virtnetworkd
Section intitulée « Services libvirt : libvirtd vs virtnetworkd »Sur les distributions récentes, libvirt est modularisé. La partie réseau est gérée par virtnetworkd, pas libvirtd.
# Vérifier quel daemon est actifsystemctl status libvirtd # daemon monolithique (ancien)systemctl status virtnetworkd # daemon réseau (nouveau)systemctl status virtqemud # daemon QEMU (nouveau)Logs des services
Section intitulée « Logs des services »# Daemon modularisé (préféré)journalctl -u virtnetworkd --since "10 minutes ago"
# Daemon monolithiquejournalctl -u libvirtd --since "10 minutes ago"
# Logs dnsmasq (si syslog)sudo grep dnsmasq /var/log/syslog | tail -20Firewall backend : nftables/iptables
Section intitulée « Firewall backend : nftables/iptables »libvirt gère automatiquement les règles firewall pour le NAT, mais selon le backend (iptables ou nftables), le comportement diffère.
Identifier le backend
Section intitulée « Identifier le backend »# Fedora/RHEL 9+ : nftables par défautsudo nft list ruleset | grep -i libvirt | head -5
# Debian/Ubuntu : souvent iptablessudo iptables -t nat -L -n | grep -i virbrVérifier les règles NAT
Section intitulée « Vérifier les règles NAT »Les règles essentielles pour le NAT :
| Règle | Rôle |
|---|---|
| MASQUERADE (POSTROUTING) | Traduit les IPs des VMs vers l’IP de l’hôte |
| ACCEPT (FORWARD) | Autorise le trafic des VMs vers l’extérieur |
| ACCEPT (INPUT) | Autorise DHCP (port 67) et DNS (port 53) vers dnsmasq |
# nftablessudo nft list chain ip nat POSTROUTING 2>/dev/null | grep -i masq
# iptablessudo iptables -t nat -S POSTROUTING | grep -i virbrsudo iptables -S FORWARD | grep -i virbrRègles absentes : régénérer
Section intitulée « Règles absentes : régénérer »# Redémarrer le réseau régénère les règlesvirsh net-destroy defaultvirsh net-start default
# Si ça ne suffit pas, redémarrer le daemon réseausudo systemctl restart virtnetworkdConflit avec Docker
Section intitulée « Conflit avec Docker »Docker et libvirt peuvent entrer en conflit : Docker modifie ip_forward, ajoute ses propres règles NAT, et peut interférer avec les bridges.
Diagnostic
Section intitulée « Diagnostic »# Voir tous les bridgesip -br link | grep -E 'docker0|virbr0|br0'
# Vérifier les règles NAT de Docker vs libvirtsudo nft list ruleset | grep -nE 'docker|libvirt' | head -20# ousudo iptables -t nat -L -n | grep -E 'DOCKER|virbr'Solutions
Section intitulée « Solutions »-
Docker désactive ip_forward au redémarrage : ajoutez explicitement dans sysctl :
Fenêtre de terminal echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-ip-forward.conf -
Collision de subnet : Docker utilise 172.17.0.0/16, libvirt 192.168.122.0/24. Normalement pas de conflit, mais vérifiez :
Fenêtre de terminal ip route | grep -E '172.17|192.168.122' -
Règles iptables écrasées : redémarrez le réseau libvirt après Docker :
Fenêtre de terminal sudo systemctl restart dockervirsh net-destroy default && virsh net-start default
Firewall côté VM (guest)
Section intitulée « Firewall côté VM (guest) »Symptôme : IP OK, ping gateway OK, mais rien d’autre ne passe.
C’est souvent le firewall de la VM qui bloque. Vérifiez dans la VM :
# iptablessudo iptables -S | head -20
# nftablessudo nft list ruleset 2>/dev/null | head -20
# UFW (Ubuntu)sudo ufw status
# firewalld (RHEL/Fedora)sudo firewall-cmd --list-allDésactiver temporairement pour tester
Section intitulée « Désactiver temporairement pour tester »# UFWsudo ufw disable
# firewalldsudo systemctl stop firewalld
# iptables (flush)sudo iptables -FErreurs courantes
Section intitulée « Erreurs courantes »virbr0 already in use
Section intitulée « virbr0 already in use »Symptôme :
error: Failed to start network defaulterror: internal error: Network is already in use by interface virbr0Causes :
- Le bridge virbr0 existe mais n’est pas géré par libvirt
- Collision avec un autre réseau libvirt
Diagnostic :
# Voir si virbr0 existeip link show virbr0
# Voir la définition du réseauvirsh net-dumpxml default | grep -E 'bridge|ip address'
# Vérifier les routesip route | grep 192.168.122Solution :
# Si virbr0 est orphelin, le supprimersudo ip link delete virbr0 2>/dev/null
# Puis redémarrervirsh net-start defaultLe réseau default n’existe pas
Section intitulée « Le réseau default n’existe pas »Symptôme : virsh net-list --all ne montre pas “default”.
# Vérifier si le fichier XML existels /etc/libvirt/qemu/networks/default.xmlls /usr/share/libvirt/networks/default.xml
# Recréer depuis le templatevirsh net-define /usr/share/libvirt/networks/default.xmlvirsh net-start defaultvirsh net-autostart defaultSi le fichier template n’existe pas, créez-le :
cat << 'EOF' | sudo tee /tmp/default-network.xml<network> <name>default</name> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip></network>EOF
virsh net-define /tmp/default-network.xmlvirsh net-start defaultvirsh net-autostart defaultRestaurer une configuration fonctionnelle
Section intitulée « Restaurer une configuration fonctionnelle »Reset complet du réseau NAT default
Section intitulée « Reset complet du réseau NAT default »# 1. Arrêter toutes les VMs utilisant ce réseaufor vm in $(virsh list --name); do if virsh domiflist $vm | grep -q default; then virsh shutdown $vm fidone
# 2. Supprimer le réseauvirsh net-destroy default 2>/dev/nullvirsh net-undefine default 2>/dev/null
# 3. Supprimer le bridge orphelinsudo ip link delete virbr0 2>/dev/null
# 4. Recréervirsh net-define /usr/share/libvirt/networks/default.xmlvirsh net-start defaultvirsh net-autostart defaultReset du bridge (NetworkManager)
Section intitulée « Reset du bridge (NetworkManager) »# 1. Supprimer le bridgesudo nmcli connection delete br0 2>/dev/nullsudo nmcli connection delete bridge-slave-eno1 2>/dev/null
# 2. Réactiver la connexion directesudo nmcli connection up "Wired connection 1"Commandes de diagnostic (récapitulatif)
Section intitulée « Commandes de diagnostic (récapitulatif) »État général
Section intitulée « État général »# Interfaces réseauip -br linkip -br addr
# Bridgesbridge link show
# Routesip route
# Réseaux libvirtvirsh net-list --allPour le NAT
Section intitulée « Pour le NAT »# ip_forwardcat /proc/sys/net/ipv4/ip_forward
# Règles NATsudo iptables -t nat -L -n -v 2>/dev/null | head -20sudo nft list chain ip nat POSTROUTING 2>/dev/null
# Processus dnsmasqps aux | grep dnsmasq
# Leases DHCPvirsh net-dhcp-leases defaultcat /var/lib/libvirt/dnsmasq/default.leasesPour le Bridge
Section intitulée « Pour le Bridge »# Membres du bridgebridge link show br0
# Adresses sur le bridgeip addr show br0
# STPcat /sys/class/net/br0/bridge/stp_stateÀ retenir
Section intitulée « À retenir »- Séparez Host vs Guest : la moitié des pannes sont côté VM (firewall, DHCP client, DNS)
- virsh domifaddr peut mentir : utilisez
--source lease/arp/agentouvirsh net-dhcp-leases - virtnetworkd remplace libvirtd pour le réseau sur les distros modernes
- Les règles firewall sont régénérées au redémarrage du réseau libvirt
- Docker peut interférer : vérifiez ip_forward et l’ordre des règles NAT
- “virbr0 in use” = bridge orphelin ou collision de réseau
- Le firewall du guest est souvent le coupable quand “tout est OK côté hôte”
- Testez toujours : ping gateway → ping 8.8.8.8 → nslookup
Prochaines étapes
Section intitulée « Prochaines étapes »Ressources
Section intitulée « Ressources »- Firewall and network filtering in libvirt — Documentation officielle NAT/firewall
- virtnetworkd manpage — Daemon réseau modulaire
- Libvirt Virtual Network NFTables — Backend nftables (Fedora)
- libvirt Networking — Wiki réseau NAT/Bridge
- QEMU guest agent — Documentation SUSE
FAQ - Questions fréquentes
Section intitulée « FAQ - Questions fréquentes »- Le réseau libvirt est démarré :
virsh net-list --all - Le processus dnsmasq tourne :
ps aux | grep dnsmasq | grep virbr0 - Les baux DHCP :
virsh net-dhcp-leases default
virsh net-destroy default && virsh net-start defaultvirsh domifaddr utilise par défaut la source lease (baux DHCP), qui peut être vide si le bail a expiré ou si la VM a une IP statique.Testez les différentes sources :virsh domifaddr ma-vm --source lease # baux DHCP
virsh domifaddr ma-vm --source arp # table ARP
virsh domifaddr ma-vm --source agent # qemu-guest-agent
Pour une détection fiable, installez qemu-guest-agent dans la VM.- Vérifiez ip_forward :
cat /proc/sys/net/ipv4/ip_forward(doit être 1) - Vérifiez les règles NAT :
sudo iptables -t nat -L -n | grep MASQ - Redémarrez le réseau pour régénérer les règles :
virsh net-destroy default && virsh net-start default
- Vérifiez
/etc/resolv.confdans la VM : en NAT, il doit pointer vers 192.168.122.1 - Testez le DNS libvirt :
nslookup google.com 192.168.122.1 - Si dnsmasq ne répond pas, redémarrez le réseau :
virsh net-destroy default && virsh net-start default
resolvectl status.ip link show virbr0
virsh net-dumpxml default
Solution :# Supprimer le bridge orphelin
sudo ip link delete virbr0
# Redémarrer le réseau
virsh net-start default
Avant de supprimer, vérifiez qu'aucune VM ne l'utilise.- Vérifiez que le bridge existe :
ip link show br0 - Vérifiez que l'interface physique est dans le bridge :
bridge link show - Vérifiez que l'IP est sur br0, pas sur l'interface physique
- Vérifiez que la VM est connectée au bon bridge :
virsh domiflist ma-vm
virsh net-list --all(réseau actif)ip link show virbr0oubr0(bridge existe)systemctl status virtnetworkd(service réseau)
ip -br link(interface up)ip -br addr(IP attribuée)ip route(route par défaut)ping 192.168.122.1(gateway)
ip -br link | grep -E 'docker0|virbr0'
sudo iptables -t nat -L -n | grep -E 'DOCKER|virbr'
Solutions :- Forcer ip_forward en permanence :
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-ip-forward.conf - Redémarrer le réseau libvirt après Docker :
sudo systemctl restart docker && virsh net-destroy default && virsh net-start default