L’adressage IP, c’est ce qui permet aux machines de savoir où envoyer leurs paquets sans les abandonner dans le cyberespace avec une étiquette « bonne chance ».
Ordinateur, smartphone, serveur, imprimante, routeur, caméra IP ou grille-pain ayant reçu beaucoup trop de responsabilités : dès qu’un équipement communique avec le protocole IP, ses interfaces réseau ont besoin d’adresses utilisables dans le contexte de cette communication.
Sans adressage IP correctement configuré :
- pas de communication entre réseaux ;
- pas d’accès aux serveurs distants ;
- pas d’Internet ;
- et très rapidement quelqu’un dans le bureau demande si « le Wi-Fi est encore cassé ».
Une adresse IP indique où joindre une interface dans une architecture IP. Le routage détermine ensuite comment les paquets peuvent atteindre cette destination.
Une adresse IP n’identifie pas exactement une machine
On dit souvent :
« Chaque machine possède une adresse IP. »
C’est pratique pour débuter, mais techniquement un peu trop simplifié.
Les adresses IP sont associées aux interfaces réseau.
Un ordinateur portable peut par exemple posséder :
- une interface Ethernet ;
- une interface Wi-Fi ;
- une interface VPN ;
- plusieurs interfaces virtuelles créées par des hyperviseurs ou conteneurs.
Et chacune peut posséder une ou plusieurs adresses IP.
On peut donc parfaitement avoir :
Ethernet : 192.168.10.25
Wi-Fi : 192.168.20.41
VPN : 10.50.0.12
sur la même machine.
Une interface IPv6 possède même très couramment plusieurs adresses simultanément.
L’idée :
« Une machine = une IP. »
est donc surtout un modèle pédagogique.
Un peu comme :
« Un être humain = une adresse postale. »
Jusqu’au jour où il possède un domicile, un bureau et une boîte postale.
À quoi sert une adresse IP ?
Une adresse IP participe principalement à deux fonctions :
- identifier une destination ou une source dans l’espace d’adressage concerné ;
- permettre aux équipements réseau de déterminer où acheminer les paquets.
Elle contient donc une information permettant de distinguer :
- la partie correspondant au préfixe réseau ;
- la partie restante utilisée pour identifier une interface dans ce sous-réseau.
La frontière entre ces deux parties est déterminée par le préfixe CIDR, ou historiquement par un masque de sous-réseau.
L’adresse IP n’est pas une identité personnelle
Il faut également éviter une autre simplification :
« L’adresse IP identifie l’utilisateur. »
Pas directement.
Une adresse IP peut être :
- attribuée dynamiquement ;
- partagée par plusieurs machines derrière un NAT ;
- partagée par de nombreux abonnés derrière du CGNAT ;
- utilisée successivement par différentes machines ;
- associée à un VPN ou un proxy ;
- modifiée au cours du temps.
Une adresse IP constitue donc une information réseau, pas un numéro de carte d’identité humaine.
Dans certains contextes, des journaux suffisamment précis peuvent évidemment permettre de la corréler avec une connexion, un abonnement ou un équipement.
Mais :
203.0.113.42 = Gérard
n’est pas une propriété fondamentale du protocole IP.
L’adresse IP dans le modèle OSI
Dans le modèle OSI utilisé comme référence pédagogique, IP appartient à la :
Couche 3 : Réseau
Cette couche s’occupe notamment de l’adressage logique et du routage entre différents réseaux.
Une représentation très simplifiée :
Application
↓
Transport TCP / UDP
↓
Réseau IPv4 / IPv6
↓
Liaison Ethernet / Wi-Fi
↓
Support câble / fibre / radio
L’adresse MAC appartient au monde de la liaison locale.
L’adresse IP permet, elle, d’acheminer les paquets à travers plusieurs réseaux.
IP ne garantit pas que le paquet arrivera
IP fournit essentiellement un service de livraison de datagrammes en mode best effort.
Il peut essayer d’acheminer votre paquet.
Il ne promet pas :
- qu’il arrivera ;
- qu’il arrivera une seule fois ;
- qu’il arrivera dans l’ordre ;
- que le destinataire écoutera encore ;
- ni que le routeur du milieu aura passé une bonne journée.
Des protocoles comme TCP apportent ensuite d’autres garanties au-dessus d’IP.
IPv4 : 32 bits d’adresse
Une adresse IPv4 contient exactement :
32 bits
Elle est généralement représentée sous forme de quatre groupes de 8 bits, appelés octets :
192.168.1.10
Chaque octet peut prendre une valeur comprise entre :
0 et 255
car 8 bits permettent :
2^8 = 256 valeurs
Le nombre total de combinaisons IPv4 est donc :
2^32
= 4 294 967 296
soit environ 4,3 milliards d’adresses.
Cela semblait considérable lorsque le protocole a été conçu.
Puis l’humanité a décidé de connecter :
- plusieurs ordinateurs par personne ;
- des téléphones ;
- des téléviseurs ;
- des caméras ;
- des voitures ;
- des thermostats ;
- et, inévitablement, des ampoules.
Les 4,3 milliards ont alors commencé à paraître légèrement moins généreux.
Voir IPv4 en binaire
Prenons :
192.168.1.10
En binaire :
192 = 11000000
168 = 10101000
1 = 00000001
10 = 00001010
L’adresse complète est donc :
11000000.10101000.00000001.00001010
On n’écrit évidemment presque jamais les adresses IPv4 de cette manière.
Il reste néanmoins utile de comprendre cette représentation, car les masques et les préfixes CIDR sont fondamentalement des opérations sur des bits.
Le masque de sous-réseau
Une adresse seule ne suffit pas à déterminer son sous-réseau.
Il faut également connaître le masque ou, de manière moderne, la longueur du préfixe.
Par exemple :
Adresse : 192.168.1.10
Masque : 255.255.255.0
Ce masque vaut en binaire :
11111111.11111111.11111111.00000000
Les 24 premiers bits appartiennent au préfixe réseau.
On peut donc écrire beaucoup plus simplement :
192.168.1.10/24
CIDR : la notation moderne
CIDR — Classless Inter-Domain Routing permet d’indiquer explicitement combien de bits constituent le préfixe.
Quelques exemples :
| Préfixe | Masque IPv4 | Nombre total d’adresses |
|---|---|---|
/8 |
255.0.0.0 |
16 777 216 |
/16 |
255.255.0.0 |
65 536 |
/20 |
255.255.240.0 |
4 096 |
/24 |
255.255.255.0 |
256 |
/25 |
255.255.255.128 |
128 |
/26 |
255.255.255.192 |
64 |
/27 |
255.255.255.224 |
32 |
/28 |
255.255.255.240 |
16 |
/29 |
255.255.255.248 |
8 |
/30 |
255.255.255.252 |
4 |
/31 |
255.255.255.254 |
2 |
/32 |
255.255.255.255 |
1 |
Le principe général est :
Nombre d'adresses = 2^(32 - préfixe)
Exemple avec un /24
Prenons :
192.168.1.10/24
Le préfixe contient 24 bits.
Il reste :
32 - 24 = 8 bits
pour les adresses du sous-réseau.
Donc :
2^8 = 256 adresses
Le sous-réseau est :
192.168.1.0/24
Dans un sous-réseau IPv4 classique de ce type :
Adresse réseau : 192.168.1.0
Premier hôte : 192.168.1.1
Dernier hôte : 192.168.1.254
Broadcast : 192.168.1.255
Nous obtenons donc :
254 adresses d'hôtes utilisables
Pourquoi 254 et pas 256 ?
Dans un sous-réseau IPv4 classique possédant suffisamment de bits d’hôte, deux valeurs ont un rôle particulier :
- tous les bits d’hôte à zéro : adresse du réseau ;
- tous les bits d’hôte à un : adresse de broadcast dirigé du sous-réseau.
On utilise donc souvent la formule :
Hôtes = 2^(bits hôte) - 2
Mais attention :
Cette formule possède des exceptions modernes importantes.
/31 et /32 : les exceptions à la règle du « moins deux »
Un préfixe :
/31
possède seulement deux adresses.
Sur une liaison point-à-point compatible, les deux peuvent être utilisées comme extrémités de la liaison.
Il n’est donc pas correct de calculer :
2 - 2 = 0 hôte
et d’en conclure que les /31 ne servent à rien.
Ils sont notamment utilisés pour économiser de l’espace IPv4 sur les liaisons entre routeurs.
Un :
/32
représente quant à lui une route vers une seule adresse.
Le monde réel a donc, comme souvent, attendu que vous appreniez une formule avant de vous présenter ses exceptions.
Exemple de subnetting avec un /26
Prenons le réseau :
192.168.10.0/24
et découpons-le en sous-réseaux :
/26
Un /26 contient :
2^(32 - 26)
= 64 adresses
Les sous-réseaux commencent donc tous les 64 :
192.168.10.0/26
192.168.10.64/26
192.168.10.128/26
192.168.10.192/26
Pour 192.168.10.64/26
Réseau : 192.168.10.64
Premier hôte : 192.168.10.65
Dernier hôte : 192.168.10.126
Broadcast : 192.168.10.127
Le sous-réseau contient :
64 adresses
62 hôtes classiques utilisables
Voilà le subnetting dans sa forme essentielle.
Pas de magie.
Seulement des puissances de deux, auxquelles les administrateurs réseau ont développé une relation émotionnelle assez particulière.
Pourquoi le masque est indispensable
Prenons deux machines :
PC1 : 192.168.1.10
PC2 : 192.168.1.200
Avec :
/24
elles considèrent normalement qu’elles appartiennent au même réseau :
192.168.1.0/24
Mais si PC1 utilise :
192.168.1.10/25
son réseau est :
192.168.1.0/25
qui couvre :
192.168.1.0 à 192.168.1.127
Pour lui :
192.168.1.200
n’est donc plus une destination locale.
Il essaiera de l’atteindre via son routage.
Deux machines peuvent ainsi avoir des adresses qui « se ressemblent » et pourtant ne pas être d’accord sur la topologie du réseau.
Les classes A, B et C : utiles uniquement pour comprendre l’histoire
Les premiers plans d’adressage IPv4 utilisaient des classes.
Historiquement :
| Classe | Premier octet | Préfixe implicite historique |
|---|---|---|
| A | 0 à 127 | /8 |
| B | 128 à 191 | /16 |
| C | 192 à 223 | /24 |
| D | 224 à 239 | Multicast |
| E | 240 à 255 | Réservé / usages spéciaux |
Mais plusieurs blocs à l’intérieur de ces plages possèdent évidemment des usages spéciaux.
Par exemple :
0.0.0.0/8est réservé à des usages particuliers ;127.0.0.0/8est réservé au loopback.
On ne doit donc pas lire le tableau historique comme une liste d’adresses toutes attribuables à des machines.
Les classes sont obsolètes
Aujourd’hui, on ne devrait plus concevoir un plan d’adressage en disant :
« Je vais créer un réseau de classe C. »
On dira plutôt :
192.168.40.0/24
ou :
10.40.32.0/20
La longueur du préfixe est explicite.
Elle n’est plus déduite du premier octet.
Les classes restent utiles pour :
- comprendre les anciens documents ;
- comprendre l’histoire d’IPv4 ;
- et reconnaître immédiatement qu’un tutoriel réseau demandant de « choisir votre classe C » a probablement connu Netscape Navigator.
Les adresses privées IPv4
Trois blocs sont réservés aux réseaux privés :
| Préfixe | Plage |
|---|---|
10.0.0.0/8 |
10.0.0.0 – 10.255.255.255 |
172.16.0.0/12 |
172.16.0.0 – 172.31.255.255 |
192.168.0.0/16 |
192.168.0.0 – 192.168.255.255 |
Il vaut mieux les appeler :
blocs privés RFC 1918
et non :
classe A privée
classe B privée
classe C privée
Cette ancienne terminologie continue de circuler, mais elle mélange inutilement le vieux système des classes avec le fonctionnement CIDR moderne.
Une adresse privée peut parfaitement être routée
On lit souvent :
« Les adresses privées ne sont pas routables. »
Ce n’est pas exactement correct.
Un routeur d’entreprise peut parfaitement acheminer :
10.10.0.0/16
vers un autre site privé.
On peut ainsi construire de très grands réseaux internes utilisant exclusivement des adresses RFC 1918.
Ce qu’il faut dire est plutôt :
Les préfixes RFC 1918 ne possèdent pas de signification globale et ne doivent pas être propagés comme routes ordinaires sur l’Internet public.
Ils sont routables dans votre infrastructure.
Ils ne sont pas destinés à être routés globalement sur Internet.
Les adresses publiques
Une adresse IPv4 globalement routable doit provenir d’un espace d’adressage correctement alloué ou assigné.
Dans la pratique, les adresses sont notamment distribuées à travers :
- l’IANA ;
- les registres Internet régionaux ;
- les opérateurs ;
- les fournisseurs d’accès ;
- les organisations disposant de leurs propres ressources d’adressage.
On rencontre également un marché de transfert d’adresses IPv4 en raison de leur rareté.
Mais résumer cela à :
« Les adresses publiques sont celles qu’on achète. »
est un peu rapide.
Votre box Internet peut recevoir dynamiquement une adresse publique de votre opérateur sans que vous ayez acheté cette adresse comme un terrain constructible.
NAT : quand plusieurs machines partagent une adresse publique
Dans beaucoup de réseaux IPv4 domestiques ou professionnels :
PC 192.168.1.20
Téléphone 192.168.1.21
Console 192.168.1.22
NAS 192.168.1.23
communiquent avec Internet derrière une adresse publique commune.
Un routeur effectue alors généralement une forme de :
NAT / NAPT / PAT
de façon simplifiée :
192.168.1.20:51000
↓
203.0.113.50:62001
↓
Internet
Le routeur conserve une table permettant d’associer les connexions internes aux connexions externes.
C’est l’une des raisons pour lesquelles :
« Cette IP publique correspond à cette machine. »
n’est pas forcément vrai.
Derrière cette adresse peuvent se trouver plusieurs dizaines d’équipements.
Le NAT n’est pas un pare-feu
Le NAT peut avoir pour effet pratique de rendre certaines connexions entrantes impossibles en l’absence d’état ou de règle de traduction.
Mais il ne faut pas confondre :
traduction d'adresses
et :
politique de sécurité réseau
Un pare-feu possède précisément pour fonction de décider :
- quels flux sont autorisés ;
- quels flux sont bloqués ;
- dans quelles directions ;
- selon quelles règles.
Le NAT règle principalement un problème d’adressage et de traduction.
La sécurité mérite un outil qui a effectivement lu sa fiche de poste.
CGNAT : même votre adresse publique peut être partagée
Face à la pénurie d’IPv4, certains opérateurs utilisent du :
Carrier-Grade NAT
CGNAT
Un espace spécial est notamment prévu pour cela :
100.64.0.0/10
Il couvre :
100.64.0.0
à
100.127.255.255
Cet espace n’est pas un quatrième bloc privé RFC 1918.
Il est destiné notamment aux réseaux des fournisseurs utilisant des mécanismes de partage d’adresses.
On peut donc obtenir une situation :
PC
↓
NAT de la box
↓
adresse CGNAT
↓
NAT de l'opérateur
↓
adresse publique
↓
Internet
Deux NAT pour le prix d’un.
Les amateurs de redirections de ports apprécient particulièrement cette architecture.
0.0.0.0 : l’adresse qui dépend beaucoup du contexte
L’adresse :
0.0.0.0
possède plusieurs usages particuliers selon le contexte.
Elle peut notamment représenter une adresse source non encore déterminée.
Par exemple, un client DHCP qui ne possède pas encore d’adresse IPv4 doit tout de même commencer sa conversation quelque part.
Dans une table de routage, on rencontre aussi :
0.0.0.0/0
qui représente :
toutes les destinations IPv4
et sert typiquement pour la route par défaut.
Dans certaines API serveur, écouter sur :
0.0.0.0
signifie également écouter sur toutes les adresses IPv4 locales appropriées.
Même notation.
Trois contextes.
Parce qu’un seul sens aurait été excessivement confortable.
127.0.0.1 : localhost, mais pas seulement
L’adresse la plus connue du monde IPv4 est probablement :
127.0.0.1
Elle représente le loopback.
Un paquet envoyé à cette adresse revient vers la machine elle-même.
Mais ce n’est pas uniquement :
127.0.0.1
qui est réservé.
Le bloc entier :
127.0.0.0/8
est réservé au loopback IPv4.
Ainsi :
127.12.34.56
appartient également au bloc loopback.
Dans la pratique, 127.0.0.1 reste de loin l’adresse utilisée conventionnellement.
localhost et 127.0.0.1 ne sont pas exactement la même chose
localhost est un nom.
127.0.0.1 est une adresse IPv4.
Sur une machine moderne, le nom :
localhost
peut également correspondre à l’adresse IPv6 :
::1
Dire :
« localhost est 127.0.0.1 »
reste donc une approximation pratique mais incomplète.
169.254.0.0/16 : IPv4 Link-Local
Lorsque vous voyez :
169.254.x.x
sur un poste qui devait normalement recevoir une adresse via DHCP, commencez à suspecter un problème de configuration réseau.
Le bloc :
169.254.0.0/16
est réservé à l’adressage IPv4 Link-Local.
Un équipement peut sélectionner automatiquement une adresse de ce bloc lorsqu’aucune configuration routable appropriée n’est disponible.
Les adresses IPv4 Link-Local sont utilisables uniquement sur le lien local.
Elles ne doivent pas être acheminées par les routeurs.
APIPA : le nom Windows d’un concept plus général
Microsoft utilise notamment le terme :
Automatic Private IP Addressing
APIPA
pour son mécanisme d’auto-configuration IPv4 Link-Local.
Mais :
169.254.0.0/16 n’est pas un concept exclusivement Windows.
L’adressage IPv4 Link-Local est normalisé et utilisé par différents systèmes.
Si votre poste d’entreprise affiche :
169.254.83.17
alors qu’il devait recevoir :
10.20.30.x
le message implicite est souvent :
« J’ai essayé de trouver mon DHCP. Nous devons parler. »
Les adresses multicast IPv4
Le bloc :
224.0.0.0/4
soit :
224.0.0.0
à
239.255.255.255
est destiné au multicast IPv4.
Le multicast permet d’envoyer un flux vers un groupe de récepteurs intéressés.
Conceptuellement :
Unicast : un → un
Multicast : un → groupe
Broadcast : un → tous sur le domaine concerné
Le multicast est utilisé par différents protocoles réseau, services de découverte et applications.
255.255.255.255 : limited broadcast
L’adresse :
255.255.255.255
est le limited broadcast IPv4.
Elle cible les hôtes du lien local approprié et n’est pas transférée normalement par les routeurs.
Elle apparaît notamment dans certains mécanismes de démarrage et de configuration réseau.
Le paquet arrive donc en criant :
« Est-ce qu’il y a quelqu’un sur ce réseau ? »
et le routeur répond :
« Oui, mais tu ne sortiras pas d’ici. »
Le broadcast d’un sous-réseau
Pour :
192.168.10.0/24
l’adresse de broadcast dirigé est :
192.168.10.255
Pour :
192.168.10.64/26
elle devient :
192.168.10.127
L’adresse de broadcast dépend donc du préfixe.
Le dernier octet n’est pas systématiquement :
255
contrairement à une légende qui continue de rôder dans certains cours d’introduction.
Adresses réservées à la documentation
Lorsque vous écrivez une documentation, évitez d’inventer une adresse publique appartenant potentiellement à quelqu’un.
IPv4 réserve notamment trois blocs pour les exemples :
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
On peut donc écrire tranquillement :
203.0.113.42
dans un tutoriel.
Plutôt que d’utiliser l’adresse réelle d’un serveur bulgare qui se demande soudainement pourquoi quatorze formations réseau françaises lui envoient des pings.
Adresse statique et adresse dynamique
Une adresse IP peut être configurée de plusieurs manières.
Configuration statique
L’administrateur définit manuellement :
- l’adresse ;
- le préfixe ou masque ;
- la passerelle ;
- les serveurs DNS.
Par exemple :
Adresse : 192.168.10.20
Préfixe : /24
Passerelle : 192.168.10.1
DNS : 192.168.10.10
Une adresse statique est courante pour certains équipements d’infrastructure :
- routeurs ;
- serveurs ;
- pare-feu ;
- équipements réseau.
DHCP : automatiser la configuration IPv4
DHCP — Dynamic Host Configuration Protocol permet d’attribuer automatiquement la configuration réseau aux clients.
Le serveur peut fournir notamment :
- une adresse IPv4 ;
- un masque ;
- une passerelle par défaut ;
- des serveurs DNS ;
- une durée de bail ;
- d’autres paramètres selon le besoin.
Le fameux DORA
La séquence initiale classique est souvent résumée par :
D - DHCPDISCOVER
O - DHCPOFFER
R - DHCPREQUEST
A - DHCPACK
Soit :
- le client cherche un serveur DHCP ;
- un serveur propose une configuration ;
- le client demande l’offre choisie ;
- le serveur confirme le bail.
Quatre messages pour obtenir une adresse.
Ce qui reste remarquablement efficace comparé au processus humain nécessaire pour faire attribuer une adresse de bureau dans certaines entreprises.
Une adresse DHCP n’est pas forcément imprévisible
Un serveur DHCP peut également posséder des :
réservations
permettant d’attribuer régulièrement la même adresse à un client déterminé selon la politique utilisée.
On peut ainsi bénéficier :
- d’une gestion centralisée ;
- d’une adresse stable ;
- sans configurer manuellement chaque machine.
La passerelle par défaut
Supposons :
PC :
192.168.10.20/24
Passerelle :
192.168.10.1
Le PC veut joindre :
192.168.10.50
Cette destination appartient au même sous-réseau.
Le PC peut donc tenter une communication directe sur le lien local.
Mais pour :
8.8.8.8
la destination n’appartient pas à :
192.168.10.0/24
Le système consulte alors sa table de routage et utilisera généralement sa route par défaut :
0.0.0.0/0 via 192.168.10.1
La passerelle ne sert pas pour toutes les communications
C’est un point essentiel.
Pour parler à une machine du même sous-réseau :
192.168.10.20
→
192.168.10.50
le trafic n’a normalement pas besoin de passer par la passerelle.
Pour joindre un réseau différent :
192.168.10.20
→
10.50.0.20
une route est nécessaire.
La passerelle par défaut représente simplement :
« Si aucune route plus précise ne correspond, essaye par ici. »
Le routage utilise la route la plus spécifique
Supposons une table contenant :
10.0.0.0/8 via Routeur A
10.20.0.0/16 via Routeur B
10.20.30.0/24 via Routeur C
0.0.0.0/0 via Routeur D
Pour joindre :
10.20.30.42
les quatre routes pourraient sembler correspondre à différents degrés.
La route la plus spécifique est :
10.20.30.0/24
Elle sera donc privilégiée selon le principe du longest prefix match.
Plus le préfixe est long, plus la route décrit précisément la destination.
Le routeur ne demande pas laquelle lui inspire le plus confiance.
Il possède heureusement des critères plus déterministes.
ARP : trouver la MAC correspondant à l’IPv4 locale
Sur un réseau Ethernet IPv4, connaître l’adresse IP d’une destination locale ne suffit pas.
Il faut également pouvoir envoyer une trame Ethernet à une adresse MAC.
C’est notamment le rôle de :
ARP
Address Resolution Protocol
Supposons :
192.168.1.10 veut joindre 192.168.1.20
Le premier poste peut demander sur le réseau local, de manière simplifiée :
« Qui possède 192.168.1.20 ? »
La machine concernée répond avec son adresse MAC.
Le système conserve alors temporairement cette association dans son cache voisin/ARP.
Pour une destination distante, ARP cherche la passerelle
Si :
192.168.1.10
veut joindre :
203.0.113.80
il ne lance pas un ARP mondial pour découvrir la MAC du serveur distant.
ARP ne traverse pas les routeurs.
Le poste cherche plutôt l’adresse MAC de son prochain saut, par exemple :
192.168.1.1
La trame Ethernet va au routeur.
Le paquet IP conserve comme destination :
203.0.113.80
Le routeur poursuit ensuite l’acheminement.
IP et MAC : deux adresses, deux rôles
| Adresse | Rôle simplifié |
|---|---|
| IP | Adressage logique et routage entre réseaux |
| MAC | Adressage de liaison sur le réseau local concerné |
Comparer IP et MAC revient un peu à comparer :
- l’adresse postale de votre destination ;
- le numéro du quai utilisé pour l’étape locale du transport.
Les deux participent au voyage.
Ils ne décrivent pas la même chose.
DNS : les humains préfèrent les noms
Personne n’a particulièrement envie de mémoriser :
142.250.x.x
pour visiter un service Internet.
Le DNS permet de travailler avec des noms :
www.example.com
et de résoudre ces noms vers des adresses IP.
Il faut cependant distinguer :
DNS répond à « quelle adresse correspond à ce nom ? »
Le routage répond à « comment atteindre cette adresse ? »
Un problème DNS peut donc donner l’impression que « le réseau est coupé » alors que la connectivité IP fonctionne parfaitement.
Le diagnostic classique : IP fonctionne, nom échoue
Si :
ping 1.1.1.1
fonctionne mais :
ping example.com
échoue, la connectivité IP existe peut-être encore.
Il faut alors examiner :
- les serveurs DNS configurés ;
- la résolution DNS ;
- le pare-feu ;
- la disponibilité du résolveur.
Le réseau n’est pas nécessairement mort.
Il a peut-être simplement oublié les noms.
L’épuisement IPv4
Les 4,3 milliards de combinaisons IPv4 ne sont pas toutes disponibles pour des hôtes publics.
Une partie importante de l’espace est :
- réservée ;
- utilisée pour des fonctions spéciales ;
- déjà attribuée ;
- conservée pour certains usages particuliers.
Le pool libre central d’IPv4 a été épuisé depuis longtemps.
Les opérateurs utilisent donc différents mécanismes pour continuer à faire fonctionner IPv4 :
- NAT ;
- CGNAT ;
- transferts de blocs existants ;
- réutilisation d’adresses ;
- déploiement parallèle d’IPv6.
IPv4 n’est pas mort.
Il est simplement devenu ce locataire historique que personne n’arrive à faire déménager alors que l’immeuble manque de chambres.
IPv6 : passer de 32 à 128 bits
IPv6 utilise :
128 bits
au lieu des 32 bits d’IPv4.
Le nombre théorique d’adresses possibles est :
2^128
soit environ :
3,4 × 10^38
Une quantité suffisamment importante pour que l’objectif ne soit plus de recycler obsessionnellement la même adresse publique entre quatre cents clients.
Il n’est toutefois pas très utile de comparer ce nombre au nombre de grains de sable de la Terre.
Les ingénieurs réseau disposent déjà de suffisamment de métaphores pour éviter d’impliquer les plages.
Notation IPv6
Une adresse IPv6 est généralement écrite sous forme de huit groupes hexadécimaux de 16 bits :
2001:0db8:0000:0000:0000:ff00:0042:8329
Les zéros en tête d’un groupe peuvent être supprimés :
2001:db8:0:0:0:ff00:42:8329
Et une suite continue de groupes entièrement nuls peut être compressée une fois avec :
::
Nous obtenons :
2001:db8::ff00:42:8329
Le double deux-points ne peut apparaître qu’une fois
Écrire :
2001:db8::1::42
serait ambigu.
On ne saurait pas combien de groupes de zéros chaque :
::
représente.
Une adresse IPv6 ne peut donc utiliser cette compression qu’une seule fois.
L’hexadécimal était déjà suffisamment accueillant sans ajouter des énigmes d’interprétation.
Les préfixes IPv6
IPv6 utilise lui aussi la notation CIDR :
2001:db8:1234:5678::/64
Dans la très grande majorité des réseaux IPv6 classiques, le sous-réseau utilise une longueur :
/64
On obtient conceptuellement :
64 bits de préfixe
+
64 bits d'identifiant d'interface
IPv6 n’a donc pas repris la logique :
« Nous n’avons que 254 adresses, faites attention à ne pas gâcher la .73. »
Les priorités sont très différentes.
Les principales adresses IPv6
| Préfixe / adresse | Usage |
|---|---|
:: |
Adresse non spécifiée |
::1 |
Loopback |
fe80::/10 |
Link-Local |
fc00::/7 |
Unique Local Addresses |
2000::/3 |
Espace actuellement utilisé pour les allocations Global Unicast |
ff00::/8 |
Multicast |
:: : l’adresse IPv6 non spécifiée
L’équivalent conceptuel de l’adresse IPv4 non spécifiée est :
::
Elle signifie l’absence d’une adresse IPv6 utilisable dans les contextes prévus.
Elle ne doit pas être attribuée normalement à une interface comme adresse unicast classique.
::1 : le localhost IPv6
Le loopback IPv6 est :
::1
Il joue le même rôle conceptuel que :
127.0.0.1
en IPv4.
Donc :
ping ::1
consiste essentiellement à vérifier que votre machine est toujours capable de communiquer avec elle-même.
Une compétence dont certains humains pourraient également tirer bénéfice.
Les adresses Link-Local IPv6
Les interfaces IPv6 utilisent normalement une adresse Link-Local appartenant à :
fe80::/10
Ces adresses servent notamment à des opérations locales comme :
- Neighbor Discovery ;
- autoconfiguration ;
- communication sur le lien ;
- échanges avec les routeurs voisins.
Elles ne sont pas transférées à travers les routeurs comme des adresses globales.
Contrairement à l’IPv4 Link-Local qui apparaît souvent comme mécanisme de secours, la Link-Local IPv6 fait partie du fonctionnement normal d’IPv6.
Pourquoi voit-on parfois un %12 après une IPv6 ?
Avec une adresse Link-Local :
fe80::1234:5678:abcd:ef01
la même adresse peut théoriquement exister sur plusieurs interfaces locales.
Le système doit donc parfois indiquer sur quelle interface l’utiliser.
Windows peut afficher :
fe80::1234:5678:abcd:ef01%12
Le :
%12
identifie la zone ou l’interface concernée.
Le pourcentage n’est pas une remise commerciale sur l’adresse IPv6.
Les Unique Local Addresses
IPv6 possède des adresses :
fc00::/7
appelées :
Unique Local Addresses
ULA
Pour les préfixes générés localement selon le mécanisme standard, on utilise en pratique le sous-espace :
fd00::/8
Ces adresses sont destinées aux communications locales ou privées et ne sont pas prévues pour être routées globalement sur Internet.
Elles remplissent certains rôles comparables à ceux des adresses privées IPv4, mais leur conception évite de simplement choisir :
fd00::1
dans toutes les entreprises de la planète.
Le préfixe est normalement construit avec une partie pseudo-aléatoire destinée à réduire les risques de collision lors d’une interconnexion de réseaux.
Global Unicast IPv6
Les adresses IPv6 globalement routables actuellement allouées proviennent principalement de :
2000::/3
Une machine peut alors recevoir une adresse ressemblant à :
2001:db8:1234:5678:4af1:8c2e:9421:7012
Attention : le préfixe :
2001:db8::/32
est justement réservé aux exemples et à la documentation.
Il est donc parfait pour cet article et nettement moins adapté à la construction du véritable réseau mondial de votre entreprise.
IPv6 n’utilise pas de broadcast
IPv6 a supprimé le mécanisme de broadcast IPv4.
À la place, il utilise notamment le :
multicast
Des groupes spéciaux permettent de cibler :
- tous les nœuds du lien ;
- tous les routeurs ;
- certains voisins ;
- différents services ou protocoles.
Le bloc multicast IPv6 est :
ff00::/8
IPv6 a donc décidé que hurler systématiquement à tout le monde n’était peut-être pas la manière la plus élégante d’administrer un réseau.
Neighbor Discovery remplace plusieurs mécanismes IPv4
IPv6 n’utilise pas ARP.
Il utilise le :
Neighbor Discovery Protocol
NDP
basé sur ICMPv6.
NDP participe notamment à :
- la découverte des voisins ;
- la résolution des adresses de liaison ;
- la découverte des routeurs ;
- l’apprentissage de certains préfixes ;
- la détection d’adresses en doublon.
Bloquer ICMPv6 sans discernement au nom de la sécurité est donc une excellente manière de découvrir qu’IPv6 utilise ICMP pour beaucoup plus de choses que répondre à ping.
SLAAC : IPv6 peut s’autoconfigurer
SLAAC — Stateless Address Autoconfiguration permet à un hôte IPv6 de construire automatiquement des adresses à partir d’informations reçues des routeurs.
Le mécanisme implique notamment des :
Router Advertisements
RA
Les routeurs annoncent des informations comme :
- les préfixes disponibles ;
- des durées de validité ;
- différents paramètres d’autoconfiguration.
Le poste peut alors construire une adresse utilisable sans qu’un serveur DHCPv6 doive obligatoirement lui attribuer directement cette adresse.
DHCPv6 existe quand même
IPv6 peut utiliser :
- SLAAC ;
- DHCPv6 ;
- les deux simultanément selon le besoin.
DHCPv6 n’est donc pas :
« le DHCP mais avec des adresses plus longues »
au sens strict.
L’architecture d’autoconfiguration IPv6 repose aussi fortement sur les Router Advertisements et Neighbor Discovery.
Une interface IPv6 peut avoir plusieurs adresses normales
Sur une même carte réseau, on peut très bien voir :
fe80::... Link-Local
2001:db8:... adresse stable
2001:db8:... adresse temporaire
Ce n’est pas forcément une erreur.
Le modèle IPv6 est prévu pour qu’une interface possède plusieurs adresses de différents types et différentes portées.
L’administrateur habitué à :
une IP, un masque, une passerelle
peut connaître un bref moment de contemplation existentielle devant :
ipconfig /all
sur un système dual-stack moderne.
IPv6 et NAT : la fin du raccourci obligatoire
IPv4 utilise massivement le NAT principalement parce que l’espace d’adressage public est devenu insuffisant pour fournir facilement une adresse publique à chaque équipement.
IPv6 possède suffisamment d’espace pour rendre cette stratégie inutile dans le fonctionnement normal.
Une machine peut donc utiliser une adresse globalement unique sans passer obligatoirement par une traduction d’adresse.
Mais cela ne signifie absolument pas :
« Toutes les machines IPv6 sont ouvertes à Internet. »
Un pare-feu IPv6 reste un pare-feu
On peut parfaitement avoir :
Adresse IPv6 globale
+
pare-feu bloquant les connexions entrantes non autorisées
La translation et le filtrage sont deux fonctions différentes.
Une machine peut avoir une adresse globalement routable tout en étant protégée par une politique :
Stateful firewall
Deny unsolicited inbound
Allow established/related
On récupère ainsi la sécurité de bordure voulue sans avoir à modifier les adresses de chaque paquet.
IPv6 ne signifie pas « plus d’anonymat »
L’idée :
« Avec IPv6, chaque appareil possède une adresse publique permanente, donc fini l’anonymat. »
est trop simpliste.
Les systèmes modernes peuvent utiliser des adresses IPv6 temporaires pour les connexions sortantes.
Ces adresses changent dans le temps afin de réduire certaines formes de corrélation fondées sur une adresse stable.
Cela ne rend évidemment pas un utilisateur invisible.
Cookies, comptes connectés, empreintes de navigateur, journaux des opérateurs et autres mécanismes continuent parfaitement d’exister.
Mais :
IPv6 ne supprime pas la confidentialité simplement parce qu’il évite le NAT.
Et inversement, être derrière du NAT IPv4 ne constitue pas un mécanisme universel d’anonymisation.
IPv4 et IPv6 peuvent fonctionner ensemble
La plupart des réseaux modernes peuvent être :
dual stack
c’est-à-dire utiliser simultanément :
- IPv4 ;
- IPv6.
Un ordinateur peut donc posséder :
192.168.1.20
2001:db8:1234::20
fe80::...
et sélectionner IPv4 ou IPv6 selon :
- les adresses du service distant ;
- la résolution DNS ;
- les politiques du système ;
- la connectivité disponible.
La migration vers IPv6 n’est donc pas nécessairement une grande cérémonie où l’on éteint IPv4 à 23 h 59 avant d’allumer IPv6 à minuit.
Les deux cohabitent depuis suffisamment longtemps pour avoir développé une relation de couple assez stable.
Quelques commandes utiles sous Windows
Afficher la configuration IP
ipconfig
Pour davantage de détails :
ipconfig /all
On y trouve notamment :
- les interfaces ;
- les adresses IPv4 ;
- les adresses IPv6 ;
- les masques ;
- les passerelles ;
- les serveurs DNS ;
- les informations DHCP.
PowerShell
Get-NetIPConfiguration
Pour les adresses :
Get-NetIPAddress
Pour les routes :
Get-NetRoute
Afficher la table de routage
route print
Afficher les voisins IPv4
arp -a
Tester une destination
ping 192.168.1.1
Observer le chemin
tracert example.com
Tester DNS
nslookup example.com
ou PowerShell :
Resolve-DnsName example.com
Quelques commandes utiles sous Linux
Afficher les adresses
ip addr
Version courte :
ip -br addr
Afficher les routes
ip route
Pour IPv6 :
ip -6 route
Afficher les voisins
ip neigh
Tester IPv4
ping -4 example.com
Tester IPv6
ping -6 example.com
Voir le chemin
tracepath example.com
ou, selon les outils installés :
traceroute example.com
Résolution DNS
getent hosts example.com
ou :
dig example.com
Diagnostic : le poste n’a pas Internet
Évitez de commencer par :
« Redémarre la box. »
Cette méthode possède certes un taux de réussite historique respectable, mais peu de valeur pédagogique.
1. Vérifier l’adresse
Windows :
ipconfig /all
Linux :
ip addr
Regardez :
- adresse ;
- préfixe ;
- état de l’interface.
2. Vérifier une éventuelle adresse 169.254.x.x
Si le poste devait utiliser DHCP et possède :
169.254.x.x
enquêtez notamment sur :
- DHCP ;
- VLAN ;
- câblage ;
- Wi-Fi ;
- relais DHCP ;
- configuration du switch.
3. Vérifier la passerelle
Windows :
ipconfig
Linux :
ip route
Vous devriez généralement retrouver une route par défaut.
Par exemple :
default via 192.168.1.1
4. Tester le localhost
ping 127.0.0.1
et éventuellement :
ping ::1
5. Tester sa passerelle
ping 192.168.1.1
6. Tester une adresse Internet
ping 1.1.1.1
selon ce que les politiques réseau autorisent.
7. Tester un nom DNS
nslookup example.com
Cette progression permet de déterminer à quelle couche le problème apparaît.
C’est généralement plus efficace que de modifier simultanément le DNS, la passerelle, le pilote réseau et trois clés de registre avant de regarder le câble.
Deux machines du même réseau ne communiquent pas
Supposons :
PC1 : 192.168.10.20/24
PC2 : 192.168.10.30/24
Elles devraient normalement considérer qu’elles appartiennent toutes les deux à :
192.168.10.0/24
Si elles ne communiquent pas, examinez :
- le masque réellement configuré ;
- le VLAN ;
- le pare-feu local ;
- la table ARP / voisins ;
- l’état du lien ;
- une éventuelle isolation Wi-Fi ;
- un conflit d’adresse.
La passerelle par défaut n’est pas le premier suspect pour une communication entre deux voisins du même sous-réseau.
Le mauvais masque : source de phénomènes paranormaux
Supposons :
PC1 : 192.168.1.10/24
PC2 : 192.168.1.200/25
PC1 pense :
192.168.1.200 est local
mais PC2 pense :
192.168.1.10 est sur un autre réseau
On obtient alors des comportements asymétriques particulièrement agréables à diagnostiquer.
Le genre de panne où :
« Ça marche dans un sens. »
devient soudain une phrase parfaitement rationnelle.
Le conflit d’adresse IP
Deux machines ne devraient pas utiliser la même adresse unicast sur le même réseau au même moment.
Par exemple :
PC1 : 192.168.1.50
PC2 : 192.168.1.50
peut entraîner :
- communications intermittentes ;
- entrées ARP qui changent ;
- messages de conflit ;
- connexions atteignant parfois la mauvaise machine.
Le réseau possède alors deux appartements portant le même numéro.
Le facteur Ethernet commence à perdre patience.
Une IP publique n’implique pas qu’un service soit accessible
Supposons qu’un serveur possède :
203.0.113.20
ou une véritable adresse globale équivalente.
Cela ne signifie pas automatiquement :
« Tout Internet peut se connecter à tous ses ports. »
Plusieurs mécanismes peuvent bloquer les connexions :
- pare-feu local ;
- pare-feu réseau ;
- ACL sur un routeur ;
- absence de route ;
- service non démarré ;
- service écoutant uniquement sur localhost ;
- politique opérateur.
L’adresse dit où se trouve la destination dans le système de routage.
Elle ne signe pas un contrat stipulant que la porte doit être ouverte.
Une adresse privée n’est pas automatiquement sécurisée
Inversement :
10.0.0.20
n’est pas « sécurisée » simplement parce qu’elle appartient à RFC 1918.
Si un attaquant est déjà présent sur votre réseau interne ou y accède via un VPN compromis, cette adresse devient parfaitement atteignable selon le routage et les règles en place.
Privé décrit une portée d’adressage. Pas un niveau de sécurité.
Les erreurs fréquentes à éviter
Dire « classe C » pour n’importe quel /24
Utilisez CIDR.
Dites :
192.168.50.0/24
Dire que toutes les adresses 172.x.x.x sont privées
Faux.
Le bloc privé est uniquement :
172.16.0.0/12
soit :
172.16.0.0
à
172.31.255.255
Par exemple :
172.40.10.20
n’appartient pas au bloc RFC 1918.
Dire que toutes les adresses 192.x.x.x sont privées
Faux également.
Le bloc privé est :
192.168.0.0/16
Le :
192.0.2.1
de nos exemples n’appartient d’ailleurs pas à ce bloc.
Dire que 127.0.0.1 est « le bloc loopback »
Le bloc est :
127.0.0.0/8
127.0.0.1 est simplement son représentant le plus célèbre.
Dire que 169.254 signifie forcément « Windows a paniqué »
Plus précisément :
c’est une adresse IPv4 Link-Local.
Sur un poste qui devait utiliser DHCP, elle indique souvent que la configuration attendue n’a pas été obtenue.
Penser que l’adresse de broadcast finit toujours par .255
Elle dépend du préfixe.
Pour :
192.168.1.64/26
le broadcast est :
192.168.1.127
Penser que la passerelle doit appartenir à un autre réseau
Une passerelle IPv4 directement utilisée par un hôte se trouve normalement sur un réseau directement joignable par cet hôte.
Sinon il faudrait déjà un routeur pour atteindre le routeur.
L’infrastructure entrerait dans une forme particulièrement élégante de récursion administrative.
Confondre DNS et adressage IP
DNS transforme les noms en informations d’adressage.
IP transporte les paquets vers des adresses.
Les deux coopèrent.
Ils ne sont pas interchangeables.
IPv4 et IPv6 : comparaison rapide
| Caractéristique | IPv4 | IPv6 |
|---|---|---|
| Taille | 32 bits | 128 bits |
| Exemple | 192.168.1.10 |
2001:db8::10 |
| Notation de préfixe | /24, /27… |
/64, /48… |
| Broadcast | Oui | Non |
| Multicast | Oui | Oui, essentiel au fonctionnement |
| Résolution locale | ARP | Neighbor Discovery |
| Autoconfiguration | DHCP / IPv4 Link-Local | SLAAC, DHCPv6, Link-Local |
| Loopback | 127.0.0.0/8 |
::1 |
| Adresse non spécifiée | 0.0.0.0 |
:: |
| Besoin structurel de NAT pour économiser les adresses | Très courant | Non |
Les plages principales à retenir
| Préfixe | Usage |
|---|---|
10.0.0.0/8 |
IPv4 privé |
172.16.0.0/12 |
IPv4 privé |
192.168.0.0/16 |
IPv4 privé |
100.64.0.0/10 |
Espace partagé, notamment CGNAT |
127.0.0.0/8 |
Loopback IPv4 |
169.254.0.0/16 |
IPv4 Link-Local |
224.0.0.0/4 |
Multicast IPv4 |
255.255.255.255 |
Limited broadcast IPv4 |
::1 |
Loopback IPv6 |
fe80::/10 |
IPv6 Link-Local |
fc00::/7 |
IPv6 Unique Local |
2000::/3 |
Espace d’allocation Global Unicast IPv6 |
ff00::/8 |
Multicast IPv6 |
Les notions à retenir
| Concept | Rôle |
|---|---|
| Adresse IP | Adresse logique associée à une interface |
| Préfixe CIDR | Indique la partie réseau de l’adresse |
| Sous-réseau | Ensemble d’adresses partageant un préfixe |
| Passerelle | Prochain saut utilisé pour atteindre d’autres réseaux |
| Route | Information indiquant comment atteindre un préfixe |
| ARP | Résolution IPv4 vers adresse de liaison sur un réseau local |
| NDP | Mécanismes de découverte des voisins et routeurs en IPv6 |
| DHCP | Configuration automatique IPv4 |
| SLAAC | Autoconfiguration IPv6 sans attribution d’adresse par serveur |
| DNS | Résolution des noms |
| NAT | Traduction d’adresses |
Méthode rapide pour analyser une adresse IPv4
Prenons :
192.168.42.77/27
1. Trouver le masque
/27
=
255.255.255.224
2. Calculer la taille du bloc
Il reste :
32 - 27
= 5 bits
Donc :
2^5
= 32 adresses
3. Trouver les bornes
Les blocs du dernier octet commencent à :
0
32
64
96
128
160
192
224
La valeur :
77
appartient au bloc :
64 à 95
4. En déduire les informations
Adresse : 192.168.42.77/27
Réseau : 192.168.42.64
Premier hôte : 192.168.42.65
Dernier hôte : 192.168.42.94
Broadcast : 192.168.42.95
Adresses totales : 32
Hôtes classiques : 30
Lorsque cette logique devient naturelle, le subnetting cesse d’être un rite initiatique conçu pour terroriser les étudiants.
Il devient simplement de l’arithmétique binaire avec beaucoup trop de points.
Conclusion : une adresse ne suffit jamais toute seule
L’adressage IP paraît simple lorsque l’on regarde uniquement :
192.168.1.10
Mais cette adresse n’a de sens opérationnel qu’avec son contexte :
- son préfixe ;
- l’interface sur laquelle elle se trouve ;
- les routes de la machine ;
- sa passerelle ;
- le réseau local ;
- la résolution de voisins ;
- et souvent DNS pour que les humains puissent éviter de mémoriser des nombres.
IPv4 a construit Internet avec 32 bits, puis a survécu à son propre succès grâce au CIDR, aux adresses privées, au NAT et à une quantité respectable d’ingénierie.
IPv6 reprend le même principe fondamental de routage IP mais avec 128 bits, une architecture d’adressage différente, Neighbor Discovery, SLAAC et suffisamment d’espace pour cesser de traiter chaque adresse comme le dernier siège libre dans un train un vendredi soir.
Les règles les plus importantes restent finalement simples :
- une adresse IP appartient à un contexte réseau ;
- le préfixe détermine ce qui est local ;
- la passerelle permet d’atteindre d’autres réseaux ;
- CIDR a remplacé les classes ;
- privé ne signifie pas sécurisé ;
- public ne signifie pas automatiquement accessible ;
- DNS n’est pas le routage ;
- NAT n’est pas un pare-feu ;
- et IPv6 n’est pas simplement IPv4 avec beaucoup plus de caractères.
La prochaine fois que quelqu’un annonce :
« Le réseau ne marche pas. »
commencez donc par regarder :
adresse
préfixe
passerelle
routes
DNS
avant de redémarrer trois switches, de remplacer le câble et d’accuser le fournisseur d’accès.
Une adresse IP est en quelque sorte le code postal du réseau.
Mais le préfixe définit la ville, la table de routage choisit la route et la passerelle conduit le camion.
Et lorsque le masque est faux, même le meilleur facteur finit par livrer le paquet dans une autre dimension.
