IP Adressing :
- IPv4 Addressing 4 octet de 8 bits soit 32 bits d’adresses IP
o Subnet mask Permet de déterminer la partie réseau à la
partie
hôte
(serveur, pc …)
o Class
de IPv4
Class D are reserved for multicast address A logical
identifier for a group of host in a computer network
Class E are reserved for research
o Subnetting The process of taking a larger network portion
and subdividing it into smaller portions
Classful : Default subnet mask for a given class of IP
addresses
Classless : Used to borrow some of the host bits from an
IPv4 address (IPv4 : 192.168.1.4 ; Subnet mask :
255.255.255.192 CIDR Notation : 192.168.1.4/26
J’ai donc 6 bits de dispo pour la partie hôte)
- IPv4 Address Types
o Public (Routable) :
Unique IP address
assigned to each
device on the Internet
that allow it to
communicate
with other devices
using IPv4.
o Private (Non-routable) :
Used within a local network that allows for the communication
between devices within that network without using a public IP
address
Private IP ranges : 10.X.X.X, 172.16.X.X – 172.31.X.X,
192.168.X.X
Network Address Translation (NAT) :
Le **NAT (Network Address Translation)** est une technologie utilisée
dans les réseaux informatiques pour modifier l'adresse IP source ou
destination des paquets lorsqu'ils traversent un routeur ou un pare-feu.
Son rôle principal est de permettre à plusieurs appareils sur un réseau
local (LAN) de partager une seule adresse IP publique pour accéder à
l'extérieur, comme l'Internet. Cela est particulièrement utile pour
conserver des adresses IPv4 qui sont limitées.
### Fonctionnement du NAT
Le NAT se situe souvent sur un routeur qui connecte un réseau local à un
réseau plus large (comme Internet). Il fonctionne en traduisant les
adresses IP privées des appareils internes en une ou plusieurs adresses IP
publiques attribuées au routeur.
1. **Table de NAT :**
Le routeur NAT maintient une table qui associe les adresses IP privées
des appareils internes à des ports spécifiques de l'adresse IP publique.
Lorsqu'un paquet sort du réseau local vers l'extérieur, le routeur modifie
l'adresse IP source du paquet en remplaçant l'adresse IP privée par
l'adresse IP publique du routeur et stocke cette association dans la table
NAT.
2. **Traduction des paquets sortants :**
- Lorsque le routeur reçoit un paquet d'un appareil local (avec une
adresse IP privée), il modifie l'adresse source du paquet, en remplaçant
l'adresse IP privée par l'adresse IP publique du routeur.
- Il change également le numéro de port source pour s'assurer que
chaque connexion est unique dans sa table de NAT (utilisation de ports
dynamiques).
- Le paquet modifié est ensuite transmis à l'Internet.
3. **Traduction des paquets entrants :**
- Lorsqu'une réponse revient de l'extérieur, le routeur examine le port
destination et l'adresse IP du paquet et les compare à la table de NAT.
- Il traduit ensuite l'adresse IP publique et le port en l'adresse IP privée
et le port d'origine avant de rediriger le paquet vers l'appareil correct sur
le réseau local.
### Types de NAT
Il existe plusieurs types de NAT selon la manière dont les adresses IP et
les ports sont gérés :
1. **NAT statique :**
Une adresse IP privée est mappée à une adresse IP publique unique de
façon permanente. Il y a une correspondance un-à-un.
2. **NAT dynamique :**
Plusieurs adresses IP publiques sont disponibles, et lorsqu'un appareil
interne souhaite communiquer avec l'extérieur, il reçoit une adresse IP
publique disponible pour la session. C'est une correspondance un-à-
plusieurs.
3. **PAT (Port Address Translation) ou NAT surchargé :**
C'est le type le plus couramment utilisé. Ici, une seule adresse IP
publique est partagée par plusieurs appareils internes, et la différenciation
se fait par l'utilisation des numéros de port. Chaque appareil reçoit un port
unique pour chaque session.
Le NAT reste une solution très courante, surtout en raison de la rareté des
adresses IPv4, bien que l'adoption croissante d'IPv6 réduise
progressivement son besoin.
Dynamic Host Control Protocol (DHCP) :
Le **DHCP (Dynamic Host Configuration Protocol)** est un protocole
réseau utilisé pour attribuer dynamiquement des adresses IP et d'autres
informations de configuration réseau à des appareils sur un réseau. Il
simplifie la gestion des réseaux en automatisant l'attribution des adresses
IP, des passerelles par défaut, des serveurs DNS et d'autres paramètres
nécessaires à la communication des appareils sur le réseau.
### Fonctionnement du DHCP :
Le processus d'attribution d'une adresse IP par un serveur DHCP passe par
plusieurs étapes. Ce processus est souvent décrit sous le modèle DORA :
1. **Discovery (Découverte)** :
Lorsqu'un appareil (appelé client DHCP) se connecte à un réseau et n'a
pas d'adresse IP, il envoie un message **DHCPDISCOVER**. Ce message
est un **broadcast** envoyé à l'adresse IP 255.255.255.255 (car le client
ne connaît pas encore les adresses du réseau) sur le port UDP 67, qui est
écouté par les serveurs DHCP présents sur le réseau.
2. **Offer (Offre)** :
Le serveur DHCP, en recevant la requête DHCPDISCOVER, répond avec
un message **DHCPOFFER**. Ce message contient :
- Une adresse IP proposée pour le client,
- Le masque de sous-réseau,
- La durée de validité de l'adresse (durée du bail),
- D'autres informations réseau, comme la passerelle par défaut et les
serveurs DNS.
Ce message est également envoyé en broadcast pour que le client
puisse le recevoir, même s'il n'a pas encore d'adresse IP.
3. **Request (Requête)** :
Lorsque le client reçoit l'offre d'une adresse IP (il peut recevoir plusieurs
offres si plusieurs serveurs DHCP répondent), il en choisit une et envoie un
message **DHCPREQUEST** pour indiquer au serveur qu'il accepte cette
offre. Ce message est aussi un broadcast pour informer tous les serveurs
DHCP qu'une offre a été acceptée, afin que les autres serveurs puissent
annuler leurs offres.
4. **Acknowledgement (Accusé de réception)** :
Enfin, le serveur DHCP qui a été sélectionné envoie un message
**DHCPACK** pour confirmer que le client peut utiliser l'adresse IP qui lui
a été attribuée. Ce message contient les mêmes informations que le
message DHCPOFFER et permet au client de configurer sa pile réseau
avec ces paramètres.
Une fois cette séquence complétée, le client peut commencer à utiliser
l'adresse IP pour communiquer sur le réseau.
### Les principaux paramètres DHCP
Un serveur DHCP peut fournir plusieurs informations au client, en plus de
l'adresse IP, telles que :
- **Adresse IP** : L'adresse attribuée dynamiquement au client.
- **Masque de sous-réseau** : Définit la partie de l'adresse IP qui
représente le réseau et celle qui représente l'hôte.
- **Passerelle par défaut** : L'adresse IP du routeur que le client utilisera
pour accéder à d'autres réseaux, notamment Internet.
- **Serveurs DNS** : Les adresses des serveurs DNS que le client utilisera
pour la résolution des noms de domaine.
- **Durée du bail (lease time)** : Le temps pendant lequel le client peut
utiliser l'adresse IP avant de devoir la renouveler.
### Renouvellement du bail
Le client DHCP doit renouveler son adresse IP avant que le bail n'expire.
Le processus de renouvellement se déroule ainsi :
1. **T1** : Lorsque 50 % du temps du bail est écoulé, le client envoie une
requête de renouvellement (DHCPREQUEST) au serveur DHCP qui lui a
attribué l'adresse. Si le serveur répond avec un DHCPACK, le bail est
renouvelé et la durée du bail est réinitialisée.
2. **T2** : Si à 87,5 % du temps du bail, le client n'a toujours pas reçu de
réponse du serveur DHCP, il enverra une requête de renouvellement sous
forme de broadcast pour essayer d'obtenir une réponse de n'importe quel
serveur DHCP disponible sur le réseau.
3. **Expiration du bail** : Si le bail expire sans avoir été renouvelé, le
client doit recommencer le processus DORA complet pour obtenir une
nouvelle adresse IP.
Si le client ne reçoit aucune offre (les serveurs DHCP sont
indisponibles alors il se verra attribuer une adresse IP privée via
Automatic Private IP Addresses (APIPA) avec une plage de
196.254.0.1 à 196.254.255.255
### Modes d’attribution d'adresses IP
Le serveur DHCP peut attribuer des adresses IP selon trois modes
principaux :
1. **Allocation dynamique** : Le mode le plus courant. Le serveur DHCP
attribue une adresse IP à partir d'une plage d'adresses définie pour une
durée limitée (bail). Une fois le bail expiré, l'adresse peut être réattribuée
à un autre appareil.
2. **Allocation automatique** : Similaire à l'allocation dynamique, mais
l'adresse IP attribuée est permanente. Le serveur attribue toujours la
même adresse IP à un appareil spécifique une fois que celui-ci l'a reçue.
3. **Allocation manuelle (ou statique)** : L'administrateur réseau
configure une adresse IP spécifique pour un appareil particulier,
généralement en associant une adresse IP à une adresse MAC dans la
base de données du serveur DHCP. Cela permet de garantir qu'un appareil
obtient toujours la même adresse IP.
Le DHCP est un protocole fondamental dans la gestion des réseaux
modernes et facilite grandement la configuration des appareils en
automatisant l'attribution des paramètres réseau essentiels.
- IPv4 Data Flows
o Unicast : Data travels from a single source device to a single
destination device
o Multicast : Data travels from a single source device to multiple
(but specific) destination devices
o Broadcast : Data travels from a single source device to all
devices on a
destination network
- Assigning IPv4
Addresses
o Static Assignment :
Manually typing in the
IP address for the host,
its subnet mask, default gateway and DNS server
o Dynamic Assignment :
DHC
P
BOO
TP
APIP
A
Zero
Conf
DNS :
Le **DNS (Domain Name System)** est un système essentiel à l'Internet
qui permet de traduire les **noms de domaine** (comme
`www.example.com`) en **adresses IP** (par exemple `192.0.2.1`),
nécessaires pour que les ordinateurs et autres appareils puissent
communiquer entre eux. Le DNS fonctionne comme un annuaire
téléphonique pour Internet, simplifiant l'accès aux ressources en ligne en
permettant aux utilisateurs d'utiliser des noms compréhensibles plutôt
que des adresses IP numériques.
### Fonctionnement du DNS
Le DNS repose sur une structure hiérarchique et distribuée. Voici comment
il fonctionne techniquement lorsque vous saisissez un nom de domaine
dans votre navigateur :
1. **Requête DNS** :
Lorsqu'un utilisateur saisit un nom de domaine dans son navigateur (par
exemple, `www.example.com`), une requête DNS est envoyée pour
obtenir l'adresse IP associée à ce domaine. Cette requête est envoyée à
un **resolver DNS** (souvent fourni par le FAI ou configuré
manuellement).
2. **Vérification du cache local** :
Le resolver DNS commence par vérifier si l'adresse IP associée au
domaine est déjà stockée dans son **cache**. Si une correspondance est
trouvée (c'est-à-dire si le domaine a déjà été résolu récemment), il renvoie
directement l'adresse IP au client, évitant ainsi une requête
supplémentaire.
3. **Demande au serveur DNS racine** :
Si l'adresse IP n'est pas dans le cache, le resolver envoie une requête à
un **serveur DNS racine**. Les serveurs racines sont au sommet de la
hiérarchie DNS et ne connaissent que les adresses IP des serveurs **TLD
(Top-Level Domain)**.
4. **Redirection vers un serveur TLD** :
Le serveur DNS racine renvoie l'adresse IP du serveur TLD
correspondant au domaine de niveau supérieur demandé (par exemple
`.com`, `.net`, `.org`). Le resolver envoie alors une nouvelle requête au
serveur TLD.
5. **Demande au serveur de nom autoritaire** :
Le serveur TLD redirige ensuite le resolver vers le **serveur de noms
autoritaire** du domaine, c'est-à-dire le serveur qui contient les
enregistrements DNS pour ce domaine spécifique (comme
`example.com`). Ce serveur autoritaire renvoie l'adresse IP exacte
associée au sous-domaine (comme `www.example.com`).
6. **Renvoi de l’adresse IP au client** :
Le resolver DNS renvoie ensuite l'adresse IP au client, permettant à
l'ordinateur de l'utilisateur de contacter directement le serveur web à
cette adresse IP. À partir de là, la connexion TCP/IP est établie pour
récupérer la page web ou les données demandées.
### Types d'enregistrements DNS
Les **serveurs de noms autoritaires** contiennent plusieurs types
d'enregistrements DNS, chacun fournissant des informations différentes
sur un domaine. Les plus courants sont :
- **A (Address) Record** : Associe un nom de domaine à une adresse IPv4.
- **AAAA Record** : Associe un nom de domaine à une adresse IPv6.
- **CNAME (Canonical Name) Record** : Crée un alias pour un nom de
domaine. Par exemple, `www.example.com` peut être un alias pour
`example.com`.
- **MX (Mail Exchange) Record** : Indique le serveur de messagerie à
utiliser pour un domaine, permettant de rediriger les emails vers le bon
serveur.
- **NS (Name Server) Record** : Indique les serveurs DNS autoritaires
pour un domaine, c'est-à-dire ceux qui détiennent les enregistrements
pour le domaine.
- **TXT Record** : Contient des informations textuelles, souvent utilisées
pour la vérification de domaines ou la configuration de politiques de
sécurité comme le **SPF (Sender Policy Framework)** ou **DKIM
(DomainKeys Identified Mail)** pour l'authentification des emails.
### Résolution DNS : Requête récursive vs itérative
- **Requête récursive** : Lorsqu'un client DNS (généralement le **resolver
DNS**) demande au serveur DNS de trouver l'adresse IP pour un nom de
domaine et attend une réponse complète. Le serveur DNS fait tout le
travail, en contactant d'autres serveurs DNS pour obtenir l'information, et
renvoie la réponse finale au client.
- **Requête itérative** : Si un serveur DNS ne connaît pas la réponse
exacte, il renvoie l'adresse d'un autre serveur DNS qui pourrait savoir. Le
client DNS continue à faire des requêtes jusqu'à obtenir une réponse
définitive.
### Hiérarchie du DNS
Le DNS est organisé de manière hiérarchique avec plusieurs niveaux de
serveurs :
1. **Serveurs racine** : Situés au sommet de la hiérarchie, ils gèrent les
demandes pour les domaines de premier niveau (TLD). Il existe 13
ensembles de serveurs racine dans le monde, identifiés par des lettres (A
à M).
2. **Serveurs TLD** : Ces serveurs gèrent les domaines de premier
niveau, tels que `.com`, `.org`, `.net`, ou des TLD spécifiques à des pays
comme `.fr` pour la France ou `.de` pour l'Allemagne.
3. **Serveurs de noms autoritaires** : Ces serveurs contiennent les
enregistrements DNS pour des domaines spécifiques (comme
`example.com`) et sont les sources d'autorité pour ces domaines. Ils
renvoient les enregistrements DNS au resolver.
### Caching DNS
Les résultats des requêtes DNS sont souvent mis en cache pour améliorer
les performances. Le caching se produit à plusieurs niveaux :
- **Cache du client** : Les systèmes d'exploitation et les navigateurs web
peuvent conserver temporairement des adresses IP pour des noms de
domaine.
- **Cache du resolver DNS** : Les résolveurs DNS (souvent ceux fournis
par les FAI) conservent en mémoire les réponses DNS pour une durée
définie par le paramètre **TTL (Time-To-Live)**, généralement spécifié par
le serveur autoritaire.
Le caching réduit la charge sur le système DNS global en évitant d'avoir à
refaire des requêtes à chaque fois qu'un domaine est demandé.
### Avantages du DNS
- **Simplicité pour les utilisateurs** : Les noms de domaine sont beaucoup
plus faciles à retenir que des adresses IP numériques.
- **Évolutivité** : Le DNS est conçu pour gérer un très grand nombre de
domaines et de requêtes.
- **Redondance et résilience** : Grâce à sa structure distribuée, le DNS
est robuste et
### Conclusion
Le DNS est un service central de l'infrastructure Internet qui simplifie la
communication en traduisant des noms de domaine en adresses IP. Il
repose sur une structure hiérarchique et distribuée, et bien qu'il soit
robuste et scalable, il présente des vulnérabilités en matière de sécurité
qui nécessitent des mécanismes de protection comme DNSSEC.
Subnetting :
Le **subnetting** (ou sous-réseautage) est une technique utilisée dans les
réseaux IP pour diviser un réseau IP en plusieurs sous-réseaux plus petits.
Cela permet d'améliorer la gestion, la sécurité et l'efficacité d'un réseau
en utilisant plus efficacement les adresses IP disponibles.
Le subnetting consiste à ajuster le **masque de sous-réseau** (subnet
mask) pour créer ces sous-réseaux. Chaque sous-réseau a sa propre plage
d'adresses IP, ce qui permet de mieux structurer le réseau en segments
plus petits et mieux contrôlables.
### Concepts de base
#### 1. **Adresse IP**
Une adresse IP est une série de 32 bits dans le cas d’IPv4, divisée en
quatre octets (ou blocs) exprimés sous forme de décimaux, séparés par
des points. Par exemple : `192.168.1.0`. Cette adresse est composée de
deux parties :
- **La partie réseau** : Identifie le réseau auquel l’appareil appartient.
- **La partie hôte** : Identifie les appareils (ou hôtes) au sein de ce
réseau.
#### 2. **Masque de sous-réseau**
Le **masque de sous-réseau** est une série de 32 bits utilisée pour
diviser une adresse IP en une partie réseau et une partie hôte. Il est
représenté de manière similaire aux adresses IP (par exemple,
`255.255.255.0`). Un masque de sous-réseau utilise des "1" dans les bits
correspondant à la partie réseau et des "0" dans les bits correspondant à
la partie hôte.
Un autre format courant pour représenter le masque de sous-réseau est la
notation **CIDR (Classless Inter-Domain Routing)**, qui indique
directement le nombre de bits utilisés pour la partie réseau. Par exemple,
`192.168.1.0/24` signifie que les 24 premiers bits de l'adresse IP sont
réservés à la partie réseau.
### Subnetting en pratique
Le **subnetting** consiste à emprunter certains des bits de la partie hôte
d'une adresse IP pour créer plus de sous-réseaux. Cela permet de créer
des réseaux plus petits à l'intérieur d'un réseau plus grand, chacun avec
son propre ensemble d'adresses IP.
#### Exemple :
Prenons une adresse IP `192.168.1.0` avec un masque de sous-réseau
`/24` (ce qui signifie `255.255.255.0`).
- Le masque `/24` signifie que les 24 premiers bits sont réservés à la
partie réseau, ce qui laisse 8 bits pour la partie hôte. Cela permet un total
de **256 adresses** (2⁸ = 256), dont 254 peuvent être attribuées à des
hôtes (les adresses `0` et `255` sont réservées).
#### Création de sous-réseaux :
Si nous voulons diviser ce réseau en sous-réseaux plus petits, nous
devons modifier le masque de sous-réseau pour emprunter des bits
supplémentaires à la partie hôte. Par exemple, si nous passons à un
masque `/26` (soit `255.255.255.192`), cela signifie que nous utilisons 26
bits pour la partie réseau et laissons 6 bits pour la partie hôte.
Les 6 bits restants permettent un total de **64 adresses** (2⁶ = 64) par
sous-réseau, mais comme les adresses de début et de fin de chaque sous-
réseau sont réservées, cela laisse **62 adresses utilisables** par sous-
réseau pour les hôtes.
Dans chaque sous-réseau IP, deux adresses sont réservées et ne peuvent
pas être attribuées aux hôtes. Ces deux adresses sont :
1. **Adresse réseau (Network address)** :
- C'est la première adresse d'un sous-réseau, où tous les bits de la
partie hôte sont mis à zéro. Elle identifie le sous-réseau lui-même et est
utilisée pour les routages.
- Exemple : Dans le sous-réseau `192.168.1.0/24`, l'adresse réseau est
`192.168.1.0`.
2. **Adresse de diffusion (Broadcast address)** :
- C'est la dernière adresse d'un sous-réseau, où tous les bits de la partie
hôte sont mis à 1. Elle est utilisée pour envoyer des messages à tous les
hôtes du sous-réseau.
- Exemple : Dans le sous-réseau `192.168.1.0/24`, l'adresse de diffusion
est `192.168.1.255`.
Ces deux adresses sont systématiquement réservées dans chaque sous-
réseau, ce qui réduit le nombre d'adresses IP disponibles pour les hôtes
d’un sous-réseau.
Le réseau `192.168.1.0/24` peut ainsi être divisé en 4 sous-réseaux avec
un masque `/26` :
- **Sous-réseau 1** : `192.168.1.0/26` - Adresses de `192.168.1.1` à
`192.168.1.62`
- **Sous-réseau 2** : `192.168.1.64/26` - Adresses de `192.168.1.65` à
`192.168.1.126`
- **Sous-réseau 3** : `192.168.1.128/26` - Adresses de `192.168.1.129` à
`192.168.1.190`
- **Sous-réseau 4** : `192.168.1.192/26` - Adresses de `192.168.1.193` à
`192.168.1.254`
Chacun de ces sous-réseaux dispose de **62 adresses IP utilisables** pour
les hôtes.
### Calculs dans le Subnetting
1. **Nombre de sous-réseaux** :
Pour déterminer combien de sous-réseaux peuvent être créés, il suffit de
compter combien de bits ont été empruntés à la partie hôte. Si, par
exemple, on emprunte 2 bits à la partie hôte, cela donne **2² = 4 sous-
réseaux**.
2. **Nombre d'hôtes par sous-réseau** :
Le nombre d'hôtes par sous-réseau est déterminé par le nombre de bits
restants pour la partie hôte. Par exemple, si 6 bits sont laissés pour la
partie hôte, cela donne **2⁶ - 2 = 62 hôtes** (les 2 adresses réservées
étant l'adresse réseau et l'adresse de diffusion).
### Classes d'adresses IP et Subnetting
Les adresses IP sont traditionnellement classées en **classes A, B et C**,
chacune ayant une taille de réseau différente :
- **Classe A** : Masque par défaut `/8` (par exemple, `10.0.0.0/8`), ce qui
donne de grandes plages pour la partie hôte.
- **Classe B** : Masque par défaut `/16` (par exemple, `172.16.0.0/16`),
avec un compromis entre les bits de réseau et d'hôtes.
- **Classe C** : Masque par défaut `/24` (par exemple, `192.168.1.0/24`),
permettant de petites plages d'adresses.
Cependant, grâce à la **notation CIDR** (Classless Inter-Domain Routing),
il est possible de subdiviser n'importe quelle plage d'adresses IP en sous-
réseaux, quelle que soit la classe à laquelle elle appartenait initialement.
### Avantages du Subnetting
1. **Optimisation des adresses IP** : Le subnetting permet de maximiser
l'utilisation des adresses IP disponibles en divisant un réseau en segments
plus petits et plus gérables.
2. **Séparation du trafic réseau** : Les sous-réseaux permettent d'isoler
certaines parties du réseau, ce qui peut améliorer la sécurité et réduire la
congestion réseau.
3. **Meilleure gestion** : En divisant un grand réseau en sous-réseaux
plus petits, la gestion du réseau devient plus facile. Il est possible de
séparer les départements, les équipes ou les sites géographiquement
différents avec des sous-réseaux dédiés.
4. **Contrôle de la diffusion (broadcast)** : Chaque sous-réseau a sa
propre plage d'adresses IP et ses propres adresses de diffusion, ce qui
permet de limiter la portée des messages de broadcast à un seul sous-
réseau.
### Conclusion
Le **subnetting** est une technique essentielle pour diviser un réseau IP
en plusieurs sous-réseaux plus petits, optimisant ainsi l'utilisation des
adresses IP et améliorant la gestion du réseau. Cela nécessite de
manipuler les bits du masque de sous-réseau pour créer des plages
d'adresses spécifiques à chaque sous-réseau, permettant ainsi une
meilleure isolation du trafic réseau et une gestion plus fine des
ressources.
Table Subnetting
CIDR Subnets IPs
/24 1 256
/25 2 128
/26 4 64
/27 8 32
/28 16 16
/29 32 8
/30 64 4
IPv6 :
- Larger address space (128 bits)
- No broadcasts
- No fragmentation (no MTU)
- Simplifier header
- 32 Hexadecial digits (0 to 9, A, B, C, D, E, and F can represent 10 to
15)
- 0000 = 0 ; 2018:0000:0000:0000:0000:0000:4815:54ae =
2018::4815:54ae
- Unicast Address Used to identify a single interface
o Globally-routed : Similar to IPv4’s unicast class A, B and C
addresses and begins with 2000-3999
o Link-local : Used like a private IP in IPv4 that can only be used
on the LAN and begins with FE80
o Stateless Address Autoconfiguration ( SLAAC)
Le **SLAAC (Stateless Address Autoconfiguration)** est un mécanisme
utilisé dans les réseaux IPv6 pour permettre à un appareil (comme un
ordinateur, un smartphone, etc.) de s'auto-configurer et obtenir une
adresse IP sans avoir besoin d'un serveur DHCP. SLAAC permet aux
appareils de générer automatiquement leur propre adresse IPv6 en
fonction d'informations fournies par les routeurs sur le réseau, et ce, de
manière "stateless", c'est-à-dire sans maintenir d'état ou de suivi
centralisé.
### Fonctionnement technique du SLAAC
SLAAC repose sur plusieurs protocoles et mécanismes fondamentaux de
l'IPv6, notamment **ICMPv6** (Internet Control Message Protocol for IPv6)
et les messages **Neighbor Discovery Protocol (NDP)**. Voici les étapes
clés du fonctionnement de SLAAC :
#### 1. **Génération de l'adresse link-local**
Lorsque l’appareil se connecte à un réseau IPv6, il commence par
générer une **adresse link-local**. Une adresse **link-local** commence
toujours par le préfixe `fe80::/10` et est valide uniquement sur le lien
local (le réseau auquel l'appareil est directement connecté).
La génération de cette adresse suit la structure suivante :
- Préfixe : `fe80::/64`
- Interface Identifier : Les 64 bits restants sont généralement dérivés de
l’adresse **MAC** (utilisant l'algorithme EUI-64) ou générés aléatoirement
pour des raisons de confidentialité.
Exemple : L’appareil pourrait générer une adresse comme
`fe80::abcd:efff:fe12:3456`.
#### 2. **Vérification de l'unicité de l'adresse link-local**
Une fois que l'adresse link-local est générée, l'appareil doit vérifier que
cette adresse est unique sur le réseau local, pour éviter des conflits. Il
utilise pour cela un processus appelé **Duplicate Address Detection
(DAD)**, qui consiste à envoyer un message **Neighbor Solicitation**
(sollicitation de voisin) sur le réseau pour s'assurer qu'aucun autre
appareil n'utilise la même adresse.
Si aucune réponse n'est reçue, l'adresse est considérée comme unique,
et l'appareil continue le processus de configuration.
#### 3. **Réception des messages Router Advertisement (RA)**
Après avoir configuré son adresse link-local, l’appareil écoute les
messages **Router Advertisement (RA)** envoyés par les routeurs sur le
réseau. Ces messages contiennent des informations cruciales pour la
configuration de l'adresse IPv6 globale.
- Les routeurs IPv6 envoient périodiquement des messages RA pour
informer les appareils du préfixe réseau global qu'ils doivent utiliser.
- Si l’appareil souhaite accélérer le processus, il peut envoyer un
message **Router Solicitation (RS)** pour demander explicitement un
message RA au routeur.
#### 4. **Construction de l’adresse IPv6 globale**
Une fois qu'un message RA est reçu, il contient plusieurs informations,
notamment :
- **Le préfixe réseau** : Par exemple, `2001:db8:abcd::/64`, qui sera
utilisé pour l'adresse IPv6 globale.
- **Le flag "A" (Autonomous)** : Ce flag indique que le SLAAC est pris en
charge, et que les appareils peuvent s'auto-configurer sans intervention
manuelle ni serveur DHCPv6.
L’appareil utilise alors ce préfixe pour construire son adresse IPv6
globale :
- Les 64 premiers bits sont le préfixe réseau fourni par le routeur (par
exemple, `2001:db8:abcd::`).
- Les 64 bits suivants sont l'**identifiant d'interface** dérivé de son
adresse MAC (ou généré de manière aléatoire).
Ainsi, si l'adresse MAC est utilisée pour l'identifiant, l'adresse IPv6 finale
pourrait ressembler à `2001:db8:abcd:0:abcd:efff:fe12:3456`.
#### 5. **Configuration des autres paramètres réseau**
En plus de l'adresse IPv6, le message RA peut fournir d'autres
informations comme :
- **Le routeur par défaut** : Pour savoir où envoyer le trafic destiné à
d'autres réseaux.
- **Le délai de vie du préfixe** : Pour indiquer combien de temps cette
adresse peut être utilisée avant de devoir être renouvelée ou mise à jour.
Cependant, certains paramètres, comme les adresses des serveurs DNS,
ne sont pas configurés par SLAAC. Si les appareils ont besoin de ces
informations, ils peuvent soit les obtenir manuellement, soit utiliser
**DHCPv6** pour obtenir des informations supplémentaires (on parle alors
de configuration "stateful").
### DAD (Duplicate Address Detection)
Le mécanisme de **Duplicate Address Detection** est essentiel dans
SLAAC pour éviter les conflits d'adresses IP sur le réseau. Lorsqu’un
appareil génère une adresse IPv6, il envoie un message **Neighbor
Solicitation** pour vérifier si cette adresse est déjà utilisée par un autre
appareil. Si aucune réponse n’est reçue dans un délai donné, l’adresse est
considérée comme unique.
### SLAAC et la confidentialité
L'une des préoccupations avec SLAAC est que l'adresse IPv6 générée via
l'algorithme EUI-64 est basée sur l'adresse MAC, ce qui rend les adresses
IPv6 globales statiques et traçables. Cela peut poser des problèmes de
**confidentialité**, car une adresse MAC identifie de manière unique un
appareil sur différents réseaux.
Pour résoudre ce problème, IPv6 prend en charge des **adresses
temporaires** ou **adresses de confidentialité**, qui utilisent un
identifiant d'interface généré de manière aléatoire au lieu de l'adresse
MAC, rendant ainsi l'adresse IPv6 moins traçable.
### Comparaison SLAAC vs DHCPv6
- **SLAAC** : Permet à un appareil de s'auto-configurer de manière
stateless, sans avoir besoin d’un serveur central. Il est simple et efficace
pour attribuer des adresses, mais il ne fournit pas certaines informations
supplémentaires (comme le DNS).
- **DHCPv6** : Fournit un mécanisme **stateful** où un serveur DHCPv6
central distribue non seulement les adresses IPv6 mais aussi des
informations supplémentaires (comme les serveurs DNS, la passerelle par
défaut, etc.).
Dans certaines configurations, les deux mécanismes peuvent être utilisés
ensemble. Par exemple, **SLAAC** peut être utilisé pour configurer
l'adresse IPv6, tandis que **DHCPv6** peut être utilisé pour distribuer
d'autres paramètres (on parle alors de **DHCPv6 stateless**).
### Conclusion
Le **SLAAC** est une méthode clé dans les réseaux IPv6 pour permettre
aux appareils de s'auto-configurer sans serveur DHCP. Il permet la
génération d'adresses IPv6 à partir d'informations fournies par le routeur
du réseau et assure une communication efficace sans intervention
manuelle. SLAAC est simple, mais il peut être complété par des
mécanismes comme DHCPv6 pour obtenir des informations
supplémentaires sur le réseau.
Précision algorithme EUI-64 :
L'**algorithme EUI-64** (Extended Unique Identifier-64) est utilisé dans les
réseaux IPv6 pour dériver l'**identifiant d'interface** de 64 bits à partir de
l'**adresse MAC** d'un appareil, qui est de 48 bits. Cet identifiant est
ensuite utilisé pour générer une adresse IPv6 unique au sein d'un sous-
réseau.
### Étapes de l'algorithme EUI-64 :
1. **Séparation de l'adresse MAC** : L'adresse MAC de 48 bits est divisée
en deux parties :
- Les 24 premiers bits (appelés OUI, Organizationally Unique Identifier)
identifient le fabricant.
- Les 24 derniers bits identifient l'appareil.
2. **Insertion des bits "FFFE"** : Pour passer de 48 bits à 64 bits, les 16
bits "FFFE" sont insérés au milieu de l'adresse MAC :
- Par exemple, si l'adresse MAC est `00:1A:2B:3C:4D:5E`, après l'ajout,
elle devient `00:1A:2B:FF:FE:3C:4D:5E`.
3. **Inversion du bit U/L (Universal/Local)** : Le 7e bit (le bit U/L) du
premier octet de l'adresse MAC est inversé pour indiquer si l'adresse est
globale (0) ou locale (1). Si le bit est initialement à 0, il est mis à 1 et vice
versa.
4. **Résultat** : L'adresse modifiée sur 64 bits est utilisée comme
**identifiant d'interface** dans l'adresse IPv6, ce qui garantit que
l'adresse est unique dans le sous-réseau.
### Exemple :
- Adresse MAC : `00:1A:2B:3C:4D:5E`
- Après transformation avec EUI-64 : `02:1A:2B:FF:FE:3C:4D:5E`
L'algorithme EUI-64 permet ainsi d'obtenir une adresse IPv6 unique sans
avoir besoin d'un serveur central pour la distribuer.
- Multicast Address : Used to identify a set of interfaces and begins
with FF
- Anycast Address : Used to identify a set of interfaces so that a
packet can be sent to any member of a set
- Data flow in IPv6 :
Les adresses **Unicast**, **Multicast**, et **Anycast** sont trois types
d'adresses IP utilisées pour transmettre des données dans les réseaux IP,
notamment dans IPv6 (et IPv4 à un certain degré). Chacune a une
fonction différente en ce qui concerne la manière dont les paquets sont
routés ou livrés aux destinataires.
### 1. **Adresse Unicast**
Une adresse **Unicast** désigne **un seul appareil** (ou hôte) dans un
réseau. Les paquets envoyés à une adresse unicast sont destinés à un
hôte unique et spécifié, et sont acheminés directement vers cet appareil.
- **Destination** : Un seul appareil.
- **Utilisation** : C'est l'adresse la plus courante pour la communication
de point à point (par exemple, un ordinateur client qui se connecte à un
serveur).
- **Exemple** : Une adresse IPv4 `192.168.1.10` ou IPv6 `2001:db8::1`.
### 2. **Adresse Multicast**
Une adresse **Multicast** désigne un **groupe d'appareils** dans un
réseau. Les paquets envoyés à une adresse multicast sont délivrés à
**tous les appareils membres de ce groupe**, mais pas à ceux qui n'en
font pas partie. Cela permet d'optimiser l'utilisation de la bande passante
en envoyant une seule fois les données qui doivent être reçues par
plusieurs récepteurs.
- **Destination** : Un groupe spécifique d'appareils (membres d'un groupe
multicast).
- **Utilisation** : C'est couramment utilisé pour la diffusion de données
vers plusieurs destinataires simultanément, comme la diffusion vidéo en
direct ou la synchronisation de fichiers.
- **Exemple** :
- IPv4 Multicast : Adresses dans la plage `224.0.0.0` à
`239.255.255.255`.
- IPv6 Multicast : Adresses commençant par `ff00::/8`.
### 3. **Adresse Anycast**
Une adresse **Anycast** est assignée à **plusieurs appareils**, mais les
paquets envoyés à une adresse anycast sont acheminés vers **le nœud le
plus proche** (en termes de distance de routage). Cela signifie qu'il n'y a
qu'un seul destinataire effectif, mais il est choisi parmi plusieurs appareils
ayant la même adresse, en fonction de critères de proximité ou
d'efficacité du réseau.
- **Destination** : Un seul appareil parmi plusieurs, en fonction de la
proximité (ou du routage optimal).
- **Utilisation** : Utilisé pour distribuer des services géographiquement
distribués, comme les serveurs DNS root, pour que la requête soit dirigée
vers le serveur le plus proche.
- **Exemple** : Une adresse anycast peut être partagée entre plusieurs
serveurs DNS afin que la requête DNS soit dirigée vers le serveur le plus
proche ou disponible.
### Résumé rapide :
- **Unicast** : Un appareil unique reçoit les données.
- **Multicast** : Un groupe d'appareils reçoit les données simultanément.
- **Anycast** : Le plus proche des appareils partageant la même adresse
reçoit les données.
Chacun de ces types d'adresses est conçu pour des scénarios spécifiques
de communication dans les réseaux modernes, notamment en IPv6, qui a
élargi l'usage des adresses multicast et anycast.
Techniques de transition entre IPv4 et IPv6
Pour permettre la coexistence et la communication entre IPv4 et IPv6
pendant la période de transition (qui peut durer longtemps), plusieurs
techniques ont été développées :
a) Double Stack (Dual Stack)
Principe : Les appareils et les routeurs fonctionnent avec les deux
protocoles IPv4 et IPv6 activés simultanément. Cela signifie que ces
appareils peuvent gérer à la fois du trafic IPv4 et IPv6, selon le type
d'adresse avec lequel ils communiquent.
Utilisation : Lorsqu'un appareil reçoit une requête, il utilise IPv4 ou
IPv6 en fonction de la version de l'adresse IP du destinataire. Si les
deux appareils supportent IPv6, ils utilisent IPv6. Sinon, ils basculent
sur IPv4.
Limitation : Nécessite que chaque appareil, routeur et réseau
prenne en charge les deux protocoles, ce qui peut augmenter la
complexité de gestion.
b) Tunneling
Le tunneling permet à des paquets IPv6 d’être encapsulés dans des
paquets IPv4 pour traverser des réseaux IPv4, et vice versa. Voici deux
exemples courants :
1. 6to4 Tunneling :
o Permet aux paquets IPv6 de traverser un réseau IPv4 en les
encapsulant dans des paquets IPv4.
o Le tunnel 6to4 attribue automatiquement une adresse IPv6 à
partir de l'adresse IPv4 publique de l'appareil. Cela facilite
l'interconnexion des réseaux IPv6 à travers un réseau IPv4.
o Exemple : Si un appareil dispose de l'adresse IPv4 192.0.2.1,
il peut générer une adresse IPv6 2002:c000:0201::/48 à
utiliser dans le tunnel.
2. Teredo Tunneling :
o Il permet aux appareils situés derrière des dispositifs NAT (très
courants en IPv4) d'utiliser des adresses IPv6 pour traverser
des réseaux IPv4.
o C'est une méthode plus complexe qui inclut l'utilisation de
serveurs Teredo pour gérer les communications.
c) NAT64/DNS64
Principe : Permet aux appareils IPv6 d'accéder à des ressources
IPv4 en convertissant les paquets IPv6 en IPv4, et vice versa.
Fonctionnement : Un dispositif appelé NAT64 (Network Address
Translation pour IPv6 vers IPv4) est utilisé. Lorsque des paquets IPv6
sont destinés à une ressource IPv4, NAT64 traduit l'adresse IPv6 en
adresse IPv4 et convertit les en-têtes de paquets en conséquence.
DNS64 : Un composant complémentaire à NAT64. Il intercepte les
requêtes DNS faites par un hôte IPv6 vers un serveur DNS IPv4, et
génère une réponse avec une adresse IPv6 fictive basée sur
l'adresse IPv4 d'origine.