Table des matières
1 Principe du masquerade et NAT avec iptables
2 Comment faire du NAT complet avec masquerade d’iptables
o 2.1 Créer les règles masquerade sur iptables
o 2.2 Sécuriser le NAT
3 Comment afficher la table NAT et les règles MASQUERADE
4 Comment consulter la table NAT (Conntrack)
5 Liens
Principe du masquerade et NAT avec iptables
NAT (Network Address Translation) est une méthode de routage des adresses IP.
On peut l’utiliser pour communiquer entre deux réseaux ou encore partager une connexion
internet (avec une adresse IP publique) depuis son réseau LAN.
Iptables permet de configurer cela à travers le masquerade.
Lorsque vous avez besoin de faire transiter tout le trafic d’une interface spécifique par votre
ordinateur sans rien changer à l’intérieur des paquets, vous pouvez utiliser masquerade.
MASQUERADE est une cible iptables qui peut être utilisée à la place de la cible SNAT
(NAT de source) lorsque l’adresse IP externe de l’interface inet n’est pas connue au moment
de l’écriture de la règle (lorsque le serveur obtient l’IP externe dynamiquement).
Pour cela, la table NAT masquerade d’Iptables NAT dissimule la traduction d’adresse.
Cela s’effectue dans la chaîne POSTROUTING de la table NAT.
Pour que cela soit possible, il faut :
Autoriser le forward des paquets entre les interfaces dans le noyau Linux et dans
iptables (si vous filtrez)
Configurer la règle masquerade dans la table POSTROUTING
Comment faire du NAT complet avec masquerade
d’iptables
Créer les règles masquerade sur iptables
Commençons par autoriser le routage des paquets entre les interfaces réseaux.
Pour cela, vous pouvez utilisez cette commande à positionner en début de script iptables.
echo 1 > /proc/sys/net/ipv4/ip_forward
Sinon il est possible de modifier la configuration du noyau Linux via sysctl :
echo net.ipv4.ip_forward = 1 > /etc/sysctl.d/[Link]
Une fois cela autorisé, vous pouvez créer la règle MASQUERADE.
Voici la syntaxe pour utiliser masquerade sur une interface.
L’option -o n’est pas obligatoire, simplement cela permet de filtrer et réduire la règle pour
cibler les bonnes interfaces réseaux.
iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADE
Par exemple :
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
POSTROUTING n’affecte que le trafic sortant (et seulement le premier paquet d’une
connexion). Si des réponses arrivent sur ens33, elles sont reconnues comme faisant partie de
la connexion SNAT et leur adresse de destination (et leur port) sont automatiquement traduits
à leurs valeurs originales (celles écrasées par la cible MASQUERADE).
Si besoin, il est possible de filtrer sur l’adresse ou les adresses IP source et sur l’interface
réseau sortante : comme ceci :
iptables -t nat -A POSTROUTING -s <source_ip> -o <interface> -j MASQUERADE
Par exemple pour filtrer le masquerade sur un masque de sous réseau :
iptables -t nat -A POSTROUTING -s [Link]/24 -o ens33 -j MASQUERADE
Comme expliqué en introduction, il est possible d’utiliser la cible SNAT si vous utilisez une
adresse IP fixe.
Dans ce cas là, MASQUERADE n’est pas nécessaire.
La syntaxe est alors la suivante pour utiliser l’adresse IP source [Link] :
iptables -t nat -A POSTROUTING -s [Link]/24 -j SNAT --to-source
[Link]
Sécuriser le NAT
Enfin pour affiner la configuration du masquerade et le rendre le plus sûr en filtrant via
netfilter :
iptables -A FORWARD -i <interface réseau interne> -o <interface réseau
externe> -j REJECT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! <interface réseau interne> -j
ACCEPT
iptables -P INPUT DROP
iptables -A FORWARD : pour filtrer au mieux les paquets qui transitent entre
l’interface entrante et sortante
iptables -P INPUT : on autorise les connexions existantes puis les nouvelles
connections venant de notre réseau interne
iptables -P INPUT DROP : On bloque tout le reste
Comment afficher la table NAT et les règles
MASQUERADE
Pour consulter la table NAT et les règles de la chaîne POSTROUTING, utilisez la commande
suivante :
sudo iptables -t nat -L
Le nombre de paquets et d’octets du trafic qui a traversé la règle est indiqué ici. Si ces chiffres
sont supérieurs à 0, cela signifie que le trafic réseau passe par notre interface avec succès.
Comment consulter la table NAT (Conntrack)
L’utilitaire conntrack fournit une interface complète en espace utilisateur pour le système de
suivi des connexions Netfilter, destinée à remplacer l’ancienne interface
/proc/net/ip_conntrack. Cet outil peut être utilisé pour rechercher, lister, inspecter et maintenir
le sous-système de suivi des connexions du noyau Linux.
Il faut installer le paquet pour votre distribution Linux avec APT ou DNF :
apt install conntrack # Debian / Ubuntu Mint
dnf install conntrack # Fedora
Puis utilisez l’option -L pour lister les connexions suivies :
conntrack -L
Vous pouvez filtrer sur un protocole (TCP, UDP, ICMP) ou un port source ou de destination :
conntrack -L -p tcp --dport 25