# 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.