Petite astuce du jour dont je me suis souvent servie par le passé pour des maquettes (avant de succomber à gns3 qui m’a fait réviser mes commandes Cisco), comment transformer un serveur en routeur NAT pour que les clients d’un réseau local accèdent à Internet.


Transformer son Debian en passerelle d’accès à Internet

Avant de démarrer, on va faire une petite mise au point au niveau des 2 notions de cet article : le routage et le NAT

Dans une infrastructure, le routeur est là pour diriger les paquets d’un réseau à un autre. C’est l’équipement de l’infra qui doit avoir une “patte“, une interface, sur au minimum 2 réseaux différents et qui va faire en sorte que ces deux là communiquent, c’est pour cela que pour cette manipulation, il vous faudra une machine avec 2 cartes réseaux.

Concernant le NAT, le “Network Address Translating” c’est un service qui vient s’ajouter aux routeurs et qui est là pour faire de la traduction d’adresse réseau. Un routeur NAT sera situé entre le réseau Internet (WAN) et un réseau local (LAN). Le rôle du NAT sera de traduire, de “translater“, les adresses IP internes, c’est à dire les adresses IP du réseau local, en adresses IP routables sur internet qu’on appelle des IP publiques. En résumé, grâce au NAT, vos adresses locales seront substituées par votre adresse IP publique à chaque fois que vous allez émettre une requête à destination d’Internet.

 

Votre box internet est un parfait exemple de routeur NAT ! Nous allons ici voir comment utiliser un serveur sous Debian comme routeur NAT au lieu d’investir dans un équipement dédié. Personnellement, je n’utilise des serveurs en tant que routeurs que pour des plateformes de tests. C’est parti !

Les manipulations sous Debian sont très simples et rapides.

 

Le serveur utilisé en tant que routeur doit avoir 2 cartes réseaux, chacune activée et paramétrée dans un réseau différent.

 

 

La 1ère carte réseau est définie sur DHCP pour simuler l’attribution automatique d’une configuration IP via Internet.

Une fois les cartes configurées, on commence par activer le routage sur le serveur. On dit techniquement qu’on active “l’ip forwarding“. Pour cela éditez le fichier /etc/sysctl.conf :

nano /etc/sysctl.conf

Cherchez la ligne ” #net.ipv4.ip_forward = 1 ” et décommentez la (supprimez le # devant celle-ci).

Après avoir modifié ce fichier, il faut réactiver la configuration pour prendre en compte les changements avec la commande :

sysctl -p /etc/sysctl.conf

Le routage est maintenant activé sur le serveur.

On passe au NAT nécessaire pour faire sortir les paquets sur l’extérieur. C’est le firewall interne à Linux qui gère cette partie. Il faut donc définir une règle dans le pare-feu qui va masquer la provenance des paquets, c’est à dire remplacer l’IP source par l’adresse IP dite “publique”. Voici la commande :

iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

La partie “ens33” doit être l’interface réseau du serveur par laquelle les paquets vont sortir sur internet.

/!\ Attention ! Cette règle sera supprimée au prochain redémarrage de la machine. Pour la rendre persistante, il faut commencer par enregistrer les règles iptables dans un fichier avec la commande suivante :

iptables-save > /etc/iptables-rules.save

Et ensuite, il faut restaurer ces règles au démarrage, plus précisément juste après l’activation (le “up”) des cartes réseau. Pour cela, il faut ajouter la ligne suivante à la suite dans le fichier /etc/network/interfaces :

post-up iptables-restore < /etc/iptables-rules.save

Et c’est tout ! Oui vraiment ! Le routeur NAT est prêt !

Pour le vérifier, on utilise un client sur le réseau local. On défini sur ce client que l’adresse de sa passerelle est l’adresse IP de l’interface “LAN” du serveur.

 

On lance un ping à destination d’une adresse sur Internet comme par exemple le DNS de google : 8.8.8.8.

Le ping fonctionne, les clients du réseau local peuvent désormais accéder à internet grâce au serveur transformer en routeur NAT !

[Tips] Configurer un routeur NAT sous Debian

Articles pouvant vous intéresser