# Protocoles réseaux : DHCP et NAT

Ce cours est distribué gratuitement sous licence [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr) par Thibaud FRICHET - [formation.tfrichet.fr](https://formation.tfrichet.fr/)

**Prérequis :**

- Fondamentaux réseaux : adressage IP, ports, etc.

# Rappels théoriques : IPv4 & IPv6

### IPv4 et IPv6

#### IPv4

Les adresses IPv4 sont utilisées depuis les débuts d’Internet. Elles sont adressées en 32 bits sur 4 octets.  
**Exemple :** `51.68.45.52`.

<p class="callout warning">Le nombre total d’adresses disponibles est d'environ 4,3 milliards. Toutes les adresses IPv4 ont été attribuées depuis 2019.</p>

**Voir le détail de l'ARCEP :** [https://www.arcep.fr/la-regulation/grands-dossiers-internet-et-numerique/lipv6/suivi-de-lepuisement-des-adresses-ipv4.html](https://www.arcep.fr/la-regulation/grands-dossiers-internet-et-numerique/lipv6/suivi-de-lepuisement-des-adresses-ipv4.html)

##### Classes d’IPv4

<div class="___i31lg00 f10pi13n f14t3ns0 f1nbblvp fat0sn4 f1ov4xf1 fekwl8i f1lmfglv f1oz7aqm f1abmfm4 f1w619qj f16h0jq8" id="bkmrk-classe-plage-d%27adres"><table class="___1hm93bs f1ddd56o f16vktn6 f1enuhaj fdclmfp f1ev3kgc ftgm304 f1uinfot fibjyge fvueend f9yszdx f1fu4s3n f3l3pb3 f1s2k7dp f8fmt76 fjvbh62 fysh76l fic4ptz f1yenhzu f1yn6nvh f14tj6oe f1jq587y f1el8yx3 f1pymoxg f1ofu761 fe6itr f7coize f1794535 f70r78m f4zgifc fk1v6el f16pyhcb fo436u6 fzy4j18 fc43013 f1hmrcvb fc4t9fq fgp09rh fjnyn6r" style="width: 100%; height: 225.766px;"><thead><tr style="height: 34.1094px;"><td style="width: 9.77354%; height: 34.1094px;">**Classe**</td><td style="width: 31.9428%; height: 34.1094px;">**Plage d'adresses publiques**</td><td style="width: 36.2357%; height: 34.1094px;">**Plage d'adresses privées**</td><td style="width: 22.0479%; height: 34.1094px;">**Usage**</td></tr></thead><tbody><tr style="height: 34.1094px;"><td style="width: 9.77354%; height: 34.1094px;">**A**</td><td style="width: 31.9428%; height: 34.1094px;">1.0.0.0 - 126.255.255.255</td><td style="width: 36.2357%; height: 34.1094px;">10.0.0.0 - 10.255.255.255</td><td style="width: 22.0479%; height: 34.1094px;">Grands réseaux</td></tr><tr style="height: 34.1094px;"><td style="width: 9.77354%; height: 34.1094px;">**B**</td><td style="width: 31.9428%; height: 34.1094px;">128.0.0.0 - 191.255.255.255</td><td style="width: 36.2357%; height: 34.1094px;">172.16.0.0 - 172.31.255.255</td><td style="width: 22.0479%; height: 34.1094px;">Réseaux moyens</td></tr><tr style="height: 34.1094px;"><td style="width: 9.77354%; height: 34.1094px;">**C**</td><td style="width: 31.9428%; height: 34.1094px;">192.0.0.0 - 223.255.255.255</td><td style="width: 36.2357%; height: 34.1094px;">192.168.0.0 - 192.168.255.255</td><td style="width: 22.0479%; height: 34.1094px;">Petits réseaux</td></tr><tr style="height: 34.1094px;"><td style="width: 9.77354%; height: 34.1094px;">**D**</td><td style="width: 31.9428%; height: 34.1094px;"><span data-darkreader-inline-color="" style="color: rgb(149, 165, 166);">224.0.0.0 - 239.255.255.255</span></td><td style="width: 36.2357%; height: 34.1094px;"> </td><td style="width: 22.0479%; height: 34.1094px;"><span data-darkreader-inline-color="" style="color: rgb(149, 165, 166);">Multicast</span></td></tr><tr style="height: 55.2188px;"><td style="width: 9.77354%; height: 55.2188px;">**E**</td><td style="width: 31.9428%; height: 55.2188px;"><span data-darkreader-inline-color="" style="color: rgb(149, 165, 166);">240.0.0.0 - 255.255.255.255</span></td><td style="width: 36.2357%; height: 55.2188px;"> </td><td style="width: 22.0479%; height: 55.2188px;"><span data-darkreader-inline-color="" style="color: rgb(149, 165, 166);">Réservé</span></td></tr></tbody></table>

</div>Les **IP privées** sont utilisées sur un réseau local LAN, **elles ne sont pas routables sur internet**.  
À l'inverse, les **IP publiques** sont routables sur internet. Elles sont attribuées par les fournisseurs.

Le `NAT` (Network address translation) permet à plusieurs IP privées de partager une seule IP publique.

<p class="callout info">Nous approfondirons plus tard le protocole `NAT`.</p>

#### IPv6

`IPv6` est le successeur d'`IPv4`, conçu pour résoudre le problème de pénurie d’adresses IP.

Les IPv6 sont adressées sur 128 bits, permettant de générer environ 3,4×10³⁸ adresses.

**Exemple :** `1050:0:0:0:5:600:300c:326b`

> Cela équivaut à un nombre illimité puisque pour saturer le système, il faudrait placer près de 2,30 trillions (milliards de milliards) d'appareils connectés à Internet sur chaque millimètre carré de surface terrestre émergée (148 <abbr class="abbr" title="millions de km carré">millions de km<sup>2</sup></abbr>).
> 
> [Article Wikipedia IPv6](https://fr.wikipedia.org/wiki/Adresse_IPv6)

Contrairement à `IPv4`, `IPv6` élimine le besoin de `NAT` : chaque appareil peut disposer d’une adresse IP publique unique.

Cependant, son adoption nécessite une infrastructure compatible, tant au niveau matériel que logiciel, ce qui représente un coût important pour les entreprises.  
L'adoption d'IPv6 est inégale entre les pays du monde. Cela s'explique principalement par des différences dans la pression sur les ressources IPv4, les politiques publiques en matière de numérique, et le niveau de préparation technique des opérateurs locaux.

### Sous-réseaux

L'implémentation de **sous-réseaux** permet de diviser un réseau IP en segments plus petits **en s'affranchissant des classes IPv4 prédéfinies**.  
Chaque sous-réseau fonctionne comme un réseau indépendant.

Les cas d'usage sont par exemple l'optimisation du routage ou la séparation logique des services d'une organisation.

#### Notation CIDR et masque

La notation `CIDR` (Classless Inter-Domain Routing) permet de spécifier la longueur du préfixe réseau.

**Par exemple :**  
`192.168.10.0/24`

- 24 bits pour le réseau
- 8 bits pour les hôtes

<p class="callout info">Le masque correspondant est : `255.255.255.0`.</p>

#### Calcul du nombre de sous-réseaux et d'hôtes

Pour créer des sous-réseaux, on **emprunte des bits** à la partie hôte.

Par exemple, un réseau en `192.168.1.0/24` contient **256 adresses**. Si on passe en `/26`, on utilise 2 bits supplémentaires pour le réseau.  
Cela donne 4 sous-réseaux, chacun avec **64 adresses**, dont 62 utilisables.

<div class="___i31lg00 f10pi13n f14t3ns0 f1nbblvp fat0sn4 f1ov4xf1 fekwl8i f1lmfglv f1oz7aqm f1abmfm4 f1w619qj f16h0jq8" id="bkmrk-"></div><div class="___i31lg00 f10pi13n f14t3ns0 f1nbblvp fat0sn4 f1ov4xf1 fekwl8i f1lmfglv f1oz7aqm f1abmfm4 f1w619qj f16h0jq8" id="bkmrk-sous-r%C3%A9seau-plage-d%E2%80%99"><div class="___i31lg00 f10pi13n f14t3ns0 f1nbblvp fat0sn4 f1ov4xf1 fekwl8i f1lmfglv f1oz7aqm f1abmfm4 f1w619qj f16h0jq8"><table class="___1hm93bs f1ddd56o f16vktn6 f1enuhaj fdclmfp f1ev3kgc ftgm304 f1uinfot fibjyge fvueend f9yszdx f1fu4s3n f3l3pb3 f1s2k7dp f8fmt76 fjvbh62 fysh76l fic4ptz f1yenhzu f1yn6nvh f14tj6oe f1jq587y f1el8yx3 f1pymoxg f1ofu761 fe6itr f7coize f1794535 f70r78m f4zgifc fk1v6el f16pyhcb fo436u6 fzy4j18 fc43013 f1hmrcvb fc4t9fq fgp09rh fjnyn6r"><thead><tr><th>**Sous-réseau**</th><th>**Plage d’hôtes**</th><th>**Broadcast**</th></tr></thead><tbody><tr><td>192.168.1.0/26</td><td>192.168.1.1 – .62</td><td>192.168.1.63</td></tr><tr><td>192.168.1.64/26</td><td>192.168.1.65 – .126</td><td>192.168.1.127</td></tr><tr><td>192.168.1.128/26</td><td>192.168.1.129 – .190</td><td>192.168.1.191</td></tr><tr><td>192.168.1.192/26</td><td>192.168.1.193 – .254</td><td>192.168.1.255</td></tr></tbody></table>

</div>  
</div>

# Protocole DHCP

### Introduction

Le **DHCP** (Dynamic Host Configuration Protocol) est un protocole réseau utilisé pour attribuer automatiquement des adresses IP et d'autres paramètres réseau aux machines d'un réseau local.

Il permet d'éviter la configuration manuelle des adresses IP par postes. La gestion est centralisée, avec moins de risques d'erreur.

### Fonctionnement

#### Étapes

1. Lorsqu'un appareil rejoint un réseau, il envoie un message de découverte `DHCP Discover` pour annoncer sa présence. Le message est envoyé sur l'adresse de broadcast ARP `FF:FF:FF:FF:FF:FF`.
2. Un serveur `DHCP` répond avec une proposition de configuration réseau `DHCP Offer`.
3. L'appareil choisit une offre de configuration et envoie une demande `DHCP Request`.
4. Le serveur valide ce choix par un accusé de réception `DHCP Ack`.

<div drawio-diagram="109"><img src="https://formation.tfrichet.fr/uploads/images/drawio/2025-10/fj1hYq6hniYjGH3H-drawing-3-1761227165.png" alt=""/></div>

<p class="callout info">Ce mécanisme assure à chaque machine une configuration réseau adaptée sans intervention humaine.</p>

#### Bail DHCP

Un **bail DHCP** est limité dans le temps, généralement quelques heures. À son expiration, le client doit le renouveler pour garder la même adresse IP.  
Si le renouvellement échoue ou si le client ne demande pas de renouvellement, l'adresse IP peut être réattribuée à un autre hôte.

Le bail DHCP contient les informations suivantes :

- Une adresse IP
- Un masque de sous-réseau
- La durée du bail
- L'adresse IP de la passerelle
- Les adresses IP des serveurs DNS

<p class="callout success">Il est possible d'affecter de manière permanente une adresse IP à une hôte.  
On parle alors de **réservation DHCP**.</p>

### Exception : adresses Apipa

Les adresses **APIPA** (Automatic Private IP Addressing) sont des adresses IP automatiquement attribuées par le système d'exploitation lorsqu'un client DHCP ne parvient pas à contacter un serveur DHCP.

Ces adresses appartiennent à la plage `169.254.0.1` à `169.254.255.254`, réservée à cet usage.

Elles permettent à des machines d'un même réseau local de communiquer entre elles, mais ne permettent pas l'accès à Internet.

<p class="callout warning">L’APIPA est une solution de secours temporaire, utile pour le diagnostic des problèmes de connectivité réseau.</p>

### Exemples de configuration

#### Serveur DHCP - Routeur Synology

[![image.png](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/scaled-1680-/dYZsBHuJWDdDgr4n-image.png)](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/dYZsBHuJWDdDgr4n-image.png)

[![image.png](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/scaled-1680-/OsDBikZV75HjQ7bR-image.png)](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/OsDBikZV75HjQ7bR-image.png)

<p class="callout info">Les adresse IP `10.1.1.3` à `10.1.1.41` sont en réservation DHCP.</p>

#### Client Windows

[![image.png](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/scaled-1680-/jtmyysjyUoDQ1r6Q-image.png)](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/jtmyysjyUoDQ1r6Q-image.png)

# Protocole NAT

Le `NAT` (Network Address Translation) est un mécanisme utilisé pour faire transiter des paquets IP entre réseaux avec des plages d’adresses différentes, en modifiant les adresses source ou destination.

### SNAT et DNAT

Il existe deux types de NAT :

<table border="1" id="bkmrk-type-fonction-usage-" style="border-collapse: collapse; width: 100%; height: 102.328px;"><colgroup><col style="width: 9.41597%;"></col><col style="width: 43.0443%;"></col><col style="width: 47.5397%;"></col></colgroup><thead><tr style="height: 34.1094px;"><td style="height: 34.1094px;">**Type**</td><td style="height: 34.1094px;">**Fonction**</td><td style="height: 34.1094px;">**Usage**</td></tr></thead><tbody><tr style="height: 34.1094px;"><td style="height: 34.1094px;">**SNAT**</td><td style="height: 34.1094px;">Modifie l'adresse source d'un paquet.</td><td style="height: 34.1094px;">Utilisé pour permettre aux hôte d'un LAN d'accéder à Internet.</td></tr><tr style="height: 34.1094px;"><td style="height: 34.1094px;">**DNAT**</td><td style="height: 34.1094px;">Modifie l'adresse de destination d'un paquet.</td><td style="height: 34.1094px;">Utilisé pour rediriger le trafic entrant vers un hôte interne au réseau local.</td></tr></tbody></table>

#### SNAT

Le SNAT est automatiquement activé sur les box et modems, ce qui permet aux équipements du réseau local d'accéder à Internet sans configuration manuelle.

#### DNAT et Port Forwarding

La redirection de port via DNAT est utilisée pour permettre l'accès à un service interne (hébergé sur une machine du réseau local) depuis l’extérieur du réseau.

La redirection consiste à modifier l'adresse IP et le port de destination d'un paquet entrant afin de le rediriger vers une machine du réseau local.

<p class="callout info">Cette méthode est couramment utilisée pour exposer des services comme des serveurs web, FTP, SSH, etc. derrière un routeur NAT.</p>

##### Exemple sur un routeur Synology

[![image.png](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/scaled-1680-/ip3V7pyQELijL5Yl-image.png)](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/ip3V7pyQELijL5Yl-image.png)

[![image.png](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/scaled-1680-/3U8vbQIRM6c1Qm2t-image.png)](https://formation.tfrichet.fr/uploads/images/gallery/2025-10/3U8vbQIRM6c1Qm2t-image.png)

##### DMZ

Une `DMZ` (Demilitarized Zone) est, à l’origine, une zone réseau intermédiaire destinée à héberger des services accessibles depuis Internet, tout en protégeant le réseau interne grâce à une séparation stricte.

En pratique, dans de nombreuses configurations, le terme désigne un **hôte placé en dehors du pare-feu via un port forwarding global**, exposant tous ses ports à Internet, ce qui revient à le connecter directement au réseau public.

### Cas particuliers

#### NAT UPnP

L'`UPnP` (Universal Plug and Play) est un protocole qui permet aux équipements connectés d'un réseau de demander au routeur d'ouvrir automatiquement certains ports.  
`UPnP` est souvent nécessaire pour le fonctionnement d'applications spécifiques à travers le NAT (P2P, jeux en ligne, visios, etc.).

<p class="callout info">Dans l'exemple ci-dessus, la PS5 a ouvert des ports UPnP. Probablement pour une mise à jour distribuée en P2P.</p>

Concrètement, au lieu de devoir ajouter manuellement des règles de redirection de ports sur le routeur, `UPnP` permet à ces applications de créer ou supprimer elles-mêmes des règles de façon dynamique et temporaire.

<p class="callout warning">`UPnP` peut représenter un risque de sécurité : des programmes malveillants peuvent exploiter cette fonctionnalité pour s'ouvrir un accès depuis l'extérieur.</p>

#### Hairpinning

Le **hairpinning NAT** (ou loopback NAT) est une fonctionnalité qui permet à un appareil du réseau local d'accéder à un autre appareil du même LAN via l’adresse IP publique du routeur.

**Exemple :** Un smartphone est connecté sur un réseau Wi-Fi domestique. L'utilisateur souhaite accéder au NAS en utilisant l'adresse IP publique du modem et le port redirigé en NAT

- **Sans hairpinning :** La requête sort vers l'IP publique mais le routeur ne la **reboucle** pas vers le NAS. Résultat : ça ne fonctionne pas, le routeur bloque ou ignore la redirection pour une requête qui vient du LAN vers le LAN via l'IP publique.
- **Avec hairpinning :** Le routeur reconnaît cette situation, reboucle la requête et la redirige correctement vers le NAS, comme si la connexion venait de l’extérieur.

<p class="callout warning">La plupart des box opérateurs ne supportent pas correctement le hairspinning.</p>

#### CGNAT

Le **CGNAT** (Carrier-Grade NAT, ou NAT de niveau opérateur) est une technique utilisée par les fournisseurs d'accès à Internet (FAI) pour **partager une seule adresse IPv4 publique entre plusieurs abonnés**.  
Cela permet de pallier la pénurie d’adresses IPv4.

Normalement, chaque box ou routeur chez un particulier reçoit une adresse IP publique unique.

À l'inverse, avec le CGNAT, le FAI attribue une **adresse IP privée** à chaque client (comme dans un réseau local).

Plusieurs clients **partagent la même IP publique** et le FAI utilise un routeur NAT à grande échelle pour faire la traduction entre les IP privées des clients et l'IP publique partagée.

##### Quelques exemples

- **Fibre Free**  : Sur certaines offres, **une seule IP publique est partagée entre 4 abonnés**. Il est possible d'activer une option (gratuite) pour obtenir une IP fixe et dédiée.
- **Starlink** : Par défaut, les utilisateurs sont derrière un CGNAT.  
    Pour obtenir une **IP publique dédiée**, il faut **payer une option supplémentaire**.

<p class="callout warning">Le CGNAT rend impossible la redirection de port.</p>