Objectifs de certification
CCNA 200-301
1.7 Décrire la nécessité d’un adressage IPv4 privé
1.6 Configurer et vérifier l’adressage et le sous-réseautage (subnetting) IPv4
Adressage IPv4
Il est inimaginable de se présenter à un examen Cisco ou à un entretien d’embauche dans le domaine des réseaux sans maîtriser l’adressage IPv4 et ses mécanismes de découpage. On trouvera ici un exposé sur ce sujet.
1. Introduction aux adresses IPv4
Une adresse IPv4 est un identifiant de 32 bits représentés par 4 octets (8 bits) codés en décimales séparées par des points.
Le masque de réseau lui aussi noté en décimal pointé indique avec les bits à 1 la partie réseau partagée par toutes les adresses d’un bloc et avec les bits à 0 la partie unique qui identifie les interfaces sur la liaison.
Par exemple, 192.168.1.25 255.255.255.0
indique un numéro de réseau (première adresse) 192.168.1.0
et un numéro de Broadcast 192.168.1.255
. Toutes les adresses comprises entre ces valeurs peuvent être utilisées par les interfaces attachées à une même liaison (un même switch).
À cause du manque d’espace IPv4 disponible, on trouve souvent des masques qui chevauchent les octets, ce qui nécessite de passer par des calculs binaires.
2. Définition
- Une adresse IPv4 (Internet Protocol version 4) est une identification unique pour un hôte sur un réseau IP.
- Une adresse IP est un nombre d’une valeur de 32 bits représentée par 4 valeurs décimales pointées ; chacune a un poids de 8 bits (1 octet) prenant des valeurs décimales de 0 à 255 séparées par des points. La notation est aussi connue sous le nom de “décimale pointée”.
3. Identification de la classe d’adresse
(RFC791)
Les Classes
À l’origine d’IPv4, on distingue une organisation en classes d’adresses dont les quatre premiers bits indiquent la classe.
- Les adresses de Classe A commencent par 0xxx en binaire, ou
0
à127
en décimal. - Les adresses de Classe B commencent par 10xx en binaire, ou
128
à191
en décimal. - Les adresses de Classe C commencent par 110x en binaire, ou
192
à223
en décimal. - Les adresses de Classe D commencent par 1110 en binaire, ou
224
à239
en décimal. - Les adresses de Classe E commencent par 1111 en binaire, ou
240
à255
en décimal.
Notes sur les Classes d’adresses :
- Seules les adresses de Classes A, B et C sont assignables à des interfaces (adresse d’Unicast)
- La classe D est utilisée pour des adresses de Multicast (adresse unique identifiant de nombreuses destinations)
- La classe E est utilisée pour des besoins futurs ou des objectifs scientifiques
Adresses spécifiques :
- Les adresses commençant de
127.0.0.0
à127.255.255.255
sont réservées pour le bouclage (loopback) - Adresses privées non routables vers l’Internet sont (RFC1918) :
- Pour la classe A : de
10.0.0.0
à10.255.255.255
- Pour la classe B : de
172.16.0.0
à172.31.255.255
- Pour la classe C : de
192.168.0.0
à192.168.255.255
- Pour la classe A : de
Distinction de la partie réseau de la partie hôte
Par défaut :
- La partie réseau des adresses de Classe A portera sur le premier octet et la partie hôte sur les trois derniers (2^24 = 16 777 216 hôtes possibles par réseau)
- La partie réseau des adresses de Classe B portera sur les deux premiers octets et la partie hôte sur les deux derniers (2^16 = 65 536 hôtes possibles par réseau)
- La partie réseau des adresses de Classe C portera sur les trois premiers octets et la partie hôte sur le dernier (2^8 = 256 hôtes possibles par réseau)
4. Utilisation d’un masque
Utilisation d’un masque (RFC950)
Un masque va préciser de manière certaine dans quel réseau se trouve une adresse IP et en conséquence :
L’adresse du réseau (appelée aussi numéro de réseau, non assignable)
L’adresse de Broadcast (adresse visant toutes les destinations, non assignable)
La plage d’adresses utilisables (de la première à la dernière en dehors des adresses précitées)
Un masque sera une suite de 32 bits divisée en 4 octets pointés composée uniquement d’abord d’une suite de 1 et, après, d’une suite de 0. La notation est aussi décimale pointée. Toutefois, on trouvera une autre notation dite CIDR (Classless Interdomain Routing) qui représente le nombre de bits pris par la partie réseau du masque.
Masque par défaut
Le nombre d’hôtes possibles obtenus ci-dessus correspond à l’application d’un masque par défaut sur un type de classe d’adresse :
- Le masque par défaut des adresses de Classe A est
255.0.0.0
ou /8 - Le masque par défaut des adresses de Classe B est
255.255.0.0
ou /16 - Le masque par défaut des adresses de Classe C est
255.255.255.0
ou /24
5. Méthode par calcul binaire
L’adresse du réseau, l’adresse de Broadcast et la plage d’adresses utilisables peuvent être obtenues à partir d’un calcul booléen de type ET ou la conjonction logique (une proposition est vraie lorsque les deux termes sont tous les deux vrais) :
a. Obtenir l’adresse du réseau :
Pour l’adresse IP 140.159.125.25
, adresse de classe B à laquelle on applique un masque par défaut de 255.255.0.0
:
10001100.10011111.01111101.00011001 140.159.125.25
11111111.11111111.00000000.00000000 255.255.0.0
-----------------------------------
10001100.10011111.00000000.00000000 140.159.0.0
L’adresse du réseau est donc 140.159.0.0
. Elle est la première adresse de la plage.
b. Obtenir l’adresse de Broadcast :
On va remplacer les bits de valeur 0 de la partie hôte du résultat obtenu pour l’adresse de réseau par des bits de valeur 1, soit les deux derniers octets maximisés :
10001100.10011111.00000000.00000000 140.159.0.0
par :
10001100.10011111.11111111.11111111 140.159.255.255
c. Obtenir la plage d’adresses de ce réseau :
La plage d’adresse du réseau sera comprise entre la première adresse utilisable et la dernière utilisable, autrement dit, celle qui suit l’adresse du réseau et celle qui précède l’adresse de Broadcast :
De
10001100.10011111.00000000.00000001 140.159.0.1
à
10001100.10011111.11111111.11111110 140.159.255.254
Masques restrictifs
Les masques présentés ci-dessus sont des masques appartenant par défaut à chaque classe d’adresse. On pourra utiliser d’autres masques plus restrictifs afin de diviser un réseau en plusieurs sous-réseaux afin d’optimiser un plan d’adressage.
On va emprunter des bits à la partie hôte au profit de la partie réseau. De manière intuitive, on peut considérer qu’à partir d’un réseau de classe C de 256 adresses possibles, on pourra, par exemple obtenir 4 sous-réseaux différents de 64 adresses. Dans ce cas-ci, on dira que l’on a emprunté deux bits à la partie hôtes (2 exp 2 = 4) au profit des sous-réseaux. Il ne reste que 6 bits pour les hôtes (2 exp 6 = 64) dans chacun de ces sous-réseaux.
Par exemple :
Pour l’adresse IP 195.74.212.78
, adresse de classe C à laquelle on applique un masque de 255.255.255.192
par la même méthode que présenté ci-avant :
a. Obtenir l’adresse du réseau :
11000011.01001010.11010100.01001110 195.74.212.78
11111111.11111111.11111111.11000000 255.255.255.192
-----------------------------------
11000011.01001010.11010100.01000000 195.74.212.64
L’adresse du réseau est donc 195.74.212.64
b. Obtenir l’adresse de Broadcast :
On va remplacer les bits de valeur 0 de la partie hôte du résultat obtenu pour l’adresse de réseau par des bits de valeur 1 :
11000011.01001010.11010100.01000000 195.74.212.64
par :
11000011.01001010.11010100.01111111 195.74.212.127
c. Obtenir la plage d’adresses de ce réseau :
La plage d’adresse du réseau sera comprise entre la première adresse utilisable et la dernière utilisable, autrement dit, celle qui suit l’adresse du réseau et celle qui précède l’adresse de Broadcast :
De
11000011.01001010.11010100.01000001 195.74.212.65
à
11000011.01001010.11010100.01111110 195.74.212.126
6. Méthode dite du nombre magique.
Le calcul binaire peut sembler fastidieux. La méthode dite du nombre magique permet d’éviter ces calculs.
Le nombre magique est 256 soustrait de la valeur intéressante autre que 0 ou 255 du masque.
Pour trouver l’adresse réseau, il suffira de trouver le multiple du nombre magique directement inférieur ou égal à l’adresse IP, un multiple étant le résultat d’une multiplication :
Pour l’adresse IPv4 195.74.212.136
, adresse de classe C à laquelle on applique un masque de 255.255.255.192
, le nombre magique est 256-192 = 64, le multiple juste inférieur étant 128. L’adresse réseau est donc 195.74.212.128
.
Pour trouver l’adresse de la première adresse utilisable, il faudra ajouter 1 au dernier octet du numéro de sous-réseau : 195.74.212.129
.
Pour trouver l’adresse de Broadcast, il faudra faire (numéro de sous-réseau + nombre magique -1) 128+64-1, ce qui donnera l’adresse 195.74.212.191
.
Pour trouver l’adresse de la dernière adresse utilisable, il faudra soustraire 1 au dernier octet de l’adresse de Broadcast : 195.74.212.190
.
Autre exemple plus complexe :
Octet 1 | Octet 2 | Octet 3 | Octet 4 | Commentaire | |
---|---|---|---|---|---|
Adresse IPv4 | 10 | 200 | 10 | 18 | |
Masque | 255 | 224 | 0 | 0 | |
Numéro de sous-réseau | 10 | 192 | 0 | 0 | Nombre magique = 256-224 = 32 |
Première adresse utilisable | 10 | 192 | 0 | 1 | Ajouter 1 au dernier octet du numéro de sous-réseau |
Adresse de Broadcast | 10 | 223 | 255 | 255 | 192+32-1 = 223 |
Dernière adresse utilisable | 10 | 223 | 255 | 254 | Soustraire 1 du dernier octet de l’adresse de Broadcast |
Nombre de sous-réseaux / nombre d’hôtes
Les formules sont simples :
- Nombre de sous-réseaux : 2 EXP bits empruntés pour les sous-réseaux - 2
- Nombre d’hôtes : 2 EXP bits restant pour les hôtes - 2
À condition d’avoir en tête ce tableau de conversion, ce qui est indispensable :
Bits | Binaire | Décimal |
---|---|---|
0 | 00000000 | 0 |
1 | 10000000 | 128 |
2 | 11000000 | 192 |
3 | 11100000 | 224 |
4 | 11110000 | 240 |
5 | 11111000 | 248 |
6 | 11111100 | 252 |
7 | 11111110 | 254 |
8 | 11111111 | 255 |
7. Le routage sans classe (CIDR)
Les RFC1518 (historique) et RFC4632 (technique) consacrent la méthode CIDR, routage sans classe interdomaine, comme méthode de gestion et d’organisation plus efficace des adresses Internet. Concrètement cela signifie que :
- Une adresse est toujours accompagnée de son masque identifiant son appartenance à un réseau (domaine de Broadcast)
- La notion de classe d’adresse IPv4 disparaît dans la pratique.
- La notion de blocs identifiant des domaines de routage remplace la notion de classe d’adresse IPv4, rendant l’usage d’un masque indispensable.
- Pour simplifier la notation, on préfère représenter un slash / + le nombre de bits à 1 dans le masque. Par exemple /26 au lieu de 255.255.255.192.
- Les blocs sont variables, peuvent être agrégés ou découpés dans les informations de routage ou dans les plans d’adressage.
- Ces blocs sont des ensembles homogènes (les adresses se suivent) d’adresses en base 2 : 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, …, 65536, … adresses.
- Le RFC950 reste une référence en matière de calculs (numéro de réseau, Broadcast, plage d’adresses).
- Les protocoles de routage doivent supporter le masque comme information supplémentaire. On parle de protocoles de routage classless rendant RIPv1 et IGRP obsolètes.
- Toute une série de questions peuvent être posées dans la maîtrise de l’adressage IPv4 et peuvent être résolues soi-même ou avec un logiciel pour automatiser des tâches.
8. Notation CIDR
CIDR : Classless Inter-Domain Routing
Au lieu de représenter le masque d’une adresse en notation décimale pointée, le CIDR propose de noter une adresse suivie de /”nombre de bits à 1”, le nombre de bits à zéro qui reste représente la taille du bloc. Soit, par exemple :
255.255.255.192
=> 26 bits à 1 => /26
Il est utile de connaître les masques par défaut :
-
255.0.0.0
: /8 -
255.255.0.0
: /16 -
255.255.255.0
: /24
Le masque donne aussi le nombre de bits à zéro (32 - le masque).
- Par exemple, un /20 fournit un bloc de 2 EXP 12 adresses = 4096.
- Par exemple, un /24 fournit un bloc de 2 EXP 8 adresses = 256.
- Par exemple, un /30 fournit un bloc de 2 EXP 2 adresses = 4. Les bits à zéro dans le masque indiquent l’étendue du réseau.
9. Masques à longueurs variables (VLSM)
(RFC1878)
Dans l’ancienne méthode, les masques de découpage devaient être identiques parce qu’ils n’étaient pas transportés dans les informations de routage.
Rappels
Il est utile de rappeler que dans un masque, les bits à 1 correspondent à la partie fixe qui identifie le réseau et les bits à zéro correspondent à la partie variable qui identifie précisément une interface (un hôte, un noeud) dans ce domaine.
La première adresse est réservée et identifie le réseau en général. Elle n’est pas utilisable sur une interface mais identifie les réseaux dans les tables de routage.
La dernière ne peut pas se configurer sur une interface et est utilisée comme adresse de destination pour la diffusion (Broadcast).
Pour bien comprendre le mécanisme, il est plus intéressant de se représenter une topologie censée être fixée. Dans la réalité, il faudra tenir compte de l’évolutivité des besoins en adresses étant donné qu’un réseau que l’on planifie ne décroît jamais par définition. Le quotidien de l’administration des réseaux consiste en la gestion des adressages privés (cachés par du NAT). Pourquoi se passer d’un bloc 192.168.0.0/16
, 172.16.0.0/12
ou 10.0.0.0/8
que l’on découpera aisément ?
Premier cas d’école
On peut partir d’un ancien cas d’école considérant qu’il faille adresser un interréseau avec des adresses globales (publiques). On vous octroie un bloc d’adresses IPv4 195.167.46.0/24
. Selon les contraintes représentées d’un internet maillé de trois routeurs ayant chacun un réseau local (LAN) :
- LAN de R1 100 PCs,
- LAN de R2 50 PCs,
- LAN de R3 25 PCs.
On a donc un bloc de 256 adresses (/24). On propose ici de le découper de la manière suivante :
- un bloc /25 de 128 adresses pour le LAN de R1,
- un bloc /26 de 64 adresses pour le LAN de R2,
- un bloc /27 de 32 adresses pour le LAN de R3.
Dans le reste, on prendra trois blocs /30 de 4 adresses pour adresser les connexions point à point.
- La première adresse du bloc est attribuée comme numéro de réseau au réseau LAN de R1 car il a les plus gros besoins :
195.167.46.0
. Pour trouver la plage du réseau LAN de R1 (100 adresses), on fixe les bits à zéro dans le masque : 7 bits à zéro (2 EXP 7 = 128 adresses) soit de195.167.46.0/25
à195.167.46.127/25
. - La prochaine adresse est
195.167.46.128
. Elle est le numéro de réseau du prochain réseau ayant les plus gros besoins en adresses : le LAN de R2. Le masque a besoin de 6 bits à zéro (2 EXP 6 = 64) pour le LAN de R2 (50 adresses), soit de195.167.46.128/26
à195.167.46.191/26
- 64 adresses plus loin,
195.167.46.192
est la première adresse (le numéro de réseau) du LAN de R3. Le LAN de R3 a besoin de 25 adresses en offrant un masque avec 5 bits à zéro (2 EXP 5 = 32 adresses) : de195.167.46.192/27
à195.167.46.223/27
. -
195.167.46.224
est la prochaine adresse disponible. Il reste un bloc de 32 adresses, jusqu’à195.167.46.255
. Les connexions point à point prennent un masque /30 comprenant 4 adresses dont 2 utiles : l’une pour le numéro de réseau, deux utiles, la dernière pour la diffusion.
Le plan d’adressage proposé est représenté en tableau.
Attribution | Contrainte | Réseau | Plage adressable | Diffusion |
---|---|---|---|---|
LAN R1 | 100 adresses | 195.167.46.0/25 | 195.167.46.1/25 à 195.167.46.126/25 | 195.167.46.127/25 |
LAN R2 | 50 adresses | 195.167.46.128/26 | 195.167.46.129/26 à 195.167.46.190/26 | 195.167.46.191/26 |
LAN R3 | 25 adresses | 195.167.46.192/27 | 195.167.46.193/27 à 195.167.46.222/27 | 195.167.46.223/27 |
R2-R3 | 4 adresses | 195.167.46.224/30 | 195.167.46.225/30 à 195.167.46.226/30 | 195.167.46.227/30 |
R1-R2 | 4 adresses | 195.167.46.228/30 | 195.167.46.229/30 à 195.167.46.230/30 | 195.167.46.231/30 |
R1-R3 | 4 adresses | 195.167.46.232/30 | 195.167.46.233/30 à 195.167.46.234/30 | 195.167.46.235/30 |
Cette perspective restrictive correspond aux principes de conservation des adresses IPv4 publiques.
10. Super-réseaux
Ce qu’on appelle communément le super-netting consiste à regrouper des blocs contigus pour créer un seul bloc plus large.
Par exemple, pour adresser un réseau de 500 machines on peut prendre deux /24, soit 2 X 256. Le masque devient /23. En effet, /23 nous offrent 9 bits à 0, soit 2 EXP 9 = 512 adresses. Le CIDR a permis d’octroyer des blocs larges aux derniers FAI IPv4 indépendamment des classes d’adresses C.
11. Agrégation de routes
Afin de diminuer la taille des tables de routage, alors que le comportement courant est de trouver une entrée pour chaque réseau, on peut “résumer” les routes à condition d’avoir un plan d’adressage qui regroupe les réseaux géographiquement. Considérons par exemple la topologie d’un réseau privé entre Paris et six sites distants : plusieurs réseaux concentrés sur Lille et sur Lyon. Les réseaux d’extrémité contiennent deux VLANs : l’un pour les données et l’autre pour la voix.
Le routeur à Paris devrait voir deux routes dans sa table de routage l’une annonçant 192.168.0.0/22
passant par Lille et une autre annonçant 192.168.4.0/22
passant par Lyon.
12. Protocoles de routage sans classe (Classless)
Le CIDR doit être supporté par les protocoles de routage :
- RIPv2
- OSPFv2 et OSPFv3
- EIGRP
- BGPv4
13. Exercices IPv4
On peut calculer les plans d’adressage et répondre à plusieurs questions :
- Déterminer la plage IP à partir d’une adresse et de son masque
- Comparer deux adresses IP afin de déterminer si elles sont dans la même plage
- Choisir un masque adapté aux contraintes en nombre d’hôtes, avec une marge de croissance
- Choisir un masque adapté aux contraintes en nombre de réseaux, avec une marge de croissance
- Planifier un adressage avec masques fixes
- Planifier un adressage avec masques à longueurs variables
- Calculer une summarization de route
Outil pour vérifier ses calculs
La libraire Python netaddr est intéressante à cet égard : https://netaddr.readthedocs.org/en/latest/
L’utilitaire ipcalc
calcule pour nous les adresses IP :
# ipcalc --help
Usage: ipcalc [OPTION...]
-c, --check Validate IP address for specified address family
-4, --ipv4 IPv4 address family (default)
-6, --ipv6 IPv6 address family
-b, --Broadcast Display calculated Broadcast address
-h, --hostname Show hostname determined via DNS
-m, --netmask Display default netmask for IP (class A, B, or C)
-n, --network Display network address
-p, --prefix Display network prefix
-s, --silent Don't ever display error messages
Help options:
-?, --help Show this help message
--usage Display brief usage message
Par exemple :
# ipcalc -n -b -m 192.167.87.65/26
NETMASK=255.255.255.192
BROADCAST=192.167.87.127
NETWORK=192.167.87.64
On trouvera un utilitaire plus explicite avec sipcalc
, il est en dépôt chez Debian/Ubuntu. Sous Centos/RHEL, il sera nécessaire de le compiler soi-même (http://www.routemeister.net/projects/sipcalc/files/sipcalc-1.1.6.tar.gz).
# sipcalc -I ens33
-[int-ipv4 : ens33] - 0
[CIDR]
Host address - 172.16.98.241
Host address (decimal) - 2886755057
Host address (hex) - AC1062F1
Network address - 172.16.98.0
Network mask - 255.255.255.0
Network mask (bits) - 24
Network mask (hex) - FFFFFF00
Broadcast address - 172.16.98.255
Cisco wildcard - 0.0.0.255
Addresses in network - 256
Network range - 172.16.98.0 - 172.16.98.255
Usable range - 172.16.98.1 - 172.16.98.254
Liens pour s’exercer :