Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Plusieurs appareils, une seule adresse publique (NAT)

Après cette leçon: Je peux expliquer comment plusieurs appareils partagent une adresse.

Leçon de 50 min6 commandesLab de passerelle NAT : masquerade et redirection de port avec nftables dans le navigateur

Une soirée, une seule box

Ce soir, quatre amis sont chez toi. Chacun regarde des vidéos sur son téléphone, et ta sœur joue en ligne sur la console.

Pourtant, internet ne voit qu’une seule adresse pour toute la maison. Et chaque vidéo arrive sur le bon écran.

La box fait un échange sur chaque paquet. Cette leçon montre lequel.

À la fin de cette leçon

Remarque

Je peux expliquer comment plusieurs appareils partagent une adresse.

Mots clés

MotCe que ça veut direExemple
Adresse publiqueune adresse utilisée sur internet
Passerellele routeur entre un réseau interne et internet, comme ta box
NATla traduction d’adresses : remplacer les adresses dans un paquet
Port sourcele numéro qui dit à quelle connexion appartient un paquet50001
Table NATla liste de la passerelle : quelle connexion va à quel appareil
Redirection de portune règle qui envoie un port extérieur vers un appareil interne

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une adresse privée ne reçoit pas de réponse

À la maison, les appareils ont des adresses privées. Aucun routeur d’internet n’a de route vers elles.

Une demande partie de 192.168.1.20 peut donc atteindre un serveur. Mais la réponse ne sait pas où aller. Elle se perd.

Découvre les trois machines

Commande
netlab status

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lis la table du serveur extérieur

Commande
sudo ip netns exec srv ip route

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le serveur ne connaît qu’un réseau

L’état montre gw avec deux adresses : 10.0.0.1 à l’intérieur et 203.0.113.1 à l’extérieur. La machine interne lan est 10.0.0.2.

La table de srv a une seule ligne, 203.0.113.0/24. Rien vers 10.0.0.0/24 : comme sur le vrai internet, personne ne connaît le chemin vers une adresse privée.

Demande la page depuis l’intérieur

Commande
sudo ip netns exec lan curl --noproxy '*' -sS -m 3 http://203.0.113.2:8000/

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demande la même page depuis la passerelle

Commande
sudo ip netns exec gw curl --noproxy '*' -sS -m 3 http://203.0.113.2:8000/

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une demande a une réponse, l’autre non

Depuis lan, curl attend trois secondes puis affiche Connection timed out. Le serveur ne sait pas renvoyer la réponse à 10.0.0.2.

Depuis gw, le serveur répond tout de suite : outside-server: you are 203.0.113.1. Il a vu l’adresse publique de la passerelle.

La passerelle remplace la source

Avec le NAT, la passerelle modifie chaque paquet qui sort. Elle met sa propre adresse publique à la place de l’adresse privée.

Elle garde le port source s’il est libre. Si deux appareils utilisent le même, elle en choisit un autre. Elle note l’échange dans sa table NAT.

Quand la réponse revient, la passerelle cherche le port et remet la bonne adresse.

Exemple travaillé : deux téléphones, une adresse

AppareilPart du téléphone avecSort de la box avec
Téléphone de Léa192.168.1.20 port 40000198.51.100.5 port 40000
Téléphone d’Hugo192.168.1.21 port 40000198.51.100.5 port 40001
Console192.168.1.30 port 52000198.51.100.5 port 52000

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Lis ce dont la passerelle se souvient

Commande
sudo ip netns exec gw conntrack -L

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

La passerelle suit chaque connexion

Chaque ligne est une connexion vue par la passerelle. La demande de lan montre SYN_SENT et [UNREPLIED] : pas de réponse.

La demande de gw montre TIME_WAIT et [ASSURED] : elle a eu sa réponse, puis s’est fermée.

Chaque ligne dure environ deux minutes. C’est cette mémoire qui permet au NAT de rendre chaque réponse au bon appareil.

Une redirection laisse entrer une seule chose

Le NAT marche pour les connexions qui partent de l’intérieur. Une demande venue de dehors ne trouve aucune ligne dans la table : elle est jetée.

Pour héberger un serveur de jeu chez toi, tu ajoutes une redirection de port : par exemple, le port extérieur 25565 va vers un seul ordinateur.

Les règles du pare-feu de la passerelle disent ce qui a le droit d’entrer.

Lis les règles du pare-feu

Commande
sudo ip netns exec gw nft list ruleset

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup pensent que le NAT empêche les inconnus d’entrer. Le NAT ne fait que remplacer des adresses. Ce sont les règles du pare-feu qui décident. Ici, policy drop sur la chaîne forward bloque ce qui vient de dehors.

Pour aller plus loin : une table pleine

Un port est un nombre de 1 à 65535. Imagine une box qui ne prête que les ports de 50000 à 50009.

Combien de connexions peut-elle tenir en même temps ? Remplis une table avec ta fonction port_libre jusqu’à dépasser 50009. Que remarquerait une maison très connectée ?

À propos de ce labo et de sa source: Lab de passerelle NAT : masquerade et redirection de port avec nftables dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.