# Guide de Correction du Réseau Incus **Problème**: Les conteneurs ne peuvent pas accéder à Internet malgré NAT activé **Cause**: IP forwarding désactivé ou routes mal configurées **Solution**: Scripts de diagnostic et correction automatique ## Problème Identifié Les conteneurs Incus ne peuvent pas accéder à Internet : ``` ping: connect: Network is unreachable ``` **Causes possibles**: 1. IP forwarding désactivé sur l'hôte (requis pour NAT) 2. Routes par défaut manquantes dans les conteneurs 3. Configuration réseau Incus incomplète 4. Bridge réseau non configuré correctement ## Solutions ### Solution Rapide (Recommandée) ```bash # Corriger immédiatement tous les conteneurs ./config/incus/fix-network-now.sh ``` Ce script : - ✅ Active IP forwarding sur l'hôte - ✅ Vérifie et active NAT dans le réseau Incus - ✅ Corrige la configuration réseau dans tous les conteneurs - ✅ Teste la connectivité ### Solution Étape par Étape #### 1. Diagnostiquer le problème ```bash # Diagnostiquer un conteneur spécifique ./config/incus/diagnose-network.sh veza-infra # Ou tous les conteneurs ./config/incus/diagnose-network.sh ``` #### 2. Activer IP Forwarding (CRITIQUE) ```bash # Vérifier l'état cat /proc/sys/net/ipv4/ip_forward # Activer (temporaire) echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward # Rendre permanent echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ``` #### 3. Vérifier la configuration réseau Incus ```bash # Vérifier que NAT est activé incus network show veza-network | grep ipv4.nat # Si non activé, activer incus network set veza-network ipv4.nat=true ``` #### 4. Corriger un conteneur spécifique ```bash # Corriger veza-infra ./config/incus/fix-network.sh veza-infra # Corriger tous les conteneurs ./config/incus/fix-all-containers-network.sh ``` ## Scripts Disponibles ### 1. `fix-network-now.sh` ⚡ (RECOMMANDÉ) **Usage**: `./fix-network-now.sh` Corrige immédiatement tous les problèmes réseau : - Active IP forwarding - Configure NAT - Corrige tous les conteneurs - Teste la connectivité ### 2. `fix-network.sh` **Usage**: `./fix-network.sh [container-name]` Corrige le réseau pour un conteneur spécifique ou tous les conteneurs. ### 3. `diagnose-network.sh` **Usage**: `./diagnose-network.sh [container-name]` Diagnostique les problèmes réseau sans les corriger. ### 4. `fix-all-containers-network.sh` **Usage**: `./fix-all-containers-network.sh` Corrige le réseau dans tous les conteneurs Veza. ## Vérification Post-Correction ```bash # Tester depuis un conteneur incus exec veza-infra -- ping -c 2 8.8.8.8 incus exec veza-infra -- ping -c 2 google.com # Vérifier les routes incus exec veza-infra -- ip route show # Vérifier l'IP incus exec veza-infra -- ip addr show eth0 ``` ## Prévention Le script `deploy-service-native.sh` a été amélioré pour : - ✅ Vérifier IP forwarding avant déploiement - ✅ Configurer correctement les routes (locale + default) - ✅ Vérifier la connectivité avant de continuer - ✅ Échouer si le réseau ne fonctionne pas ## Commandes de Diagnostic Manuelles ### Sur l'hôte ```bash # Vérifier IP forwarding cat /proc/sys/net/ipv4/ip_forward # Vérifier les règles NAT sudo iptables -t nat -L -n -v # Vérifier le bridge ip addr show | grep -A 5 incus ip link show | grep incus ``` ### Dans un conteneur ```bash # Vérifier l'IP ip addr show eth0 # Vérifier les routes ip route show # Tester la connectivité ping -c 2 10.10.10.1 # Gateway ping -c 2 8.8.8.8 # Internet ping -c 2 google.com # DNS ``` ## Problèmes Courants ### 1. "Network is unreachable" **Cause**: Route par défaut manquante **Solution**: ```bash incus exec veza-infra -- ip route add default via 10.10.10.1 dev eth0 ``` ### 2. "Temporary failure in name resolution" **Cause**: DNS non configuré **Solution**: ```bash incus exec veza-infra -- bash -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf" ``` ### 3. NAT ne fonctionne pas **Cause**: IP forwarding désactivé **Solution**: ```bash echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward ``` ## Notes Techniques - Le NAT Incus nécessite IP forwarding activé sur l'hôte - Les conteneurs doivent avoir une route par défaut vers 10.10.10.1 - La route locale (10.10.10.0/24) est aussi nécessaire pour la communication inter-conteneurs - Le DNS doit être configuré à la fois dans Incus et dans les conteneurs