D’où vient l’adresse 169.254.X.X ?

Alexandre | 30 mai 2011 | Commentaires (2)

Lors du démarrage, votre PC essaye de récupérer une adresse IP auprès d'un serveur DHCP. Si l'opération est un succès, vous êtes connecté à votre réseau et les services qui vont avec. Par contre, si la demande échoue Windows attribue automatiquement une adresse IP de la forme 169.254.X.X 255.255.0.0. Je me suis toujours demandé d'où venait cette adresse et quelles étaient ses particularités. N'étant surement pas le seul dans ce cas, je vais essayer de répondre à ces questions.

 

Un peut de vocabulaire

L'IETF (Internet Engineering Task Force, Détachement d'ingénierie d'Internet) est un organisme ouvert à tous qui se réunit 3 fois par an pour émettre et débattre sur des RFC.

Une RFC (Request For Comments, Demande de commentaires) est un ensemble de documents regroupant les spécifications techniques d'une nouvelle technologie d'internet (protocole, normale, équipement). La RFC est analysée et critiquée par l'IETF. Si elle passe toutes les étapes, une RFC peut devenir un standard d'Internet. Par exemple, TCP/IP a été déposé en tant que RFC à l'IETF.

 

D'où vient cette adresse ?

D'après la RFC 3927 la tranche 169.254.0.1-169.254.255.254 /16 est réservé pour le "Link-Local". C'est à dire pour les postes d'un réseau local qui sont dans l'incapacité de recevoir une adresse IP d'un tiers (par exemple : un serveur DHCP). Ce type d'adresse n'est pas géré par les routeurs, il n'est donc pas possible d'aller sur internet avec. Et forcément, les adresses étant de la même tranche, elles peuvent discuter entre elles.

Partant de cette RFC, le système appelé APIPA (Automatic Private IP Addressing, Adressage automatique d'IP privée) a été créé. Il est implémenté dans tous les Windows récents et Linux. APIPA a pour rôle d'attribuer automatiquement une adresse IP en piochant des adresses dans la tranche 169.254.0.1-169.25.255.254.

 

Comment ça marche ?

 

Prenons une situation concrète :

Sur votre réseau local, vous avez plusieurs machines (sous Windows) et un serveur DHCP qui attribue les IP. Un beau jour, votre serveur vous lâche.

Miséricorde ! Vous deviez récupérer un fichier super important sur un autre ordinateur de votre réseau et vous êtes à cour de clef USB. Impossible de joindre les autres PC avec leurs IP habituelle. Vous vérifiez votre IP et vous obtenez  : 169.254.0.5. Vous vérifiez sur les autres postes et vous remarquez que tous ont une adresse du même type, 169.254.0.X. Vous récupérez alors l'IP du PC qui détient le fichier important : 169.254.0.2.

Vous tentez alors un pari fou : Puisque toutes les machines sont dans la même tranche IP, elles devraient pouvoir communiquer ensembles ! Et cela même sans serveur DHCP ! Vous lancez alors un petit ping entre les deux machines. Résultat : ça marche ! Vous pouvez récupérer votre fichier et travailler dessus ! Coup de chance, une fois le fichier téléchargé le serveur DHCP revient et vous récupéré votre ancienne adresse. Tout re-fonctionne. Qu'est-ce que c'est beau Windows :) .

 

Explications :

Lorsque le serveur tombe, c'est la panique sur le réseau. Plus personne n'a d'adresse et  c'est impossible de joindre les autres. Toutes les machines (votre PC y compris) vont commencer à faire des requêtes régulières au serveur DHCP jusqu'à temps que celui-ci leur réponde.

Au bout d'un moment, il comprennent qu'ils n'auront pas leurs adresses. C'est à ce moment là que APIPA entre en jeu.  Chaque poste lance automatiquement APIPA et obtient une IP en 169.254.X.X. Tout en ayant une adresse en 169 donné par APIPA, les PC vont continuer à faire des demandes régulières d'adresse au serveur DHCP. Toutes les machines peuvent alors communiquer entres elles et vous pouvez récupérer votre fichier. Quand le serveur revient, il répond aux requêtes des postes et tout redevient comme si de rien n'était.

Dernier petit point à éclaircir, comment les postes font pour ne pas avoir la même adresse alors qu'il y a personne pour contrôler la distribution de celles-ci ? Tout simplement parce que avant de s'auto-attribuer une adresse en 169.254.X.X, APIPA envoie une requête ARP sur le réseau pour voir si l'adresse est libre.

 

Pour résumer :

  • APIPA permet de distribuer des adresse (en 169.254.X.X) automatiquement lorsqu'il n'y a plus de serveur DHCP.
  • Toutes les machines avec ce type d'adresse peuvent communiquer entre elles.
  • APIPA utilise une requête ARP pour vérifier que l'adresse qu'il va s'attribuer n'est pas déjà prise sur le réseau.
  • Une machine possédant une adresse 169.254.X.X continuera a faire des requêtes au serveur DHCP, même après avoir perdu la connexion.

Commentaires (2)

  1. Avgardisme dit :

    Ah ben ça alors, merci, je savais pas ce que c’était. ZoneAlarm m’avait signalé une connexion du type, je pensais que ct un hackeur qui voulait me soutirer des infos par connexion à distance :D

    encore merci

  2. roland dit :

    apres avoir ete confronter à ce probleme (installation NAS) merci bien pour toutes ces explications tres claires encore bravo!!!