Trente PC, une seule adresse publique
Un cabinet d'avocats a trente PC et une seule adresse publique chez son fournisseur. Tous naviguent sur le web en même temps.
Les sites ne voient qu'une adresse. Pourtant chaque réponse retrouve le bon PC.
Le routeur au milieu tient un registre de qui a demandé quoi. Cette leçon ouvre ce registre.
À la fin de cette leçon
Remarque
Je peux expliquer comment un poste privé atteint Internet grâce au NAT.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Adresse privée | une adresse qui n'est jamais routée sur Internet | 10.0.0.2 |
| Passerelle | le routeur entre un réseau intérieur et l'extérieur | |
| NAT | la traduction d'adresses : réécrire les adresses d'un paquet | |
| Masquerade | un NAT qui emploie l'adresse extérieure de la passerelle | |
| Table de traduction | la mémoire de la passerelle : quelle connexion appartient à quel poste | |
| Redirection de port | une règle qui envoie les demandes extérieures d'un port vers un poste intérieur |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Les adresses privées ne reviennent pas
Trois blocs sont réservés à l'usage privé. Chaque maison et chaque bureau les réutilise. Aucun routeur d'Internet n'a de route vers eux.
Une requête venue d'une adresse privée atteint un serveur. La réponse ne retrouve pas son chemin.
Exemple : les blocs privés
| Bloc | Adresses | Souvent utilisé pour |
|---|---|---|
| 10.0.0.0/8 | 16 millions | Les grandes organisations |
| 172.16.0.0/12 | 1 million | Les réseaux moyens |
| 192.168.0.0/16 | 65 mille | Les maisons et petits bureaux |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Rencontrer 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.
Demander au serveur ce qu'il sait
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.
Tenter une requête sans réponse
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.
Interroger le même serveur 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.
Pourquoi une seule requête reste sans réponse
Le serveur extérieur a une seule route, celle de son propre câble. Il n'en a aucune pour 10.0.0.0/24 : une réponse à 10.0.0.2 ne sait pas où aller.
Le curl lancé depuis lan attend trois secondes et affiche Connection timed out. La requête est partie et rien n'est revenu.
Le curl lancé depuis gw reçoit tout de suite outside-server: you are 203.0.113.1. Cette adresse est sur le câble du serveur : la réponse trouve son chemin.
Le masquerade réécrit la source
À la sortie, la passerelle remplace l'adresse source privée par sa propre adresse extérieure. Elle garde le port source si aucune autre connexion ne l'utilise, et en choisit un libre s'il le faut, comme dans le tableau ci-dessous.
Elle note l'échange dans sa table de traduction. Quand la réponse revient, elle cherche le port et remet l'ancienne adresse.
Exemple : une requête et sa réponse
| Étape | Source | Destination |
|---|---|---|
| Quitte le portable | 10.0.0.2:41574 | 198.51.100.7:443 |
| Quitte la passerelle | 203.0.113.1:50001 | 198.51.100.7:443 |
| La réponse arrive à la passerelle | 198.51.100.7:443 | 203.0.113.1:50001 |
| La réponse arrive au portable | 198.51.100.7:443 | 10.0.0.2:41574 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lire la mémoire de la passerelle
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.
Ce que retient la passerelle
Chaque ligne est une connexion. Après les premières adresses viennent les mêmes, inversées : c'est la réponse que la passerelle attend.
La requête de lan montre SYN_SENT et [UNREPLIED] : elle est suivie, et aucune réponse n'est venue. Celle de gw montre TIME_WAIT et [ASSURED] : elle a reçu sa réponse et s'est fermée.
Une entrée dure environ deux minutes, puis la commande dit 0 flow entries. Ce suivi permet d'associer les réponses aux requêtes.
Une redirection de port laisse entrer
Le masquerade sert les requêtes qui partent de l'intérieur. Et si l'extérieur doit joindre une page web hébergée à l'intérieur ?
Une redirection de port fixe une règle. Toute demande pour l'adresse extérieure de la passerelle, port 8080, va vers un poste intérieur, port 80.
La passerelle réécrit la destination, et la table ramène la réponse.
Exemple : deux redirections
| L'extérieur demande | La passerelle envoie vers | Pourquoi |
|---|---|---|
| Adresse de la passerelle, port 8080 | 10.0.0.2, port 80 | La page web de la boutique |
| Adresse de la passerelle, port 2222 | 10.0.0.9, port 22 | La connexion à distance sur un serveur |
| Adresse de la passerelle, port 9999 | Nulle part | Aucune règle : la demande est jetée |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lire les règles de la passerelle
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
On croit souvent que le NAT protège. Le NAT réécrit seulement des adresses. Ce sont les règles du pare-feu qui décident de ce qui passe. Dans le jeu de règles lu plus haut, la chaîne forward en politique drop garde l'extérieur dehors.
Pour aller plus loin : lire une table complète
Une fois votre règle de masquerade en place dans le labo, lancez trois fois le curl depuis lan. Lancez ensuite conntrack -L dans gw.
Pour chaque entrée, notez le port source intérieur, puis le port vers lequel la réponse est envoyée dans la moitié inversée. Dites enfin quelles parties de l'entrée servent à la passerelle pour renvoyer chaque réponse au bon endroit.