TP - Résolution des Noms M1204 - Fichier Hosts et Service DNS Patrice Gommery - 16/10/2015 OBJECTIF: Comprendre comment les noms de machines sont résolus en adresse IP U?lisa?on du fichier hosts et du service DNS Consignes générales : Dans tout le TP : - remplacez VMID par l'iden?fiant de votre machine virtuelle. - remplacez ID par la seconde par?e de l'iden?fiant (sans le 0 pour 02,03...) Le serveur FTP de la salle se trouve à l adresse : 172.16.100.1, l iden?fiant est mmis1, le mot de passe : PASSWORD Pour accéder à votre serveur, u?lisez la commande ssh 172.16.VM.ID -l root Pour accéder à votre machine virtuelle XP, ouvrez la console de supervision Proxmox : htps://172.16.0.250:8006 (Mots de passe changés lors des premiers TP) RESOLUTION DES NOMS - M1204 1
PRE-REQUIS : ( ET COMPLEMENT DU TP2) Dans notre configura?on, le poste XP (192.168.ID.3) devra pouvoir communiquer avec le serveur DNS de la salle (172.16.0.1). Pour cela, il u?lise comme passerelle notre serveur Debian (192.168.ID.2). Pour des raisons de simplifica?on de sa table de routage, le serveur DNS de la salle ne connait qu'une seule route vers votre réseau 192.168.ID.0 c'est l'adresse 172.16.ID.50. Nous devons donc ajouter cete adresse dans la configura?on de notre serveur Debian. Comment faire sans remplacer notre adresse 172.16.VM.ID et sans ajouter de carte réseau supplémentaire? Tout simplement en ajoutant une seconde adresse IP à notre première interface réseau (eth0). On parle alors aliasing_ip, cete op?on permet d'avoir jusqu'à 256 adresses IP par interface réseau en u?lisant les noms : eth0:0, eth0:1 etc... Pour résumé, notre serveur Debian doit donc avoir 3 adresses IP : eth0 : 172.16.VM.ID (L'IP principale de notre machine) eth0:0 : 172.16.ID.50 (L'IP pour les routes de la salle réseau) eth1 : 192.168.ID.2 (L'IP pour communiquer avec le poste XP) Pour ac?ver l'interface eth0:0, il suffit de la déclarer dans le fichier /etc/network/interfaces. Votre fichier doit donc ressembler à ceci : # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 172.16.VM.ID netmask 255.255.0.0 gateway 172.16.0.1 auto eth0:0 iface eth0:0 inet static address 172.16.ID.50 netmask 255.255.0.0 # The secondary network interface allow-hotplug eth1 iface eth1 inet static address 192.168.ID.2 netmask 255.255.255.0 Vous noterez que l'on a supprimé les routes vers les autres tables (TP2) et mis simplement comme passerelle (gateway) l'adresse du routeur de la salle 172.16.0.1, ce qui simplifie la configura?on. RESOLUTION DES NOMS - M1204 2
Après avoir rebooter (reboot), la commande ifconfig devrait vous renvoyer un résultat semblable à celui-ci : eth0 eth0:0 eth1 lo Link encap:ethernet HWaddr 00:20:15:0V:0M:ID inet adr:172.16.vm.id Bcast:172.16.255.255 Masque:255.255.0.0 adr inet6: fe80::220:15ff:fe01:606/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1228 errors:0 dropped:0 overruns:0 frame:0 TX packets:282 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:101931 (99.5 KiB) TX bytes:30887 (30.1 KiB) Link encap:ethernet HWaddr 00:20:15:0V:0M:ID inet adr:172.16.id.50 Bcast:172.16.255.255 Masque:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Link encap:ethernet HWaddr 2e:85:73:69:94:d7 inet adr:192.168.id.2 Bcast:192.168.ID.255 Masque:255.255.255.0 adr inet6: fe80::2c85:73ff:fe69:94d7/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1069 errors:0 dropped:0 overruns:0 frame:0 TX packets:67 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:88500 (86.4 KiB) TX bytes:7126 (6.9 KiB) Link encap:boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Vous remarquerez que eth0 et eth0:0 ont la même adresse MAC. Ce qui est logique puisqu'il s'agit de la même interface réseau avec plusieurs adresses IP. La commande route -n devrait vous retourner ceci : Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 192.168.ID.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 Si tout est correct, vous devriez "pinguer" le serveur DNS de la salle (172.16.0.1), mais aussi l'ip 192.168.autre ID.2 d'un autre serveur correctement configuré. RESOLUTION DES NOMS - M1204 3
Pour le poste XP: IP : 192.168.ID.3 Passerelle : 192.168.ID.2 Vérifiez votre IP et sa passerelle à l'aide de la commande ipconfig /all Re-configurez XP si nécessaire (TP2) SI tout est correct, votre poste XP doit être capable de "pinguer" le serveur DNS de la salle (172.16.0.1). Vous pouvez aussi essayer la commande tracert 172.16.0.1 pour voir la route empruntée par vos paquets. RAPPEL DU COURS : En quoi consiste la résolu?on des noms? Simplement à conver?r un nom de machine en adresse IP. CeTe opéra?on est nécessaire car les machines au niveau de la couche réseau ne communiquent entre-elles qu avec leurs adresses IP. Que ce soit sous XP ou Debian, l ordre de résolu?on des noms est le suivant : 1. Le système consulte son cache (cache DNS) pour savoir s il connait déjà l IP de la machine demandée. 2. Le système consulte le fichier hosts pour savoir si une résolu?on en local est possible. 3. Le système consulte le serveur DNS du réseau, à condi?on qu il connaisse l adresse IP de celui-ci. PARTIE 1 - LE FICHIER HOSTS : Sous Debian, le fichier hosts se trouve dans le dossier /etc. Sous XP, le fichier hosts se trouve dans le dossier C:\WINDOWS\system32\drivers\etc Sous XP, il existe un fichier hosts.sam. ATTENTION ce fichier n est qu un exemple (sample) et n est pas opéra?onnel. DECOUVERTE : (Sous Debian) Commencez par éditer le fichier /etc/hosts de votre serveur Debian : 127.0.0.1 localhost 127.0.1.1 serveur.domvmid.net serveur # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopbak ff02::1 ip6-allnodes ff02::2 ip6-allrouters Changez VMID par l'iden?fiant de votre machine. RESOLUTION DES NOMS - M1204 4
Pour l instant seules les deux premières lignes nous intéressent, puisque qu elles concernent le protocole IPv4. Nous étudierons le protocole IPv6 plus tard. Comme vous pouvez le voir, la syntaxe est assez simple. Pour chaque ligne : 1 Adresse IP, un Nom (ou plusieurs séparés par des espaces) Pour l instant notre système connait donc 3 noms : localhost qu il résoudra en adresse 127.0.0.1, serveur.domvmid.net qu il résoudra en 127.0.1.1 serveur qu il résoudra aussi en 127.0.1.1 Notez que ces deux adresses IP font par?e d un réseau par?culier que nous avions évoqué lors de l étude des adresses IPv4. En effet le réseau 127.0.0.0 (et donc toutes les adresses de ce réseau) sont opéra?onnelles et ac?vées sur votre machine dès la mise en œuvre d IP. Vous pouvez donc les u?liser pour appeler des services en local, elles sont implémentées directement dans la pile IP et n ont pas besoin qu une carte réseau soit opéra?onnelle pour fonc?onner (Essayez de faire un ping vers n importe quelle adresse de ce réseau, vous verrez qu elle répond, même si vous débranchez le câble réseau). Ce réseau est aussi appelé réseau de loopback. Ici, nous voyons donc que le nom donné à l adresse 127.0.0.1 est localhost. Ce nom par?culier est commun à tous les systèmes u?lisant IP. Faites ping localhost sur n importe quelle machine (Linux, Windows, mac, Android etc..) vous verrez que le nom sera résolu avec l adresse 127.0.0.1 (et donc que le ping fonc?onnera) La seconde ligne de notre fichier nous permet aussi d accéder au loopback avec deux autres noms : serveur.domvmid.net qui est le nom COMPLET de notre machine. Notre machine s appelle donc serveur et fait par?e du domaine domvmid.net (votre domaine DNS) serveur est le nom simple de notre machine. Si vous faites un «ping» vers un de ces deux noms, vous ob?endrai une réponse de l adresse 127.0.1.1 Notez que ce n est pas la vraie adresse IP de votre machine sur le réseau, seulement une adresse du réseau de loopback. Vous voulez résoudre d autres noms de machine? Avec le fichier hosts, pas de souci, il suffit de rajouter des lignes en respectant la même syntaxe : Une Adresse IP suivi d un ou plusieurs noms séparés par des espaces. RESOLUTION DES NOMS - M1204 5
EXERCICE 1 : Ajoutez les lignes suivantes dans votre fichier hosts (juste en dessous de la ligne de l adresse 127.0.1.1). Surtout ne supprimez pas les lignes existantes, elles sont nécessaires au bon fonc?onnement de votre système. En effet, de nombreux processus (ou services) communiquent entre eux en u?lisant le nom localhost. 127.0.0.1 localhost 127.0.1.1 serveur.domvmid.net serveur 172.16.ID.50 VotrePrénom (ou un surnom si vous voulez) 192.168.ID.2 serveurid 192.168.ID.3 posteid 172.16.0.1 spiderman 172.16.100.1 www.google.fr 195.83.128.55 mmi 172.16.0.1 www.a203.net (Notez qu aucun redémarrage n est nécessaire pour que ces lignes soient prises en compte par le système) Maintenant, faites des «ping» en u?lisant les différents noms. Exemple : ping VotrePrénom Essayez aussi de "pinguer" les autres postes en u?lisant leur nom (serveurx) où le prénom de votre voisin. Est-ce que tout fonc?onne? Tous les noms sont-ils bien résolus en adresse IP? ATTENTION : faites bien la dis?nc?on entre le résultat du ping et la résolu?on du nom. Si la commande vous répond : unknown host. C'est clairement un problème de résolu?on. Si la commande répond : Network ou Host unreachable c'est peut-être juste un problème de communica?on, vérifiez : Si le ping fonc?onne avec l'ip, mais pas avec le nom c'est la RESOLUTION QUI NE FONCTIONNE PAS. Si le ping ne fonc?onne pas avec l'ip c'est un problème de communica?on. Vous n'arrivez pas à "pinguer" les adresses de votre voisin avec leurs noms? A t'il bien renseigné son fichier hosts? Vous "pinguer" bien son IP, mais la résolu?on ne marche pas? Pourquoi? Que devez-vous faire pour régler le problème? RESOLUTION DES NOMS - M1204 6
RESOLUTION DES NOMS - M1204 7
REPONSE : Le fichier hosts ne fait la résolu?on qu'en local. Son contenu n'est valable que pour vous. Pour résoudre les noms de vos voisins, vous devez les rentrer vous-mêmes dans votre fichier host. Si nous voulons simplifier la résolu?on au niveau de la salle, il faut u?liser le service DNS. PARTIE 2 - LE SERVICE DNS : Comme indiqué dans le cours, pour u?liser le service DNS nous devons connaitre 3 choses : L'adresse IP du serveur DNS que nous voulons u?liser. Nous u?liserons celui de la salle : 172.16.0.1 Nous devons savoir dans quel domaine se trouvent les machines que nous cherchons. (ex : domvmid.net) Nous devons savoir configurer notre poste pour lui dire où se trouve le serveur DNS. Sous Debian, le fichier à connaitre se nomme resolv.conf et se trouve dans le dossier /etc Commençons par vérifier le contenu de ce fichier : domain a203.net search a203.net nameserver 172.16.0.1 Normalement votre fichier devrait ressembler au contenu ci-dessus. (C'est celui envoyé par le serveur DHCP lors du premier TP). Si ce n'est pas le cas, modifiez-le en conséquence. Quelques explica?ons sur son contenu : domain : indique à quel domaine appar?ent votre machine (pour l'instant elle appar?ent encore au domaine de la salle a203.net, nous allons changer cela après) search : indique le domaine de recherche par défaut. Si vous ne spécifier par un nom de domaine derrière un nom, c'est dans ce domaine par défaut que le server cherchera la machine. nameserver : C'est le paramètre le plus important car c'est celui qui indique à votre machine ou se trouve le serveur DNS à interroger. Si ce paramètre est mal renseigné ou inexistant, votre machine ne pourra résoudre les noms qu'avec son fichier host (ce qui vous l'avez compris dans l'exercice d'avant est rapidement limité) Modifiez le fichier resolv.conf pour l'adapter à votre configura?on : domain domvmid.net search domvmid.net nameserver 172.16.0.1 Votre domaine est donc :domvmid.net Vous u?lisez le serveur DNS de la salle : 172.16.0.1 RESOLUTION DES NOMS - M1204 8
EXERCICE 2 : Pour ne pas être perturbés par le résultat des ping, nous allons u?liser la commande nslookup. CeTe commande n'effectue que la résolu?on des noms, elle ne fait pas de test de communica?on (sauf vers le serveur DNS lui-même) La syntaxe est très simple : nslookup NomDeMachine. Exemple : nslookup serveur Réponse du système : Server : 172.16.0.1 Address: 172.16.0.1#53 Name: Address: serveur.domvmid.net 172.16.VM.ID Comment interpréter le résultat? Celui-ci est composé de deux par?es : Première par?e : Les informa?ons sur le serveur DNS interrogé : Server : 172.16.0.1 Donne le nom (ou ici l'adresse) du serveur interrogé donc celui que vous avez déclaré dans le fichier resolv.conf Address : 172.16.0.1 Confirme l'adresse du serveur et le port u?lisé par le service Rappelez-vous : Service DNS Port UDP 53 La seconde par?e correspond à la réponse du serveur : Name: serveur.domvmid.net Le nom complet à résoudre. Remarquez que le nom de domaine a203.net a été ajouté automa?quement C'est le résultat de la direc?ve search du fichier resolv.conf Address: 172.16.VM.ID L'adresse IP associée au nom sur le serveur DNS. Donc le résultat de la résolu?on. Pour certains noms, vous verrez une informa?on supplémentaire : le canonical name Ce nom appelé aussi CNAME n'est pas le vrai nom de la machine, mais un ALIAS. Tous les noms de services comme www, vp, mail etc. sont généralement des alias. Le vrai nom de la machine est celui indiqué par Name Si le serveur DNS ne trouve pas le nom dans sa base, Il vous répondra simplement: server cant' find NomMachine : SERVFAIL REMARQUE : Vérifiez bien que vous interrogez le bon serveur (observez la première par?e de la réponse) RESOLUTION DES NOMS - M1204 9
Maintenant, u?lisez la commande nslookup, testez les noms suivants et essayez de répondre aux ques?ons. spiderman VotrePrénom Le serveur a-t'il résolu tous les noms? Normalement NON, il n'en à résolu aucun!!! Pourtant si vous faite un ping vers VotrePrénom ou spiderman, la résolu?on marche, pourquoi? RESOLUTION DES NOMS - M1204 10
Vous l'avez compris, les "ping" fonc?onnent, car l'informa?on se trouve dans le fichier hosts. Celui-ci est prioritaire sur l'interroga?on du serveur DNS. De plus nslookup n'interroge que le serveur DNS, pas le fichier hosts. Pour coninuer, supprimer toutes les lignes que vous avez ajoutées dans le fichier hosts. Surtout ne supprimez pas les lignes concernant les adresses du réseau 127 et ipv6. Vous ne pouvez plus faire de ping vers VotrePrénom (ni vers spiderman), comment pouvez-vous corriger le problème? RESOLUTION DES NOMS - M1204 11
Techniquement, vous ne pouvez-pas!!!! Si vous n'u?lisez pas le fichier hosts, seul le serveur DNS peut résoudre les noms de machines. Mais vous ne pouvez-pas modifiez le contenu d'une zone DNS si vous n'êtes pas administrateur du service et de la zone. Il faut contacter l'administrateur du service pour qu'il fasse les modifica?ons (ou ajouts) dans le registre DNS.Dans notre cas, demandez à l'enseignant d'ajouter votre prénom et votre IP sur le serveur DNS de la salle. Lorsque tout le monde aura ajouté son prénom, u?lisez les commandes nslookup et ping pour interroger les machines de la salle. ATTENTION : Les prénoms ont été ajoutés sur le domaine de la salle : a203.net Il faut donc uiliser le nom complet : VotrePrénom.a203.net pour la résoluion. idem pour spiderman. Pour finir, une dernière ques?on de réflexion. Pouvez-vous devinez les noms que connait le serveur DNS? EXERCICE 3 : (S'il reste du temps) Allumez votre machine XP, configurez IP et renseignez l'adresse du serveur DNS (172.16.0.1) Ouvrez l'invite de commande et faites des tests avec les commandes ping et nslookup en u?lisant les noms de machines que vous connaissez. Peite curiosité praique : Sous XP (et Windows en général), nous disposons d'une commande pour voir le contenu du cache DNS : ipconfig /displaydns et une autre pour le vider : ipconfig /flushdns RESOLUTION DES NOMS - M1204 12