DNS Domain Name System Dans ce dossier, nous allons expliquer le rôle et le fonctionnement d un système DNS et ensuite, nous allons montrer la mise en place d un serveur DNS secondaire. S.VAUGEOIS 24/11/2014
LE SYSTEME DNS Introduction : Un système DNS (domain name system, en français, système de nom de domaine) a pour but de mettre en correspondance un nom FQDN, c'est-à-dire un nom pleinement qualifié (ex : www.google.fr), et une adresse IP. Théorie : Tout d abord, il faut savoir qu un système DNS fonctionne dans un environnement TCP/IP. Son rôle est de mettre en relation un nom FQDN et une adresse IP. En effet, lorsque l on va sur Internet pour faire une requête, nous tapons dans la barre URL, un nom FQDN et non une adresse IP car pour tous les utilisateurs, il est plus simple de se rappeler d un nom FQDN que d une adresse IP. Cependant, la question qu on peut se poser est : «Comment arrive-t-on sur le site choisi en tapant juste un nom FQDN?». La réponse que l on peut apporter est qu un site est reconnu qu à partir d une adresse IP. Néanmoins, on se demande comment se fait la conversion entre un nom FQDN et une adresse IP, cette conversion est faite par le système DNS. En effet, lorsqu une requête est faite (ex : srv.solene.sio), le système DNS reçoit cette demande, qui l envoie en serveur gérant le domaine «sio», celui-ci envoie la demande au serveur DNS qui s occupe du domaine «solene», et dans ce domaine, il donne l adresse IP de srv. Lorsque l adresse IP est trouvée, celle-ci remonte tout le chemin parcouru, c est-à dire «solene» puis «sio», et ensuite, comme la correspondance est faite, nous arrivons sur la page «srv.solene.sio». Schéma représentant le fonctionnement du système DNS :
Grâce au schéma, nous allons pouvoir comprendre le fonctionnement d un système DNS, car il faut savoir qu une arborescence hiérarchique est représentée par un arbre inversé. Si nous prenons l exemple, la racine est «.» qui n apparaît pas et qui serait placé «srv.solene.sio.», ensuite, il y a «sio» qui est le domaine de premier niveau, puis «solene» qui est le domaine de second niveau, enfin «srv» correspond au nom de la machine. Lorsque nous sommes arrivés en bas de l arborescence (ici le nom de machine), nous avons connaissance de son adresse IP, il ne reste plus qu à renvoyer l adresse IP correspondante en faisant le chemin inverse. Dans le plus grand cas, il est conseillé d avoir un serveur DNS secondaire, car lorsque le serveur DNS primaire tombe en panne ou ne connaît pas l adresse IP alors il transmet la demande au DNS secondaire qui lui traitera les demandes tant que le serveur DNS primaire ne sera pas réparer ou ne connaîtra pas la réponse. Pratique : Tout d abord, nous allons s occuper du serveur DNS primaire, celui-ci a comme configuration : Adresse IP : 172.17.0.16 Masque : 255.255.0.0 Nom de machine : srv-dns1 Ensuite, nous devons installer les paquets bind et dnsutils sur notre serveur, la commande à utiliser est : #apt-get install bind9 dnsutils Dès cette installation faite, votre serveur DNS démarre. Pour vérifier que le service est bien lancé, vous pouvez utiliser la commande suivante : #ps ef grep named Si votre service fonctionne, vous devriez avoir quelque chose qui ressemble à : Bind 10156 1 0 16.20? 00 :00 :00 /usr/sbin/named U bind Root 10172 4062 0 16.23 tty1 00:00:00 grep bind Pendant ce TP, vous allez devoir allumer, éteindre ou bien redémarrer votre serveur bind, vous allez utiliser la commande suivante: #etc/init.d/bind9 reload/start/stop
Ensuite, vous devez installer le paquet nmap qui permettra de savoir si votre serveur est à l écoute et sur quels ports il est, vous utiliserez les commandes suivantes : #apt-get install nmap #nmap su 172.17.0.16 (pour l installation) (qui permet de connaître si il est à l écoute et sur quel port, l adresse 172.17.0.16 correspond à l adresse IP du serveur DNS primaire) Ensuite, vous devez vérifier si le paquet locate est déjà installé sinon installez le, en utilisant la commande suivante : #apt-get install locate Puis, vous devez mettre la base à jour, pour cela vous allez utiliser la commande suivante : #updatedb Ensuite, dans le fichier /etc/bind/named.conf.options, vous devez indiquer une adresse IP d un autre serveur DNS qui, lors que votre serveur DNS ne pourra pas répondre à une demande, recevra cette demande et y répondra. Pour cela, vous devrez rajouter la ligne suivante : Forwarders ( ) ; 8.8.8.8 ; Dnssec-validation auto ; Pour vérifier que ce que vous avez écrit auparavant fonctionne, essayer de résoudre l adresse suivante www.bic.com, en utilisant la commande suivante #dig www.bic.com (Cette commande donne plus d informations que la commande nslookup, mais si vous voulez utiliser nslookup, vous pouvez)
Ensuite, vous devez configurer la zone principale, pour cela vous devez aller sur /etc/bind/named.conf.local et avoir les informations suivantes : Zone «solene.sio» { Type master ; (indique le domaine solene.sio est hébergé sur ce serveur) (master désigne que la zone est maître) File «/etc/bind/solene.sio.hosts» ; (désigne le fichier où sont écrits les détails de la zone principale) }; Dans ce même fichier, vous devez indiquer aussi la zone inverse, en utilisant les informations suivantes : Zone «0.17.172.in-addr.arpa» { Type master ; File /etc/bind/solene.sio.inverse ; (désigne le fichier où sont écrits les détails de la zone inverse) } ; Maintenant, vous devez configurer le fichier /etc/bind/solene.sio.hosts qui correspond à votre zone principale, vous utiliserez les lignes suivantes : @ IN SOA srvdns1.solene.sio. webmaster.solene.sio. ( 2009110405 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expires after 1 week 86400 ) ; minimum TTL of 1 day @ IN NS srvdns1.solene.sio. srvdns1 IN A 172.17.0.16
www IN CNAME srvdns1 www.solene.sio IN CNAME srvdns1 pc1 IN A 172.17.0.1 Ensuite, vous devez configurer votre fichier pour la zone inverse qui est /etc/bind/solene.sio.inverse, en utilisant les informations suivantes : @ IN SOA srvdns1.solene.sio. admin.solene.sio. ( 2009110403 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expires after 1 week 86400 ) ; minimum TTL of 1 day @ IN NS srvdns1.solene.sio. 16 IN PTR srvdns1.solene.sio. 1 IN PTR pc1.solene.sio. Pour vérifier que vos fichiers de configurations sont correctement écrits, vous pouvez utiliser la commande suivante : #named-checkconf solene.sio /etc/bind/solene.sio.hosts (pour vérifier le fichier de la zone principale du domaine solene.sio) #named-checkconf solene.sio /etc/bind/solene.sio.inverse (pour vérifier le fichier de la zone inverse du domaine solene.sio) Pour tester si vos configurations fonctionnent bien, vous pouvez faire un nslookup : #nslookup www Cela vous donnera sur quelle adresse IP il pointe et sur quel serveur DNS
2/Maintenant, nous allons installer une redondance de serveurs DNS, en installant un serveur secondaire : Tout d abord, vous configurez votre serveur DNS secondaire en donnant une adresse IP, en installant les commandes nécessaires comme expliquer auparavant. Ici, la configuration est la suivante : Adresse IP : 172.17.0.17 Masque : 255.255.0.0 Nom de machine : srv-dns2 Ensuite, sur votre serveur DNS primaire, vous allez devoir ajouter 2 lignes dans le fichier /etc/bind/named.conf.local qui sont les suivantes : Dans la zone principale, en dessous de File /etc/bind/solene.sio.hosts, vous ajoutez : Allow-transfer {172.17.0.17 ; } ; (l adresse IP du serveur DNS secondaire) Dans la zone inverse, en dessous de File /etc/bind/solene.sio.inverse, vous ajoutez : Allow-transfer {172.17.0.17 ; } ; (l adresse IP du serveur DNS secondaire) Puis, dans lez fichier /etc/bind/solene.sio.hosts, vous ajoutez les lignes suivantes : @ IN NS srvdns2.solene.sio. (Ligne à mettre si vous avez un DNS secondaire) srvdns2 IN A 172.17.0.17 (ligne à mettre si vous avez un DNS secondaire)
Puis, dans lez fichier /etc/bind/solene.sio.inverse, vous ajoutez les lignes suivantes : @ IN NS srvdns2.solene.sio. (Ligne à mettre si vous avez un DNS secondaire) 17 IN PTR srvdns2.solene.sio. (Ligne à mettre si vous avez un DNS secondaire) ATTENTION, il est primordial d ajouter 1 au Serial number, dans les 2 fichiers ci-dessus pour que la nouvelle configuration soit prise en compte Ensuite, sur le serveur secondaire, vous devez configurer le fichier etc/bind/named.conf.local, avec les informations suivantes : Zone solene.sio { Type slave ; File /etc/bind/solene.sio.hosts ; Masters { 172.17.0.16 ; } ; } ; Zone «0.17.172.in-addr.arpa { Type slave; File /etc/bind/solene.sio.inverse ; Masters {172.17.0.16 ;}; };
Ensuite, vous devez redémarrer vos deux serveurs DNS pour que les configurations soient prises en compte, vous utiliserez la commande suivante: #/etc/init.d/bind9 restart Dans le fichier resolv.conf, sur les deux serveurs DNS, vous devez inscrire les informations suivantes : Search solene.sio Nameserver 172.17.0.16 (serveur primaire) Nameserver 172.17.0.17 (serveur secondaire) Quand vous avez fait toutes ces configurations, vous devez tester vos serveurs. Pour cela, vous devez prendre un client, sur lequel vous entrez les adresses IP de vos serveurs DNS,et vous faites des pings ou des nslookup, pour savoir quel serveur DNS vous répond, puis éteignez un des serveurs et tester de nouveau. Conclusion : En conclusion, on peut dire que le domain name system a de grands avantages car il permet aux utilisateurs de faire des requêtes à partir de nom FQDN et ce système en tire une adresse IP et permet à l utilisateur d obtenir la page web désirée. Cependant, un seul DNS ne peut répondre correctement à toutes les requêtes reçues, c est pourquoi, la mise en place d un serveur DNS secondaire permet en cas de non réponse du DNS primaire de pouvoir répondre à celle-ci et ainsi l utilisateur pourra avoir la page web souhaitée.