En Une :

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. On trouvera ici un exposé sur ce sujet.

Les objectifs ICND1 couverts sont :

  • 1.10 Comparer et mettre en contraste les types d'adresses IPv4
    • 1.10.a Unicast
    • 1.10.b Broadcast
    • 1.10.c Multicast
  • 1.11 Décrire la nécessité d'un adressage IPv4 privé
  • 1.9 Configurer, vérifier et dépanner l'adressage et le sous-réseautage IPv4

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

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)

Classes d'adresses IPv4

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 :

  1. L'adresse du réseau (appelée aussi numéro de réseau, non assignable)

  2. L'adresse de broadcast (adresse visant toutes les destinations, non assignable)

  3. 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 IP 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 IP 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 = 2048.
  • 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 nœud) 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.

Tripod exigences

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.

Tripod découpage VLSM

  • 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 de 195.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 de 195.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) : de 195.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.

Super-réseaux

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.

Agrégation de routes

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

On peut essayer l'outil en ligne du site :

Liens pour s'exercer :

Author image
Francois Goffinet est formateur Cisco Systems depuis 2002. Passionné des technologies des réseaux, de virtualisation et en nuage, Web et de cybersécurité souvent en Open Source ou Unix-Like, devops.