veza/config/incus/NETWORK_FIX_GUIDE.md

187 lines
4.4 KiB
Markdown
Raw Normal View History

# 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