Aller au contenu

Adressage IPv4, masques et sous-réseaux

Niveau
Débutant
Durée
1 h 30 avec les exercices
Testé sur
Calculs vérifiés avec ipcalc

Avant d’installer un DHCP, de créer un domaine Active Directory ou de configurer un VLAN, il faut savoir répondre à une question simple : ces deux machines sont-elles sur le même réseau ? Tout cet article sert à y répondre sans hésiter, de tête ou avec un papier.

À la fin de cet article, vous saurez :

  • lire une adresse IPv4 et son masque, en notation décimale et en notation CIDR (/24) ;
  • trouver l’adresse réseau, l’adresse de broadcast et la plage d’adresses utilisables ;
  • calculer combien de machines un réseau peut accueillir ;
  • découper un réseau en sous-réseaux de même taille, puis de tailles différentes (VLSM).

Aucun, à part savoir compter en puissances de 2. Une feuille et un crayon aident beaucoup.

Une adresse IPv4 est un nombre de 32 bits. Pour la rendre lisible, on la coupe en quatre octets de 8 bits, écrits en décimal et séparés par des points :

192 .168 .10 .77
11000000 .10101000 .00001010 .01001101

Chaque octet va donc de 0 (00000000) à 255 (11111111). Une adresse comme 192.168.10.300 n’existe pas.

Chaque bit d’un octet a un poids, de 128 à 1 :

Poids 128 64 32 16 8 4 2 1
77 0 1 0 0 1 1 0 1

Pour convertir 77, on prend les poids de gauche à droite tant qu’ils rentrent : 64 rentre (reste 13), 32 et 16 non, 8 rentre (reste 5), 4 rentre (reste 1), 2 non, 1 rentre. On obtient 01001101.

Une adresse IP contient deux informations : le réseau auquel appartient la machine, et l’hôte, c’est-à-dire la machine elle-même dans ce réseau. Le masque indique où se trouve la frontière entre les deux.

Le masque est lui aussi un nombre de 32 bits. Ses bits à 1 désignent la partie réseau, ses bits à 0 la partie hôte. Les 1 sont toujours tous à gauche :

Masque 255.255.255.192
11111111.11111111.11111111.11000000
└────────── réseau (26 bits) ──────┘└ hôte (6 bits)

Écrire 255.255.255.192 est long. La notation CIDR donne simplement le nombre de bits à 1 du masque : /26. On écrit donc l’adresse et son masque d’un seul coup : 192.168.10.77/26.

CIDR Masque décimal Bits hôte Adresses Hôtes utilisables
/8 255.0.0.0 24 16 777 216 16 777 214
/16 255.255.0.0 16 65 536 65 534
/22 255.255.252.0 10 1 024 1 022
/23 255.255.254.0 9 512 510
/24 255.255.255.0 8 256 254
/25 255.255.255.128 7 128 126
/26 255.255.255.192 6 64 62
/27 255.255.255.224 5 32 30
/28 255.255.255.240 4 16 14
/29 255.255.255.248 3 8 6
/30 255.255.255.252 2 4 2

La règle derrière ce tableau : avec n bits d’hôte, un réseau contient 2ⁿ adresses, dont 2ⁿ − 2 utilisables pour des machines.

Dans chaque réseau, deux adresses sont réservées :

  • la première, où tous les bits d’hôte sont à 0, est l’adresse du réseau lui-même. Elle sert à le désigner, par exemple dans une table de routage ;
  • la dernière, où tous les bits d’hôte sont à 1, est l’adresse de broadcast. Un paquet envoyé à cette adresse est reçu par toutes les machines du réseau.

On ne peut attribuer ni l’une ni l’autre à une machine.

Trouver le réseau d’une adresse : la méthode complète

Section intitulée « Trouver le réseau d’une adresse : la méthode complète »

Prenons 192.168.10.77/26 et cherchons son adresse réseau, son broadcast et sa plage utilisable.

On aligne l’adresse et le masque en binaire, puis on fait un ET logique bit à bit : le résultat vaut 1 seulement si les deux bits valent 1. Les trois premiers octets du masque valent 255, donc ils recopient l’adresse telle quelle. Il suffit de calculer le dernier :

Adresse 77 01001101
Masque 192 11000000
-------- ET
Réseau 64 01000000

L’adresse réseau est 192.168.10.64. Pour le broadcast, on garde la partie réseau et on met tous les bits d’hôte à 1 : 01111111, soit 127. Le broadcast est 192.168.10.127.

En pratique, on ne passe presque jamais par le binaire. On regarde l’octet où le masque n’est ni 255 ni 0 (l’octet « intéressant »), et on calcule :

taille du bloc = 256 − valeur du masque dans cet octet

Ici, le masque vaut 192 dans le 4ᵉ octet : 256 − 192 = 64. Les réseaux commencent donc tous les 64 dans cet octet : .0, .64, .128, .192. L’adresse .77 tombe entre .64 et .127 :

Information Résultat
Adresse réseau 192.168.10.64/26
Première adresse utilisable 192.168.10.65
Dernière adresse utilisable 192.168.10.126
Broadcast 192.168.10.127
Nombre d’hôtes 2⁶ − 2 = 62

Les deux méthodes donnent évidemment le même résultat. La première sert à comprendre, la seconde à aller vite.

Ces deux machines peuvent-elles se parler directement ?

Section intitulée « Ces deux machines peuvent-elles se parler directement ? »

Deux machines communiquent directement (sans routeur) seulement si elles sont dans le même réseau. Pour le vérifier, on calcule l’adresse réseau de chacune avec son masque.

  • 192.168.1.120/25 : bloc de 128, réseau 192.168.1.0.
  • 192.168.1.130/25 : bloc de 128, réseau 192.168.1.128.

Elles ne sont pas dans le même réseau. Un ping de l’une vers l’autre échouera s’il n’y a pas de routeur entre les deux, alors que leurs adresses se ressemblent beaucoup. C’est l’une des causes de panne les plus fréquentes en TP.

Certaines plages ont un rôle particulier :

Plage Rôle
10.0.0.0/8 Adresses privées (RFC 1918)
172.16.0.0/12 Adresses privées, de 172.16.0.0 à 172.31.255.255
192.168.0.0/16 Adresses privées, les plus courantes chez les particuliers
127.0.0.0/8 Boucle locale. 127.0.0.1 désigne la machine elle-même
169.254.0.0/16 APIPA : adresse que Windows s’attribue seul quand il ne trouve pas de serveur DHCP
0.0.0.0 « Aucune adresse » ou « toutes les adresses », selon le contexte (route par défaut 0.0.0.0/0)
255.255.255.255 Broadcast limité au réseau local

Les adresses privées ne sont pas routées sur Internet. Elles sont utilisées dans les réseaux d’entreprise et de TP, et traduites en adresse publique par la box ou le pare-feu (NAT).

Découper, c’est emprunter des bits à la partie hôte pour les ajouter à la partie réseau. Chaque bit emprunté double le nombre de sous-réseaux et divise par deux leur taille.

Énoncé : l’école dispose de 192.168.1.0/24 et veut 4 réseaux séparés (administration, salle de TP 1, salle de TP 2, serveurs).

  1. Combien de bits emprunter ? Il faut au moins 4 sous-réseaux : 2² = 4, donc 2 bits.
  2. Nouveau masque : 24 + 2 = /26, soit 255.255.255.192.
  3. Taille de chaque bloc : 256 − 192 = 64 adresses, donc 62 hôtes.
Sous-réseau Adresse réseau Plage utilisable Broadcast
Administration 192.168.1.0/26 .1 à .62 192.168.1.63
Salle TP 1 192.168.1.64/26 .65 à .126 192.168.1.127
Salle TP 2 192.168.1.128/26 .129 à .190 192.168.1.191
Serveurs 192.168.1.192/26 .193 à .254 192.168.1.255

Si on avait eu besoin de 6 réseaux, 2 bits n’auraient pas suffi (4 réseaux seulement). Il aurait fallu 3 bits (2³ = 8 réseaux), donc un /27 avec des blocs de 32.

Dans la réalité, tous les réseaux n’ont pas la même taille. Donner 62 adresses à un lien entre deux routeurs qui n’en utilise que 2, c’est du gaspillage. Le VLSM (Variable Length Subnet Mask) consiste à choisir un masque différent pour chaque sous-réseau.

Énoncé : à partir de 192.168.50.0/24, créer :

  • un réseau Administration de 100 postes ;
  • un réseau Pédagogie de 50 postes ;
  • un réseau Serveurs de 20 machines ;
  • un lien entre deux routeurs (2 adresses).

La règle d’or : on place toujours les plus grands réseaux en premier. Sinon, les blocs ne tombent plus sur des frontières valides.

Besoin Plus petit masque qui convient Réseau attribué Plage utilisable Broadcast
100 postes /25 (126 hôtes) 192.168.50.0/25 .1 à .126 .127
50 postes /26 (62 hôtes) 192.168.50.128/26 .129 à .190 .191
20 machines /27 (30 hôtes) 192.168.50.192/27 .193 à .222 .223
2 adresses /30 (2 hôtes) 192.168.50.224/30 .225 à .226 .227

Chaque réseau commence juste après le broadcast du précédent. Il reste de la place libre de 192.168.50.228 à 192.168.50.255 pour de futurs besoins.

Il est utile de savoir calculer à la main, mais en situation réelle on vérifie toujours avec un outil.

Terminal Debian
sudo apt install ipcalc
ipcalc -n 192.168.10.77/26

Exemple de sortie (l’option -n retire les couleurs) :

Address: 192.168.10.77 11000000.10101000.00001010.01 001101
Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000
Wildcard: 0.0.0.63 00000000.00000000.00000000.00 111111
=>
Network: 192.168.10.64/26 11000000.10101000.00001010.01 000000
HostMin: 192.168.10.65 11000000.10101000.00001010.01 000001
HostMax: 192.168.10.126 11000000.10101000.00001010.01 111110
Broadcast: 192.168.10.127 11000000.10101000.00001010.01 111111
Hosts/Net: 62 Class C, Private Internet

L’espace dans la colonne binaire montre exactement où passe la frontière entre réseau et hôte.

Windows (Invite de commandes ou PowerShell)
ipconfig
Terminal Debian
ip -4 address

Windows affiche le masque en décimal (Masque de sous-réseau . . : 255.255.255.0), Linux en notation CIDR (inet 192.168.1.20/24). C’est la même information.

Attribuer l’adresse réseau ou le broadcast à une machine. Avec un /26, 192.168.1.64 et 192.168.1.127 ne sont pas des adresses d’hôte. Windows refusera l’adresse réseau avec un message d’erreur ; d’autres équipements l’accepteront et ne fonctionneront pas.

Oublier que le masque doit être le même partout. Si un poste est en /24 et l’autre en /25 dans la même salle, ils ne « voient » pas le réseau de la même façon. Le ping peut marcher dans un sens et pas dans l’autre.

Faire le calcul du bloc sur le mauvais octet. Le nombre magique se calcule sur l’octet où le masque n’est ni 255 ni 0. Avec un /20, c’est le 3ᵉ octet, pas le 4ᵉ.

Placer les petits réseaux en premier en VLSM. Les blocs se retrouvent mal alignés et les adresses se chevauchent. Toujours trier du plus grand au plus petit.

Confondre nombre d’adresses et nombre d’hôtes. Un /24 contient 256 adresses mais seulement 254 hôtes.

Essayez d’abord sans regarder la correction, avec la méthode du nombre magique.

Exercice 1. Donnez le réseau, le broadcast, la plage utilisable et le nombre d’hôtes de 172.16.33.10/20.

Correction

Masque /20 = 255.255.240.0. Octet intéressant : le 3ᵉ, bloc de 256 − 240 = 16. Les réseaux sont 172.16.0.0, 172.16.16.0, 172.16.32.0, 172.16.48.0… 33 est entre 32 et 47.

  • Réseau : 172.16.32.0/20
  • Plage utilisable : 172.16.32.1 à 172.16.47.254
  • Broadcast : 172.16.47.255
  • Hôtes : 2¹² − 2 = 4 094

Exercice 2. Quel masque (en CIDR et en décimal) faut-il au minimum pour un réseau de 50 postes ?

Correction

Il faut 2ⁿ − 2 ≥ 50. Avec n = 5 : 30, trop peu. Avec n = 6 : 62, ça convient. 6 bits d’hôte, donc 32 − 6 = 26 bits de réseau : /26, soit 255.255.255.192.

Exercice 3. Les machines 10.10.10.14/28 et 10.10.10.17/28 peuvent-elles communiquer sans routeur ?

Correction

/28 donne des blocs de 16 : .0, .16, .32… 10.10.10.14 est dans le réseau 10.10.10.0, 10.10.10.17 dans le réseau 10.10.10.16. Non, elles sont dans deux réseaux différents.

Exercice 4. Découpez 192.168.20.0/24 en 8 sous-réseaux de même taille. Donnez le masque et les trois premiers réseaux.

Correction

8 = 2³, on emprunte 3 bits : /27 (255.255.255.224), blocs de 32, 30 hôtes chacun.

  • 192.168.20.0/27 : .1 à .30, broadcast .31
  • 192.168.20.32/27 : .33 à .62, broadcast .63
  • 192.168.20.64/27 : .65 à .94, broadcast .95

Exercice 5. Un poste Windows affiche l’adresse 169.254.12.40. Que se passe-t-il ?

Correction

C’est une adresse APIPA : le poste est configuré en DHCP mais n’a reçu aucune réponse d’un serveur DHCP. Il faut vérifier le câble ou la carte réseau virtuelle, le VLAN, puis que le serveur DHCP fonctionne et que son étendue n’est pas pleine.

  • Le masque générique (wildcard). C’est l’inverse du masque : 0.0.0.63 pour un /26. Vous le retrouverez dans les ACL et la configuration OSPF des équipements Cisco.
  • La supernet ou agrégation de routes. L’opération inverse du découpage : regrouper 192.168.0.0/24 et 192.168.1.0/24 en une seule route 192.168.0.0/23.
  • IPv6. Les adresses passent à 128 bits et le découpage se fait presque toujours en /64. Un article dédié viendra plus tard.

La suite logique de cet article est le montage de votre lab de TP, pour mettre ces calculs en pratique sur de vraies machines virtuelles.

Contenu sous licence CC BY-SA 4.0, écrit par les bénévoles de l’association RootLab.