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
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Adresse publique | une adresse utilisée sur internet | |
| Passerelle | le routeur entre un réseau interne et internet, comme ta box | |
| NAT | la traduction d’adresses : remplacer les adresses dans un paquet | |
| Port source | le numéro qui dit à quelle connexion appartient un paquet | 50001 |
| Table NAT | la liste de la passerelle : quelle connexion va à quel appareil | |
| Redirection de port | une 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
netlab statusAffiché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
sudo ip netns exec srv ip routeAffiché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
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
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
| Appareil | Part du téléphone avec | Sort de la box avec |
|---|---|---|
| Téléphone de Léa | 192.168.1.20 port 40000 | 198.51.100.5 port 40000 |
| Téléphone d’Hugo | 192.168.1.21 port 40000 | 198.51.100.5 port 40001 |
| Console | 192.168.1.30 port 52000 | 198.51.100.5 port 52000 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lis ce dont la passerelle se souvient
sudo ip netns exec gw conntrack -LAffiché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
sudo ip netns exec gw nft list rulesetAffiché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 ?