Adresses IP, masques et sous-réseaux
Ce qu'est vraiment une adresse IPv4, comment un masque découpe un réseau, et les plages à reconnaître au premier coup d'œil.
Elouan
Série Les fondations du réseau · article 1 sur 7
Toute investigation réseau commence par une question simple : d’où vient ce trafic, et où va-t-il ? Pour y répondre, il faut lire une adresse IP aussi naturellement qu’un numéro de téléphone. C’est l’objet de ce premier article.
Une adresse IP, c’est un nombre
Une adresse IPv4 n’est rien d’autre qu’un nombre de 32 bits. Pour que ce soit lisible, on le découpe en 4 paquets de 8 bits (des octets), et on écrit chaque octet en décimal, séparé par des points :
11000000.10101000.00000001.00001010
192 . 168 . 1 . 10
Chaque octet va donc de 0 à 255 (2^8 = 256 valeurs). Une adresse comme 192.168.1.300 est invalide : 300 ne tient pas sur 8 bits.
Avec 32 bits, on peut écrire environ 4,3 milliards d’adresses. C’est trop peu pour la planète entière, ce qui explique deux choses que tu croiseras partout : les adresses privées combinées au NAT, et l’arrivée d’IPv6.
Le masque : où s’arrête le réseau
Une adresse IP se lit en deux parties :
- la partie réseau, commune à toutes les machines d’un même réseau ;
- la partie hôte, propre à chaque machine.
Le masque de sous-réseau dit où se trouve la frontière. On l’écrit soit en décimal (255.255.255.0), soit en notation CIDR : /24 signifie « les 24 premiers bits sont la partie réseau ».
| Notation CIDR | Masque décimal | Adresses | Hôtes utilisables |
|---|---|---|---|
/8 | 255.0.0.0 | 16 777 216 | 16 777 214 |
/16 | 255.255.0.0 | 65 536 | 65 534 |
/24 | 255.255.255.0 | 256 | 254 |
/25 | 255.255.255.128 | 128 | 126 |
/26 | 255.255.255.192 | 64 | 62 |
/27 | 255.255.255.224 | 32 | 30 |
/30 | 255.255.255.252 | 4 | 2 |
/32 | 255.255.255.255 | 1 | 1 (une seule machine) |
La formule à connaître : nombre d’hôtes = 2^(32 − préfixe) − 2.
On retire 2 parce que, dans chaque réseau, deux adresses sont réservées :
- la première est l’adresse du réseau lui-même (ex.
192.168.1.0) ; - la dernière est l’adresse de broadcast, qui s’adresse à toutes les machines du réseau (ex.
192.168.1.255).
Calculer un sous-réseau de tête
Le poste 192.168.1.77/26. Un /26 fait des blocs de 64 adresses : 0–63, 64–127, 128–191, 192–255. 77 tombe dans le bloc 64–127. Le réseau est donc 192.168.1.64, le broadcast 192.168.1.127, et les hôtes vont de .65 à .126.
Même réseau ou pas ?
Quand une machine veut parler à une autre, elle se pose une seule question : est-ce que la destination est dans mon réseau ? Pour le savoir, elle applique son masque (un ET logique bit à bit) à sa propre adresse et à celle de la destination.
- Si le résultat est le même, elle envoie directement le paquet sur le réseau local (après une résolution ARP, voir l’article sur ARP).
- Sinon, elle envoie le paquet à sa passerelle par défaut, c’est-à-dire au routeur.
C’est pour ça qu’un masque mal configuré provoque des pannes étranges : la machine croit qu’une destination est locale alors qu’elle ne l’est pas, ou l’inverse.
Les plages à reconnaître au premier coup d’œil
Qu’on administre un réseau, qu’on configure un pare-feu ou qu’on lise des journaux, il faut savoir d’un coup d’œil si une adresse est interne, externe ou spéciale. Ces plages sont à connaître par cœur.
| Plage | Usage | À retenir |
|---|---|---|
10.0.0.0/8 | Privée (RFC 1918) | Grands réseaux d’entreprise |
172.16.0.0/12 | Privée (RFC 1918) | De 172.16.0.0 à 172.31.255.255 seulement |
192.168.0.0/16 | Privée (RFC 1918) | Box, petits réseaux |
127.0.0.0/8 | Boucle locale (loopback) | La machine se parle à elle-même |
169.254.0.0/16 | Lien local (APIPA) | Pas de réponse du DHCP |
100.64.0.0/10 | NAT de l’opérateur (CGNAT) | Adresse partagée chez un FAI |
224.0.0.0/4 | Multicast | Un émetteur, plusieurs destinataires choisis |
0.0.0.0 | Adresse non spécifiée | Selon le contexte : « toutes les interfaces » ou « pas encore d’adresse » |
255.255.255.255 | Broadcast limité | Tout le réseau local |
Piège classique
172.16.0.0/12 ne couvre pas toutes les adresses qui commencent par 172. Elle s’arrête à 172.31.255.255. Une adresse en 172.32.x.x ou 172.15.x.x est publique.
Pourquoi les adresses privées comptent en investigation
Les adresses privées ne sont pas routées sur Internet. Un même 192.168.1.10 existe dans des millions de foyers. Conséquences pratiques :
- une adresse privée dans un journal désigne forcément une machine interne (ou un VPN, un conteneur, une VM) ;
- pour savoir quelle machine se cache derrière, il faut croiser avec le DHCP, l’inventaire ou l’EDR, parce qu’une adresse peut changer de propriétaire ;
- une connexion depuis Internet vers ton réseau arrive avec l’adresse publique de ton pare-feu ou de ton NAT, jamais directement sur l’adresse privée.
0.0.0.0 et 127.0.0.1 : la question des services exposés
Quand tu regardes quels ports écoutent sur une machine (netstat -ano sous Windows, ss -tulpn sous Linux), regarde surtout l’adresse d’écoute :
TCP 127.0.0.1:5432 0.0.0.0:0 LISTENING → base de données joignable en local uniquement
TCP 0.0.0.0:5432 0.0.0.0:0 LISTENING → joignable depuis toutes les interfaces, donc le réseau
0.0.0.0 en écoute veut dire toutes les interfaces. C’est souvent ce qui transforme un service de développement en porte ouverte.
Un mot sur IPv6
IPv6 utilise des adresses de 128 bits, écrites en 8 groupes hexadécimaux séparés par :. On peut abréger une suite de groupes nuls par ::, une seule fois par adresse.
2001:0db8:0000:0000:0000:ff00:0042:8329 → 2001:db8::ff00:42:8329
| IPv6 | Équivalent IPv4 / rôle |
|---|---|
::1 | Boucle locale (comme 127.0.0.1) |
fe80::/10 | Lien local (le rôle d’APIPA, mais toujours présent) |
fc00::/7 | Adresses locales uniques, l’équivalent des plages privées |
:: | Adresse non spécifiée (comme 0.0.0.0) |
IPv6 est souvent oublié en défense
Windows active IPv6 par défaut et le préfère à IPv4. Une règle de pare-feu ou une supervision qui ne regarde qu’IPv4 laisse un angle mort. Certaines attaques en interne, comme l’abus de DHCPv6 avec l’outil mitm6, exploitent justement cet oubli.
Dans la suite de la série, tu vas voir comment ces adresses sont transportées couche par couche (le modèle OSI), puis comment les ports permettent de savoir quel service est contacté.
L'essentiel
- Une adresse IPv4 fait 32 bits, écrits en 4 octets décimaux (0 à 255). Une adresse IPv6 fait 128 bits, écrits en hexadécimal.
- Le masque sépare la partie réseau de la partie hôte.
/24= 24 bits de réseau =255.255.255.0. - Nombre d'hôtes utilisables = 2^(32 − préfixe) − 2 (on retire l'adresse de réseau et le broadcast). Un
/24donne 254 hôtes. - Plages privées (RFC 1918) :
10.0.0.0/8,172.16.0.0/12(172.16 à 172.31),192.168.0.0/16. 127.0.0.0/8= boucle locale,169.254.0.0/16= APIPA (pas de réponse DHCP),0.0.0.0= « toutes les interfaces » ou « aucune adresse ».- Deux machines sont sur le même réseau si (adresse ET masque) donne le même résultat. Sinon, le trafic passe par la passerelle.
Idées reçues
Combien d'hôtes peut-on adresser dans un /24 ?
L'erreur courante. Répondre 256.
En réalité. 254. Il y a 256 adresses, mais la première (adresse de réseau, ex. `192.168.1.0`) et la dernière (broadcast, ex. `192.168.1.255`) ne sont pas attribuables à une machine.
`172.32.10.5` est-elle une adresse privée ?
L'erreur courante. Dire oui parce qu'elle commence par 172.
En réalité. Non. La plage privée est `172.16.0.0/12`, c'est-à-dire de `172.16.0.0` à `172.31.255.255`. `172.32.x.x` est une adresse publique.
Un poste a l'adresse 169.254.12.7. Qu'est-ce que ça t'apprend ?
L'erreur courante. Penser à une adresse publique ou à une configuration manuelle.
En réalité. C'est une adresse APIPA (lien local, `169.254.0.0/16`) que Windows s'attribue tout seul quand il n'obtient pas de réponse DHCP. Le poste ne peut pas sortir de son segment : il faut regarder le DHCP, le câble, le VLAN ou le Wi-Fi.
Que signifie 0.0.0.0 dans la configuration d'un service qui écoute ?
L'erreur courante. Dire que le service n'écoute nulle part.
En réalité. Il écoute sur toutes les interfaces de la machine, donc potentiellement depuis le réseau. À l'inverse, `127.0.0.1` ne l'expose qu'en local. C'est une question fréquente quand on analyse un service exposé par erreur.
Pourquoi un serveur en 10.0.0.5 ne peut-il pas être joint directement depuis Internet ?
L'erreur courante. Parler uniquement du pare-feu.
En réalité. Parce que les adresses RFC 1918 ne sont pas routées sur Internet : aucun routeur public ne sait où les envoyer. Il faut une traduction d'adresse (NAT) ou un reverse proxy côté réseau de l'entreprise. Le pare-feu vient en plus.
Tester ses connaissances
Références
- Computer Networking : A Top-Down ApproachJames F. Kurose, Keith W. Ross · Pearson
- TCP/IP Illustrated, Volume 1 : The Protocols (2e éd.)Kevin R. Fall, W. Richard Stevens · Addison-Wesley