# KB-LNX : Transformer une VM Linux en routeur NAT
Pour activer le routage sous Debian 12, assurez-vous de disposer de deux cartes réseaux connectées sur deux plans IP différents et autoriser le transfert de paquets entre interfaces au niveau du kernel (noyau).
## Activer l'IP Forwarding de façon permanente
Activez ip forwarding, pour cela éditer le fichier `/etc/sysctl.conf` :
```bash
sudo nano /etc/sysctl.conf
```
Décommentez la ligne `#net.ipv4.ip_forward = 1` en supprimant le symbole `#`, comme dans l'illustration ci-dessous :
![[_img-kb-lnx-routeur-nat-2.png]]
Réactivez la configuration pour prendre en compte les changements avec la commande :
```bash
sudo sysctl -p /etc/sysctl.conf
```
Le résultat attendu est `net.ipv4.ip_forward=1` comme dans l'illustration ci-dessous :
![[_img-kb-lnx-routeur-nat-3.png]]
## Vérifier l’activation de l’IP Forwarding
Pour vérifier que la configuration a persisté, redémarrez la VM puis exécutez :
```bash
cat /proc/sys/net/ipv4/ip_forward
```
Le résultat attendu est `1` comme dans l'illustration ci-dessous :
![[_img-kb-lnx-routeur-nat-1.png]]
> [!done] Félicitations ! <span style="font-weight: normal; color: var(--text-normal)"> Le routage est maintenant activé sur votre machine Debian.</span>
## Activer le mode NAT
La configuration du mode **NAT** (Network Address Translation) sous Debian 12 repose sur l’utilisation du pare-feu intégré au noyau Linux.
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Le pare-feu du noyau Linux se nomme **Netfilter**. L’outil **iptables** est une interface en ligne de commande permettant de configurer Netfilter.</span>
### Installer iptables
Commencez par installer l’utilitaire **iptables** avec la commande suivante :
```bash
sudo apt install iptables
```
Ensuite, appliquez la règle de traduction d’adresses NAT. Remplacez le nom de l’interface par celle correspondant à votre configuration réseau.
Dans l’exemple ci-dessous, l’interface **ens192** est utilisée :
```bash
sudo iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
```
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> De manière générale, l’interface à utiliser correspond à la carte réseau connectée au WAN (Internet), c’est-à-dire la sortie du routeur vers l’extérieur.</span>
### Vérifier que les règles NAT sont opérationnelles
La règle `MASQUERADE` doit apparaître sur l’interface WAN (`-o ens192` par exemple) et les compteurs (`pkts/bytes`) doivent s’incrémenter lors d’un ping depuis le LAN vers WAN (`ping 1.1.1.1` depuis une autre machine du LAN par exemple).
Pour afficher les règles de la chaîne `POSTROUTING` (appliquée après le routage) exécutez la commande :
```bash
sudo iptables -t nat -L -n -v
```
La sortie devrait afficher à minima le résultat suivant :
![[_img-kb-lnx-routeur-nat-4.png]]
## Rendre la configuration NAT persistante
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Cette configuration iptables n’est pas encore persistante et ne résiste pas à un redémarrage.</span>
### Sauvegarder les règles iptables
Nous allons sauvegarder la configuration courante dans un fichier, puis faire en sorte qu’elle soit automatiquement restaurée à chaque démarrage de l’OS.
Passez en mode **root** :
```bash
sudo -s
```
Enregistrez les règles actuellement actives dans un fichier :
```bash
iptables-save > /etc/iptables.rules
```
Quittez la session root :
```bash
exit
```
(Optionnel) Vérifiez le contenu du fichier :
```
sudo cat /etc/iptables.rules
```
Cette commande devrait afficher une sortie du type :
![[_img-kb-lnx-routeur-nat.png]]
### Restaurer la configuration au démarrage
Pour recharger automatiquement les règles iptables à chaque redémarrage du système, ouvrez le fichier de configuration des interfaces réseau :
```bash
sudo nano /etc/network/interfaces
```
Dans la section correspondant à l’interface **loopback**, ajoutez la ligne suivante :
```bash
pre-up iptables-restore < /etc/iptables.rules
```
Cette configuration permet la restauration des paramètres iptables avant activer l'interface `lo` du système. Par exemple l'interface lo devrait ressembler à cela :
```bash
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.rules
```
Enregistrez les modifications et quittez l’éditeur.