Introduction
Sur Internet, tout équipement sera distingué par une adresse IP. Pour faciliter la connexion à des machines distantes, un système a été mis en place : le Domain Name System (DNS).
On peut le voir comme une annuaire géant et informatisé. En effet, il est bien plus simple de retenir ou même juste de taper un nom de domaine ayant du sens plutôt que de retenir une suite n'ayant aucune cohérence. Avec le nom de domaine en tête, on a juste à interroger l'annuaire pour connaître l'IP de la machine à laquelle on veut accéder.
Par exemple, on retiendra plus facilement l'adresse framabook.org plutôt que son IP qui est 144.76.131.212.
Ainsi le système de noms de domaines permet de lier à une adresse IP une suite de caractère nommé nom de domaine.
Dans ce système, il y aura des Domain Name Servers (DNS ou serveur DNS) qui permettront par exemple d'obtenir une adresse IP lorsqu'on leur enverra un nom de domaine.
Si on revient à l'analogie de l'annuaire, ces serveurs seront les annuaires d'une zone géographique précise. Dans la système téléphonique, Il n'existe pas d'annuaire mondiale pour les numéros de téléphone mais il est bien possible d'avoir accès à l'annuaire de n'importe quel zone géographique. On pourra retrouver cette même logique dans le système de noms de domaine.
Noms de domaine
Les noms de domaine
Un nom de domaine est une suite de caractères servant d'identifiant au sein d'Internet. Définissons également le terme domaine qui est un ensemble de machines partageant une caractéristique commune. Par exemple, tous les sites terminant par .fr sont des sites français.
Continuons avec quelques exemples de noms de domaine : wikipedia.org, www.fdn.fr, ent.utc.fr, a0.en.exemple.be.
On voit de suite qu'une nom de domaine peut posséder un nombre variable de parties (nommées label).
L'unique point commun à tous les noms de domaines
Il existe un point commun qui permet de faire entrer toutes les machines dans un domaine qu'on appellera le domaine racine. Cette caractéristique est l'implantation dans le Protocole Internet (IP).
Pour faire ressortir cela, théoriquement, les noms de domaines doivent se finir tous pas un point.
Hiérarchie et labels
A l'aide du simple principe de domaine et des labels, on peut alors créer une hiérarchie comme le montre l'image suivante : |
Le concept de sous-domaine
L'arborescence ci-dessus permet de mettre en avant très bien le concept de sous-domaine.
En effet, on peut lire chaque nom de domaine de droite à gauche en voyant chaque label comme un sous-domaine du label précédent.
Prenons l'exemple de de.wikipédia.org. :
le point final représente le domaine racine
Ce qui précède ce point final est nommé domaine de premier niveau et est un sous-domaine de la racine. Dans notre cas, il s'agit de org qui caractérise les organisations à but non lucratif.
wikipedia est un sous-domaine de org (on peut aussi parler de domaine de deuxième niveau) référant à une organisation particulière.
Enfin, le de est un sous-domaine de wikipedia correspondant à une partie particulière de wikipédia (ici, la partie germanophone).
Les zones
On nomme zone l'ensemble regroupant un domaine et ses sous-domaines.
Par exemple, la zone wikipedia est formée de "wikipédia", de "nds", de "de", de "..." et de tous les sous-domaines des ces trois derniers domaines.
Pour éviter toute incompréhension, rappelons qu'un sous-domaine reste un domaine à part entière.
Gestion centralisée des domaines
Le Domain Name System s'est doté dès 1998 d'une gestion centralisée pour permettre un bon fonctionnement. L'organisation au centre de ce mécanisme régulant une partie d'Internet est l'ICANN.
L'ICANN possède plusieurs missions dans la régulation d'Internet d'une part dans le DNS (avec la gestion des noms de domaine ainsi que la gestion des serveurs DNS racines) d'autre part dans l'attribution d'adresses pour le protocole Internet.
Elle est basée aux États-Unis et est au centre de certains débats notamment pour ses liens avec le gouvernement américain.
Les registres
Pour réussir cela, l'association délègue a différents acteurs la gestion de domaine de premier niveau. La base de données dans laquelle figure l'ensemble des noms de domaine ainsi que l'adresse qui leur ait associé est appelé un registre.
Par exemple, l'ensemble des noms de domaine lié à la France (.fr, .bzh. yt,...) sont gérés par l'AFNIC (Association française pour le nommage Internet en coopération).
L'ICANN laisse la liberté aux registres de choisir autant les conditions que les prix dans l'attribution de noms de domaine.
Noms de domaine et IP
Pour observer ce lien entre nom de domaine et IP, nous allons utiliser la commande nslookup
. Il faudra donc vous munir d'une console Linux. Voici comment utiliser la commande :
nslookup [nom_de_domaine] [nom/adresse du serveur DNS]
Si vous ne mettez pas de serveur DNS, la commande prendra celui configuré par vous ou votre fournisseur d'accès à Internet.
Pour notre part, on interrogera toujours le DNS de la FFDN : ns0.fdn.fr
Communément, il sera nécessaire d'avoir un nom de domaine à au moins deux niveaux pour lui lier une IP. Pour s'en rendre compte, on peut simplement exécuter la commande suivante :
nslookup org ns0.fdn.fr
On a un retour nous informant que le serveur n'a pas de réponse.
Essayons maintenant d'avoir l'IP de wikipedia.org :
nslookup wikipedia.org ns0.fdn.fr
#On trouve 91.198.174.192
Maintenant avec fr.wikipedia.org et de.wikipedia.org :
nslookup fr.wikipedia.org ns0.fdn.fr
#On trouve 91.198.174.192
nslookup de.wikipedia.org ns0.fdn.fr
#On trouve 91.198.174.192
Trois noms de domaine et une même adresse.
En effet, dans ce système, il est possible de faire pointer plusieurs noms de domaine sur une même adresse IP. Cependant, la machine qui recevra le paquet pourra également avoir le nom de domaine envoyé en requête et répondra en fonction de celui-ci.
Par exemple, ici, ce sera Wikipédia qui se chargera de retourner la bonne page en prenant en compte le préfixe du nom de domaine. Si le serveur web voit "de", il enverra la page allemande tandis que s'il voit "fr" il renverra la page française.
Quel est l'adresse IP liée nom de domaine de l'Université de Technologie de Compiègne (UTC) ?
Quel est l'adresse IP liée nom de domaine de l'Université de Technologie de Compiègne (UTC) ?
nslookup utc.fr ns0.fdn.fr
Comment se déroule l'achat d'un nom de domaine ?
Les bureaux d'enregistrement
Les bureaux d'enregistrement (registrar en anglais) sont les entités (entreprises, associations, etc.) accréditées par certains registres pour vendre les noms de domaine du domaine de premier niveau du registre. Selon les registres, les procédures d'accréditation sont plus ou moins compliquées. De plus, les bureaux d'enregistrement devront payer plus ou moins pour enregistrer un nom selon le registre du domaine de premier niveau.
Notons que votre enregistrement de nom de domaine sera lié au bureau qui l'a réalisé.
Achat d'un nom de domaine chez un bureau d'enregistrement
Exécution d'un whois (algorithme qui permet de savoir si oui ou non le nom de domaine est possédé et si oui par qui)
Achat du nom de domaine ou rachat à un autre bureau
Écriture dans le registre par votre bureau d'enregistrement
Gestion de votre nom de domaine
(Optionnel) Renouvellement de votre nom de domaine avant expiration (fortement conseillé)
Transfert de noms de domaine d'un bureau à un autre
Il est fréquent que des bureaux d'enregistrement aient enregistré des noms de domaine sans avoir d'utilisateurs pour les utiliser. Cela permet de revendre potentiellement plus cher que ce qu'on l'a acheté.
Il existe une procédure un peu technique qui garantit que le transfert de noms de domaine soit sécurisé.
Drop registrar
Ces bureaux d'enregistrement sont un peu particuliers puisqu'ils achètent les noms de domaine qui arrivent à expiration avec espoir de les revendre bien plus cher à de distraits internautes qui n'ont pas renouvelé rapidement.
Exercice bilan sur les noms de domaine
Cocher les noms qui correspondent à des noms de domaine qui peuvent être lié à des IP dans le DNS
.fr.
.fr
wikipedia.org
www.framabook.test.org.org
framabook.org
Quelle organisation se charge de réguler le système de noms de domaine ?
AFNIC
ICANN
OVH
NASA
Je souhaite acheter le nom de domaine toto.fr, à qui dois-je m'adresser ?
ICANN
AFNIC
A un bureau d'enregistrement
Au potentiel détenteur du nom de domaine
Donner l'IP correspondant au nom de domaine april.org
Cocher les noms qui correspondent à des noms de domaine qui peuvent être lié à des IP dans le DNS
.fr.
.fr
wikipedia.org
www.framabook.test.org.org
framabook.org
Quelle organisation se charge de réguler le système de noms de domaine ?
AFNIC
ICANN
OVH
NASA
Je souhaite acheter le nom de domaine toto.fr, à qui dois-je m'adresser ?
ICANN
AFNIC
A un bureau d'enregistrement
Au potentiel détenteur du nom de domaine
Donner l'IP correspondant au nom de domaine april.org
Domain Name Server
Introduction
Les Domain Name Servers (DNS ou serveur DNS) sont les éléments du système de noms de domaine qui se chargeront de donner l'adresse IP correspondante au nom de domaine qu'on leur transmet.
La partie du serveur interagissant avec le client est nommé résolveur.
Le serveur racine du DNS
Le role de ce serveur est de rediriger les requêtes vers les serveurs correspondant au domaine de premier niveau du nom de domaine qu'il reçoit.
Par exemple, s'il reçoit afnic.fr, il renverra l'IP du serveur DNS de la zone fr pour que la requête lui soit transmise.
La réalité de ce serveur racine
En réalité, il n'y a pas un mais treize serveurs racine (deux basés en Europe, un au Japon et le reste au Etats-Unis) gérés par différentes organisations (NASA, ICANN, Université du Maryland ou encore RIPE NCC). La majorité de ces serveurs ont également des machines répartis dans différents lieux pour être au plus proche du client. Lorsqu'on fait une requête au serveur racine, celle-ci sera transmis à celui qui est le plus proche.
On a nommé ces serveurs A,B,C, ... jusqu'à M. Chacun a pour adresse [sa lettre].root-servers.net.
Par exemple, celui de la NASA est le E et a pour adresse E.root-servers.net
Le fichier de zone
Rappel : Le concept de zone
Une zone X est l'ensemble regroupant le domaine X ainsi que ses sous-domaines. On peut représenter cette zone comme l'arbre dont X est la racine.
Le fichier de zone
On trouve ce fichier dans chaque serveur primaire, ce fichier contient la correspondance entre les noms de domaine et les adresses IP.
Chaque ligne définissant ces correspondances sont appelées des enregistrements.
Pour les sous-domaines ayant leur propre serveur primaire, le fichier de zone contiendra l'IP du serveur DNS du sous-domaine.
Par exemple, si l'on demande wikipedia.org au serveur du domaine .fr, il ne pourra retourner que l'adresse du DNS de la zone wikipedia.org.
Exemple :
Voici l'exemple d'un fichier de zone (pour une zone nommée exemple.fr) :
$ORIGIN exemple.fr. ; Cette ligne désigne donc la racine de la zone
$TTL 1h ; Valeur par défaut de validité d'un enregistrement (les serveurs cache conserveront par défaut pendant le temps indiqué ici)
exemple.fr. IN SOA ns.exemple.com. username.example.com. ( 2007120710 1d 2h 4w 1h )
exemple.fr. IN NS ns ; On indique que ns.exemple.fr est le serveur de nom de exemple.fr
exemple.fr. IN NS ns.abc.exemple. ; ns.abc.exemple.fr est le server secondaire
exemple.fr. IN MX 10 mail.exemple.fr. ; mail.exemple.fr est le serveur mail
@ IN MX 20 mail2.exemple.fr. ; éqivalent à la ligne du dessus, "@" représente la racine de la zone
@ IN MX 50 mail3 ; idem mais utilise un nom de domaine relatif pluôt qu'absolu.
exemple.fr. IN A 192.0.2.1 ; IPv4 pour exemple.fr
IN AAAA 2001:db8:10::1 ; IPv6 pour exemple.fr
ns IN A 192.0.2.2 ; IPv4 pour ns.exemple.fr
IN AAAA 2001:db8:10::2 ; IPv6 pour ns.exemple.fr
www IN CNAME exemple.fr. ; www.exemple.fr renvoie sur exemple.fr
wwwtest IN CNAME www ; wwwtest.exemple.fr renvoie sur www.exemple.fr
mail IN A 192.0.2.3 ; IPv4 pour mail.exemple.fr
mail2 IN A 192.0.2.4 ; IPv4 pour mail2.exemple.fr
mail3 IN A 192.0.2.5 ; IPv4 pour mail3.exemple.fr
Modifier le fichier de zone pour son propre domaine
Chaque bureau d'enregistrement possède ses propres démarches. Certains vous proposeront de copier le fichier, de le modifier et de l'upload sur le site lorsque les modifications seront effectuées.
Voyons l'exemple de Godaddy qui est un important bureau d'enregistrement :
Les différents types d'enregistrement
On va donc passer en revue les principaux types d'enregistrement qu'on peut entrer dans un fichier de zone.
Notons que pour chacun des enregistrements on peut indiquer un TTL (Time To Live) personnalisé. Cela permettra par exemple de mettre des grands temps pour les noms les plus demandés de la zone. Ainsi, l'enregistrement restera longtemps en cache et le serveur recevra moins de requêtes pour ces noms de domaine.
Enregistrements A et AAAA
Ces enregistrements sont assez simples : on lie un nom de domaine à une adresse IP (v4 pour le type A et v6 pour le type AAAA).
Voici un exemple :
exemple.fr. IN A 192.0.2.1
IN AAAA 2001:db8:10::1
Typiquement, nous utiliserons ces enregistrement pour représenter une machine par exemple le VPS de Quentin ou la raspberry PI de Tobias.
Enregistrements CNAME
Ces enregistrements permettent de faire qu'un nom de domaine pointe sur un autre, des alias.
www IN CNAME exemple.fr.
wwwtest IN CNAME exemple.fr.
Il est souvent pratique d'utiliser ce système pour faire que plusieurs sous-domaines pointent sur une seule adresse. Ici, seul exemple est directement lié à une adresse IP. Si l'adresse IP vient à changer on aura pas à changer ce que pointe les sous-domaines.
Par exemple si le service de pad et celui de chat sont sur la machine vps01 on aura les enregistrements pad IN CNAME vps01.exemple.fr.
et chat IN CNAME vps01.exemple.fr.
.
Enregistrements NS
Ces enregistrements ont pour but de définir les DNS de la zone. Le premier de la liste étant le serveur primaire.
exemple.fr. IN NS ns0
exemple.fr. IN NS ns1
On a défini les adresses de manière relative, il résultera de ces lignes que le serveur primaire a pour nom de domaine ns0.exemple.fr et le secondaire aura ns1.exemple.fr.
Les enregistrements MX
Ces enregistrements permettent de définir les adresses des serveurs mail. Le nombre précédent l'adresse sert à définir la priorité (plus le nombre est grand, plus le serveur est prioritaire).
exemple.fr. IN MX 10 mail.exemple.fr.
@ IN MX 20 mail2.exemple.fr.
Notons qu'avec ces lignes il faudra un enregistrement de type A pour dire les adresses liées à mail.exemple.fr et mail2.exemple.fr.
Quelques autres types un peu plus complexes
Il existe quelques autres types un peu plus complexes tels que SRV, TXT ou SPF.
Pour en savoir un peu plus, je vous redirige vers le site suivant : Wiki Gandi
Exemple : Commentaire d'un fichier de zone
Nous avons repris ci-dessous une partie du fichier de zone du domaine picasoft.net. Nous allons le commenter.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Configuration des serveurs de nom ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ IN NS ns01.picasoft.net. ; Alice
@ IN NS ns02.picasoft.net. ; Bob
ns01 IN A 91.224.148.84 ; Alice IPv4
ns01 IN AAAA 2a03:7220:8080:5400::1 ; Alice IPv6
ns02 IN A 91.224.148.85 ; Bob IPv4
ns02 IN AAAA 2a03:7220:8080:5500::1 ; Bob IPv6
;;;;;;;;;;;;;;
;; Machines ;;
;;;;;;;;;;;;;;
pica01 IN A 91.224.148.57
pica01 IN AAAA 2a03:7220:8080:3900::1
pica02 IN A 91.224.148.60
pica02 IN AAAA 2a03:7220:8080:3c00::1
;;;;;;;;;;;;;;
;; Services ;;
;;;;;;;;;;;;;;
; Services sur pica01
www IN CNAME pica01.picasoft.net. ; Site web
week.pad IN CNAME pica01.picasoft.net. ; Etherpad week
doc IN CNAME pica01.picasoft.net. ; Serveur Web de documents techniques
; Services sur pica02
pad IN CNAME pica02.picasoft.net. ; Etherpad
team IN CNAME pica02.picasoft.net. ; Mattermost
wiki IN CNAME pica02.picasoft.net. ; Wiki
Nous commençons par indiquer les serveurs qui permettrons de gérer les requêtes DNS (dans la partie configuration des serveurs de nom), nous utilisons pour cela les enregistrements de type NS, le serveur primaire est ainsi ns01.picasoft.net
et le secondaire ns02.picasoft.net
. Il faut bien sûr mettre des enregistrements A (IPv4) et AAAA (IPv6) afin de savoir quelle adresse contacter lorsqu'on appelle ns01.picasoft.net
ou ns02.picasoft.net
.
Nous définissons ensuite nos machines (pica01 et pica02) grâce à des champs A et AAAA afin de pouvoir associer une adresse IP à leur nom (dans la partie machines).
Enfin nous définissons des alias (enregistrements CNAME) afin de lier facilement les services à la machine qui les héberge. Ainsi si le service change de machine il suffit de changer l'alias et si une machine change d'IP il suffit de changer ses enregistrements A et AAAA, les services qui lui sont associés pointeront alors automatiquement sur la bonne IP.
Le DNS inverse
Son principe est similaire à celui des DNS classiques sauf que le serveur recevra des IP et renverra les noms de domaine associés.
L'utilité de la résolution inverse
Ce DNS inverse est très souvent nécessaire pour que les réponses du serveur primaire soient considérés comme valides par certains systèmes. En effet, souvent les réponses d'un DNS primaire seront vérifiés à l'aide d'une requête au DNS inverse. S'il n'existe pas, la réponse ne sera pas considérée comme valide.
Exemple : Exemple de fichier de zone pour un DNS inverse
$TTL 86400
$ORIGIN 0.168.192.IN-ADDR.ARPA.
@ 1D IN SOA ns1.exemple.com. hostmaster.exemple.com. (
2002022401 ; serial
3H ; refresh
15 ; retry
1w ; expire
3h ; minimum
)
IN NS ns1.exemple.com.
IN NS ns2.smokeyjoe.com.
1 IN PTR ns1.exemple.com.
2 IN PTR www.exemple.com.
3 IN PTR bill.exemple.com.
4 IN PTR fred.exemple.com.
Comme on peut le constater ci-dessus, le fichier de zone est un peu différent.
Premièrement, le nom de la racine apparaît sous forme d'IP et à l'envers. En effet, ici, l'IP du serveur est 192.168.0.X. Ceci prend tout son sens puisque nous cherchons une résolution inverse. Il est également nécessaire de terminer l'IP de la racine par .IN-ADDR.ARPA., de la même manière, on devait terminer le nom de domaine de la racine par un point.
Enfin, on découvre un nouveau de type d'enregistrement : le PTR (pointeur).
Extrayons une ligne pour le comprendre :
2 IN PTR www.exemple.com.
Cette ligne signifie que l'IP "relative" 2 (correspondant à l'IPv4 192.168.1.2) pointe sur le nom de domaine www.exemple.com.
Notons qu'il est ici important d'avoir un point à la fin du nom de domaine car nous ne pouvons le définir de manière relative par rapport à la racine.
Exercice bilan sur les serveurs de noms de domaine
Si je demande au serveur racine l'adresse IP de wikipedia.org, me renverra-t-il l'adresse IP que je souhaite ?
Oui
Non
J'envoie, au serveur primaire de chatons.org, une requête pour avoir l'adresse IP de qwant.fr. Le serveur saura-t-il me répondre ?
Oui
Non
Combien un serveur DNS récursif aura besoin de réaliser de requêtes pour se rendre compte que l'adresse utcdecompiegne.fr n'existe pas ?
Un serveur DNS cache peut-il être indépendant ?
Oui
Non
Le nom de domaine test.en.exemple.fr fait-il partie de la zone exemple.fr ?
Oui
Non
Si je demande au serveur racine l'adresse IP de wikipedia.org, me renverra-t-il l'adresse IP que je souhaite ?
Oui
Non
Il ne pourra me répondre que l'adresse IP du serveur gérant le domaine .org. Ce second serveur se chargera de me renvoyer l'adresse de wikipedia.org.
J'envoie, au serveur primaire de chatons.org, une requête pour avoir l'adresse IP de qwant.fr. Le serveur saura-t-il me répondre ?
Oui
Non
Le serveur fait autorité sur sa zone. Or, celle-ci ne contient pas le domaine qwant.fr donc le serveur ne pourra renvoyer d'IP.
Combien un serveur DNS récursif aura besoin de réaliser de requêtes pour se rendre compte que l'adresse utcdecompiegne.fr n'existe pas ?
Le serveur fera d'abord une requête à la racine pour avoir l'adresse du serveur ayant autorité sur le domaine fr. C'est ce second serveur qui répondra négativement. On aura donc seulement deux requêtes.
Un serveur DNS cache peut-il être indépendant ?
Oui
Non
Il a besoin d'un serveur récursif qui fera des requêtes dont il retiendra les réponses.
Le nom de domaine test.en.exemple.fr fait-il partie de la zone exemple.fr ?
Oui
Non
Il en fait en effet partie car c'est le sous-domaine d'un sous-domaine de exemple.fr.