Cette partie s'adresse à ceux qui ont déjà quelques notions sur l'adressage IP et le rôle des DNS (la lecture et sa compréhension de la partie pour les débutants suffit) et qui sont curieux de savoir comment ça fonctionne de plus près.
Nous allons ici découvrir comment fonctionne un serveur DNS "lambda", tel que celui que nous pourrions construire, tel que celui de votre FAI.
Vous imaginez bien qu'avec le nombre de millions d'hôtes référencés dans le monde, construire un système de résolution de noms à l'échelle planétaire qui fonctionne et qui soit perpétuellement à jour, n'est pas un petit travail. Il va donc falloir s'attendre à ce que le processus soit un peu compliqué, mais nous verrons qu'il est en fait extrêmement logique.
Souvenons-nous que juste au dessous de la racine "." se trouvent un certain nombre de "Top Level Domains" comme ".com", ".net", ".fr" etc.
Des organismes de gestion de ces TLD exitent, ils permettent d'enregistrer des noms de domaines dans les TLD comme par exemple "wanadoo.fr" ou "voila.fr". En France, c'est le NIC France qui s'en occupe. Ces organismes doivent s'assurer de l'unicité d'un nom de domaine à l'intérieur d'un TLD donné.
Lorsqu'un domaine est déclaré, toutes les machines appartenant à ce domaine seront référencées sur le ou les serveurs DNS de l'organisme qui a déposé le nom de domaine. Le NIC France se contentant normalement de permettre de retrouver les adresses IP de ces serveurs de noms.
Le rôle des serveurs racine (Root Servers) consiste à permettre de retrouver les adresses des serveurs que l'on vient de décrire. Comme ceci n'est pas forcément très clair, voyons çà sur un exemple.
Les serveurs racine sont connus. Nous pouvons trouver leur liste, par
exemple, ici : ftp://ftp.rs.internic.net/domain/named.root
Ce fichier est maintenu par l'InterNIC, organisme qui regroupe d'autres
organismes comme le NIC France.
A l'heure où ces lignes sont écrites, ce fichier contient ceci :
; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.root ; on server FTP.INTERNIC.NET ; ; last update: Nov 5, 2002 ; related version of root zone: 2002110501 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; operated by VeriSign, Inc. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 ; ; housed in LINX, operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; operated by IANA ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; housed in Japan, operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File
Normalement, l'un quelconque de ces serveurs suffit à démarrer sa recherche.
Dans cet exemple, nous allons essayer de trouver les adresses et les noms des serveurs DNS capables de nous renseigner sur les hôtes du domaine "ac-aix-marseille.fr"
Microsoft(R) Windows NT(TM) (C) Copyright 1985-1996 Microsoft Corp. |
L'exemple est
pris à partir d'une console sous Windows NT 4. Cette machine est connectée par l'intermédiaire d'une passerelle sous LINUX. |
D:\>nslookup Serveur par défaut : gateway1.maison.mrs Address: 192.168.0.250 |
On démarre
NSLOOKUP en mode interactif. Le DNS par défaut est celui qui est spécifié dans les options du protocole TCP/IP. Ici un DNS personnel construit sur la passerelle LINUX. |
> server g.root-servers.net Serveur par défaut : g.root-servers.net Address: 192.112.36.4 |
Cette commande signifie à nslookup d'utiliser le serveur spécifié, ici l'un des "root-servers" choisi au hasard. |
> set q=ns |
Cette commande indique à nslookup que l'on va s'intéresser aux champs de type "NS" (Name Servers). |
> fr. Serveur: g.root-servers.net Address: 192.112.36.4 Réponse de source secondaire : fr nameserver = NS1.NIC.fr fr nameserver = NS3.NIC.fr fr nameserver = DNS.INRIA.fr fr nameserver = NS2.NIC.fr fr nameserver = NS.EU.NET fr nameserver = DNS.PRINCETON.EDU fr nameserver = NS-EXT.VIX.COM fr nameserver = DNS.CS.WISC.EDU NS1.NIC.fr internet address = 192.93.0.1 NS3.NIC.fr internet address = 192.134.0.49 DNS.INRIA.fr internet address = 193.51.208.13 NS2.NIC.fr internet address = 192.93.0.4 NS.EU.NET internet address = 192.16.202.11 DNS.PRINCETON.EDU internet address = 128.112.129.15 NS-EXT.VIX.COM internet address = 204.152.184.64 DNS.CS.WISC.EDU internet address = 128.105.2.10 |
Posons la
question: Quels sont les serveurs de noms qui savent donner des informations sur le TLD "fr."? Et voilà, nous disposons de la liste des serveurs qui pourront nous renseigner sur les domaines existant dans le TLD "fr." |
> server dns.inria.fr Serveur par défaut : dns.inria.fr Address: 193.51.208.13 |
Passons donc sur l'un de ces serveurs... |
> ac-aix-marseille.fr. Serveur: dns.inria.fr Address: 193.51.208.13 Réponse de source secondaire : ac-aix-marseille.fr nameserver = dnse.ac-aix-marseille.fr ac-aix-marseille.fr nameserver = cianame.ac-clermont.fr dnse.ac-aix-marseille.fr internet address = 195.83.252.200 cianame.ac-clermont.fr internet address = 194.254.204.31 |
Et
interrogeons-le sur le domaine ac-aix-marseille.fr.
Nous obtenons les DNS qui nous renseigneront sur les hôtes du domaine ac-aix-marseille.fr |
host, contrairement à nslookup, n'est pas une commande interactive, son usage est quelque peu différent, mais les résultats devraient être les mêmes.
[root@gw1 root]# host -t ns fr. 192.112.36.4 |
nous demandons à 192.112.36.4 quels sont les "name servers" (-t ns) qui gèrent le TLD fr (fr.) |
Using domain server: Name: 192.112.36.4 Address: 192.112.36.4#53 Aliases: fr name server NS3.DOMAIN-REGISTRY.NL. fr name server DNS.CS.WISC.EDU. fr name server NS1.NIC.fr. fr name server NS3.NIC.fr. fr name server DNS.INRIA.fr. fr name server NS2.NIC.fr. fr name server DNS.PRINCETON.EDU. fr name server NS-EXT.VIX.COM. |
La réponse arrive.
C'est sympa, nous avons les noms de DNS, mais pas leurs adresses... |
[root@gw1 root]# host ns1.nic.fr. 192.112.36.4 |
Nous demandons donc au même DNS de bien vouloir nous indiquer l'IP de ns1.nic.fr. |
Using domain server: Name: 192.112.36.4 Address: 192.112.36.4#53 Aliases: ns1.nic.fr has address 192.93.0.1 |
Ce qu'il fait sans rechigner, puis qu'on le lui demande poliment. |
[root@gw1 root]# host -t ns ac-aix-marseille.fr. 192.93.0.1 |
Nous demandons maintenant à ns1.nic.fr (192.93.0.1) de nous indiquer les DNS (-t ns) qui savent répondre pour le domaine d'entreprise ac-aix-marseille.fr |
Using domain server: Name: 192.93.0.1 Address: 192.93.0.1#53 Aliases: ac-aix-marseille.fr name server dnse.ac-aix-marseille.fr. ac-aix-marseille.fr name server cianame.ac-clermont.fr. |
Ce qu'il fait, toujours en n'indiquant que les noms. |
[root@gw1 root]# host dnse.ac-aix-marseille.fr. 192.93.0.1 |
Nous aimerions avoir l'adresse IP de dnse.ac-aix-marseille.fr, par exemple : |
Using domain server: Name: 192.93.0.1 Address: 192.93.0.1#53 Aliases: dnse.ac-aix-marseille.fr has address 195.83.252.200 |
et voilà. |
Cette petite manipulation nous permet de comprendre comment, en partant d'un des root-servers de l'Internic, il est possible de retrouver le ou les DNS capables de renseigner sur un domaine donné. Cette façon de faire, si elle ne présente aucun intérêt pour l'internaute "moyen" (sans aucune connotation péjorative de ma part) permet de comprendre comment va fonctionner un serveur DNS de type "récursif" comme celui que vous procure normalement votre fournisseur d'accès; cette méthode permet également de dépister certaines pannes d'inaccessibilité à un serveur. Nous le verrons d'ailleurs dans un "sniff" gigantesque un peu plus loin...
Simple... Vous vous adressez à votre DNS par défaut:
Microsoft(R) Windows NT(TM) (C) Copyright 1985-1996 Microsoft Corp. D:\>nslookup www.ac-aix-marseille.fr Serveur: gateway1.maison.mrs Address: 192.168.0.250 Nom : copernic.crdp.ac-aix-marseille.fr Address: 194.254.139.4 Aliases: www.ac-aix-marseille.fr
Et, s'il est normalement constitué, il vous donne la réponse. Allez tiens, encore un coup pour le plaisir:
D:\>nslookup www.ac-aix-marseille.fr Serveur: gateway1.maison.mrs Address: 192.168.0.250 Réponse de source secondaire : Nom : copernic.crdp.ac-aix-marseille.fr Address: 194.254.139.4 Aliases: www.ac-aix-marseille.fr
Tiens, cette fois-ci, il y a quelque chose en plus: "Réponse de source secondaire:"! On se le remet de côté pour plus tard...
Bien entendu, nous pourrions faire la même chose avec host, sans préciser de DNS. C'est alors le DNS par défaut qui sera interrogé :
[root@gw1 root]# host www.ac-aix-marseille.fr www.ac-aix-marseille.fr has address 195.83.252.87
Tant qu'on y est, une petite variation sur le thème "host" : le paramètre v (verbose) :
[root@gw1 root]# host -v www.ac-aix-marseille.fr Trying "www.ac-aix-marseille.fr" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11747 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.ac-aix-marseille.fr. IN A ;; ANSWER SECTION: www.ac-aix-marseille.fr. 604765 IN A 195.83.252.87 ;; AUTHORITY SECTION: ac-aix-marseille.fr. 603884 IN NS cianame.ac-clermont.fr. ac-aix-marseille.fr. 603884 IN NS dnse.ac-aix-marseille.fr. ;; ADDITIONAL SECTION: dnse.ac-aix-marseille.fr. 603884 IN A 195.83.252.200 Received 126 bytes from 127.0.0.1#53 in 11 ms
Pour être verbeux... Mais nous avons quelques informations qui peuvent intéresser :
Bien, mais on ne va pas rester en plan sur la recherche que nous avons faite en partant d'un root-server...
Continuons la manip jusqu'au bout...
(Je rappelle que nous avions démarré nslookup en mode interactif, que nous étions parti d'un root-server choisi au hasard dans la liste distribuée par l'Internic, et que nous avions trouvé deux serveurs de noms pour le domaine ac-aix-marseille.fr.
Prenons-en un, presque au hasard:
> server dnse.ac-aix-marseille.fr Serveur par défaut : dnse.ac-aix-marseille.fr Address: 195.83.252.200 |
passons maintenant sur l'un des serveurs DNS du domaine ac-aix-marseille.fr: |
> set q=a |
Le type de
question est maintenant: donner l'adresse de... |
> www.ac-aix-marseille.fr. |
du serveur web de l'académie |
Serveur: dnse.ac-aix-marseille.fr Address: 195.83.252.200 Nom : copernic.crdp.ac-aix-marseille.fr Address: 194.254.139.4 Aliases: www.ac-aix-marseille.fr |
Et la réponse arrive. On remarque d'ailleurs que le véritable nom du serveur est: |
Et avec host :
[root@gw1 root]# host www.ac-aix-marseille.fr 195.83.252.200 |
allons jusqu'au bout pour obtenir de dnse.ac-aix-marseille.fr (195.83.252.200) l'IP du serveur web de l'académie : |
Using domain server: Name: 195.83.252.200 Address: 195.83.252.200#53 Aliases: www.ac-aix-marseille.fr has address 195.83.252.87 |
C'est terminé. |
Ce qui va être fait maintenant n'est pas à faire
pour s'amuser! Ce genre de commande consomme inutilement des ressources sur le
serveur DNS visé. A réserver à l'administrateur du DNS (auprès duquel je
m'excuse, c'était juste à des fins pédagogiques).
D'ailleurs, l'administrateur dispose de la possibilité d'interdire ce genre de
requête, comme nous le verrons dans la construction d'un DNS, et lorsque ce
n'est pas interdit, ça ne veut pas forcément dire que c'est autorisé...
> ls -d ac-aix-marseille.fr. [dnse.ac-aix-marseille.fr] ac-aix-marseille.fr. SOA dnse.ac-aix-marseille.fr ... ac-aix-marseille.fr. A 195.83.252.20 ac-aix-marseille.fr. NS dnse.ac-aix-marseille.fr ac-aix-marseille.fr. NS cianame.ac-clermont.fr ... copernic.crdp.ac-aix-marseille.fr. A 194.254.139.4 ... www.ac-aix-marseille.fr. CNAME copernic.crdp.ac-aix-marseille.fr ... |
Cette commande
permet de lister tous les enregistrements d'une zone (domaine ou partie
d'un domaine, comme nous le verrons dans la construction d'un DNS). Le listing a été volontairement tronqué, d'abord parce qu'il est assez long, ensuite parce qu'il ne présente pas un grand intérêt dans notre propos. |
On retrouve bien dans cette liste les informations qui nous intéressaient concernant le serveur web de l'académie
Notez également les champs qui apparaissent:
Il existe également d'autres types d'enregistrements, comme MX qui renseigne sur les serveurs smtp, mais ceci est une autre histoire...
Les mêmes informations auraient pu être extraites avec la commande :
host -l ac-aix-marseille.fr 195.83.252.200
Dans le second cas, nous avons effectué "à la main" une recherche "itérative", par approches successives, pour aboutir à la solution.
Dans le premier cas, notre DNS par défaut a effectué une recherche analogue de façon transparente pour nous, et nous a servi la réponse "sur un plateau".
Comme c'est tout de même son travail de servir des adresses correspondant aux noms, il garde sa recherche en mémoire au cas où... Et c'est la raison du fameux "Réponse de source secondaire:"! Lorsqu'on lui repose la question une seconde fois, il ressort le résultat qu'il a gardé en cache, s'il estime qu'il est encore d'actualité (mais ceci est encore une autre question que nous verrons plus loin). En fait, comme nous le verrons dans le "sniff", il en profite pour garder en cache toutes les informations qu'il a trouvées dans sa recherche concernant les serveurs de noms intermédiaires, ce qui pourra lui faire gagner du temps si par exemple on lui demandait de résoudre un autre nom du TLD fr. (www.wanadoo.fr par exemple).
Notre DNS par défaut est dit "récursif", c'est à dire qu'il sait faire tout seul une recherche comme nous l'avons menée manuellement. Tous les DNS ne le sont pas et principalement les root-servers.
Il est parfois utile de pouvoir trouver le nom d'un hôte si l'on ne connaît que son adresse IP, bien que l'internaute moyen n'ait normalement pas besoin de cette fonction.
Les DNS savent le faire et une telle recherche peut s'effectuer à la main de façon similaire à une recherche normale, en partant des root-servers.
Prenons un exemple qui marche bien: la recherche du nom correspondant à l'adresse 193.252.19.142 (prise pas du tout au hasard). Dans la pratique, la manip est parfois un peu plus compliquée parce que les serveurs ne renvoient pas toujours les adresses IP avec les noms, mais la démarche est bonne et fonctionne dans tous les cas, elle peut simplement être parfois beaucoup plus longue.
D:\>nslookup Serveur par défaut : gateway1.maison.mrs Address: 192.168.0.250 |
la routine... |
> server a.root-servers.net Serveur par défaut : a.root-servers.net Address: 198.41.0.4 |
un root server... |
> set q=ptr |
ici, on va demander les enregistrements de type PTR. Nous verrons en détail dans la construction d'un DNS à quoi ils correspondent |
> 193.252.19.142 |
Je pose la question... |
Serveur: a.root-servers.net Address: 198.41.0.4 193.IN-ADDR.ARPA nameserver = NS.RIPE.NET 193.IN-ADDR.ARPA nameserver = NS.EU.NET 193.IN-ADDR.ARPA nameserver = AUTH03.NS.UU.NET 193.IN-ADDR.ARPA nameserver = NS2.NIC.FR 193.IN-ADDR.ARPA nameserver = SUNIC.SUNET.SE 193.IN-ADDR.ARPA nameserver = MUNNARI.OZ.AU 193.IN-ADDR.ARPA nameserver = NS.APNIC.NET NS.RIPE.NET internet address = 193.0.0.193 NS.EU.NET internet address = 192.16.202.11 AUTH03.NS.UU.NET internet address = 198.6.1.83 NS2.NIC.FR internet address = 192.93.0.4 SUNIC.SUNET.SE internet address = 192.36.125.2 MUNNARI.OZ.AU internet address = 128.250.1.21 NS.APNIC.NET internet address = 203.37.255.97 |
Et le root server, comme à son habitude, ne me répond pas directement, mais m'envoie une liste de serveurs qui savent résoudre les adresses qui commencent par 193. |
> server 192.93.0.4 Serveur par défaut : ns2.nic.fr Address: 192.93.0.4 |
J'en choisis un, au hasard... |
> 193.252.19.142 Serveur: ns2.nic.fr Address: 192.93.0.4 252.193.in-addr.arpa nameserver = bow.rain.fr 252.193.in-addr.arpa nameserver = proof.rain.fr 252.193.in-addr.arpa nameserver = ns.ripe.net 252.193.in-addr.arpa nameserver = ns.global-ip.net bow.rain.fr internet address = 194.51.3.49 proof.rain.fr internet address = 194.51.3.65 ns.ripe.net internet address = 193.0.0.193 ns.ripe.net AAAA IPv6 address = 0:0:0:0:0:ffff:c100:c1 ns.global-ip.net internet address = 194.52.1.10 |
Et je lui repose
la même question. Il me répond bien poliment par une liste de serveurs
qui savent résoudre les adresses commençant par 193.252.
Notez qu'en recherche inverse, les adresses sont classées à l'envers. C'est logique, on part du poids le plus fort vers le poids le plus faible. |
> server 194.51.3.49 51.194.in-addr.arpa nameserver = bow.rain.fr 51.194.in-addr.arpa nameserver = proof.rain.fr 51.194.in-addr.arpa nameserver = ns.ripe.net 51.194.in-addr.arpa nameserver = ns.global-ip.net 51.194.in-addr.arpa nameserver = ns3.nic.fr bow.rain.fr internet address = 194.51.3.49 proof.rain.fr internet address = 194.51.3.65 ns.ripe.net internet address = 193.0.0.193 ns.ripe.net AAAA IPv6 address = 0:0:0:0:0:ffff:c100:c1 ns.global-ip.net internet address = 194.52.1.10 ns3.nic.fr internet address = 192.134.0.49 Serveur par défaut : [194.51.3.49] Address: 194.51.3.49 |
Je prends le
premier serveur proposé.
Notez que celui-ci, sans que je ne lui demande rien, m'envoie la liste des serveurs qui connaissent les adresses commençant par 194.51 (comme la sienne). Je n'en ai rien à faire ici, mais je peux éventuellement garder cette info dans mes tablettes... |
> 193.252.19.142 Serveur: [194.51.3.49] Address: 194.51.3.49 19.252.193.in-addr.arpa nameserver = ns.wanadoo.fr 19.252.193.in-addr.arpa nameserver = ns.wanadoo.com 19.252.193.in-addr.arpa nameserver = ns2.wanadoo.fr 19.252.193.in-addr.arpa nameserver = ns2.wanadoo.com ns.wanadoo.fr internet address = 193.252.19.10 ns.wanadoo.com internet address = 194.51.238.1 ns2.wanadoo.fr internet address = 193.252.19.11 ns2.wanadoo.com internet address = 194.51.238.2 |
Je pose à ce
serveur toujours la même question, il me répond cette fois-ci par la
liste des serveurs connaissant les adresses qui commencent par 193.252.19.
(on approche) A ce stade, on a déjà une idée du domaine dans lequel se trouve notre hôte. |
> server 194.51.238.2 Serveur par défaut : ns2.wanadoo.com Address: 194.51.238.2 |
Pour changer un peu, je choisis le dernier de la liste (bienvenue dans wanadoo.com) |
> 193.252.19.142 Serveur: ns2.wanadoo.com Address: 194.51.238.2 142.19.252.193.in-addr.arpa name = www.wanadoo.fr 19.252.193.in-addr.arpa nameserver = ns.wanadoo.fr 19.252.193.in-addr.arpa nameserver = ns.wanadoo.com 19.252.193.in-addr.arpa nameserver = ns2.wanadoo.fr 19.252.193.in-addr.arpa nameserver = ns2.wanadoo.com ns.wanadoo.fr internet address = 193.252.19.10 ns.wanadoo.com internet address = 194.51.238.1 ns2.wanadoo.fr internet address = 193.252.19.11 ns2.wanadoo.com internet address = 194.51.238.2 |
Encore une fois
la question et j'obtiens la réponse définitive:
www.wanadoo.fr |
Vous avez compris le principe, on ne va pas aussi le faire avec host.
Une recherche inverse se mène donc de manière similaire à une recherche directe. Si j'avais posé directement la question à mon DNS favori, j'aurais bien entendu obtenu directement la réponse:
D:\>nslookup 193.252.19.142 Serveur: gateway1.maison.mrs Address: 192.168.0.250 Nom : www.wanadoo.fr Address: 193.252.19.142
C'eut été plus simple, mais je n'aurais pas compris comment ça marche...
Pour l'instant, ne nous posons pas trop de questions sur ce "in-addr.arpa" que nous verrons en détail lors de la construction de notre DNS. Il s'agit en fait d'une zone dans laquelle on enregistre les adresses avec le nom d'hôte qui correspond, ceci se faisant en même temps que l'on entre dans la zone "normale" les noms avec l'adresse qui correspond dans un champ de type "A".
Un document fort intéressant et fort complet vous aidera à comprendre tout ça et même plus...
Comme c'est une technique qui se développe de plus en plus, autant en dire quelques mots...
Après tout ce que nous avons vu, nous avons probablement compris qu'à un nom correspond une IP et, éventuellement, par le jeu des alias, une IP peut être attribuée à plusieurs noms. Serait-il possible qu'à un nom donné puissent correspondre plusieurs IPs ?
~# host news.free.fr news.free.fr is an alias for news.proxad.net. news.proxad.net has address 213.228.0.133 news.proxad.net has address 213.228.0.136 news.proxad.net has address 213.228.0.138 news.proxad.net has address 213.228.0.196 news.proxad.net has address 213.228.0.4 news.proxad.net has address 213.228.0.32 news.proxad.net has address 213.228.0.33 news.proxad.net has address 213.228.0.75
Est-ce possible ? Pas moins de 8 adresses différentes pour le même nom ? Ce doit être une erreur, recommençons...
~# host news.free.fr news.free.fr is an alias for news.proxad.net. news.proxad.net has address 213.228.0.33 news.proxad.net has address 213.228.0.75 news.proxad.net has address 213.228.0.133 news.proxad.net has address 213.228.0.136 news.proxad.net has address 213.228.0.138 news.proxad.net has address 213.228.0.196 news.proxad.net has address 213.228.0.4 news.proxad.net has address 213.228.0.32
Ce n'est pas une erreur, nous avons bien ici huit IP différentes, et constatez qu'entre les deux interrogations, si les adresses n'ont pas changé, en revanche, l'ordre dans lequel elles ont été données, lui, a changé. En pratique, à chaque requête, le DNS opèrera une permutation circulaire .
Le client utilisera normalement la première réponse dans la liste, deux utilisateurs consécutifs utiliseront donc deux IPs différentes, pour accéder au même service. La charge en terme de flux de données sera naturellement répartie sur les diverses IPs.
A quoi cela sert-il ? Il peut y avoir plusieurs raisons :
Cette technique est de plus en plus employée. Autres exemples, pour ne pas faire de jaloux :
~# host smtp.free.fr smtp.free.fr has address 213.228.0.169 smtp.free.fr has address 213.228.0.176 smtp.free.fr has address 213.228.0.44 smtp.free.fr has address 213.228.0.62
Et :
~# host smtp.wanadoo.fr smtp.wanadoo.fr has address 193.252.22.72 smtp.wanadoo.fr has address 193.252.22.73 smtp.wanadoo.fr has address 193.252.22.74 smtp.wanadoo.fr has address 193.252.22.75 smtp.wanadoo.fr has address 193.252.22.76 smtp.wanadoo.fr has address 193.252.22.77