Table of Contents
Aujourd'hui: DNS et BIND9
FQDN: fully qualified domain name
DNS: Domain Name Service: IP ↔ nom
Resolution de nom
Locale
linux@403-15:~$ hostname 403-15 linux@403-15:~$ hostname --fqdn 403-15.deblab.org
Dans /etc/hosts, il faut que le FQDN soit le premier nom après l'adresse IP:
127.0.0.1 403-15.deblab.org localhost 403-15
Les suivants sont des alias.
/etc/nsswitch.conf
La ligne:
hosts: files dns
Lorsque le système doit résoudre un nom, il va d'abord aller voir dans le fichier /etc/hosts pour la résolution d'un nom; s'il ne trouve pas, il va faire une requête DNS (va voir dans /etc/resolv.conf, qui est un fichier soit rempli manuellement, soit par DHCP).
Dans /etc/resolv.conf, si la première ligne ressemble à
search mondomaine.com
Cela signifie que s'il faut résoudre le nom d'une machine dont le domaine n'est pas fourni, il faut utiliser mondomaine.com.
Via un serveur DNS
Dans un nom, l'échellon le plus haut est la racine (root), représenté par un point (.).
Une requête de résolution de nom (ex: www.deblab.org):
- regarde dans /etc/nsswitch.conf
- regarde dans /etc/hosts
- regarde dans /etc/resolv.conf
- contacte le premier serveur de la liste dans /etc/resolv.conf
- si le serveur n'a pas l'information, il va demander à un des 13 root servers quel est le serveur ayant autorité sur les .org
- il va demander au serveur gérant les .org qui a autorité sur deblab.org
- ensuite, il va demander à ce serveur quelle est l'IP de la machine www.deblab.org
- finalement, le serveur DNS renseigné dans /etc/resolv.conf donne la réponse (l'adresse IP) a la machine
BIND
Berkeley Internet Name Domain. C'est le serveur de nom que nous allons utiliser, en version 9: bind9.
aptitude install bind9
DNS primaire: responsable pour un domaine DNS secondaire: backup du primaire
Configuration
Fichier principal: /etc/bind/named.conf Pour ajouter un domaine
- modifier /etc/bind/named.conf.local (plus propre).
- ajouter le fichier de zone: /var/cache/bind/truc.be.zone.conf (on y met à quelle IP correspond www.truc.be, ftp.truc.be, etc.)
Exercice: mettre la machine de son voisin comme résolveur
changer /etc/resolv.conf, en ne laissant plus que la ligne:
nameserver 192.168.2.199
Essayer de résoudre une nom de domaine:
ping www.toto.com
On voit que ça fonctionne.
Ensuite, interroger le serveur du voisin avec la commande dig (dans le package dnsutils):
dig www.google.com ; <<>> DiG 9.2.4 <<>> www.google.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20807 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 900 IN CNAME www.l.google.com. www.l.google.com. 300 IN A 66.249.93.99 www.l.google.com. 300 IN A 66.249.93.104 ;; AUTHORITY SECTION: l.google.com. 86400 IN NS e.l.google.com. l.google.com. 86400 IN NS a.l.google.com. l.google.com. 86400 IN NS b.l.google.com. l.google.com. 86400 IN NS c.l.google.com. l.google.com. 86400 IN NS d.l.google.com. ;; Query time: 311 msec ;; SERVER: 192.168.2.199#53(192.168.2.199) ;; WHEN: Fri Oct 14 14:43:59 2005 ;; MSG SIZE rcvd: 164
L'antépenultième ligne confirme qu'on utilise bien le serveur du voisin.
Ajout d'une zone
Dans /etc/bind/named.conf.local, ajouter ce qui suit pour le domaine truc3.be:
zone "truc3.be" { type master; file "truc3.zone"; };
Cela signifie que le serveur est DNS primaire et que les informations concernant le domaine se trouve dans /var/cache/bind/truc3.zone.
Vérifier qu'il n'y a pas d'erreur de syntaxe:
named-checkconf
Ensuite, rapatrier en ftp le fichier mondomaine.org.zone
Nous allons le modifier pour que le serveur puisse gérer le domaine truc3.be
; ENREGISTREMENT "SOA" (Start Of a zone of Authority). @ IN SOA dns.truc3.be. root.dns.truc.be. (
le serveur de nom est dns.truc3.be et l'adresse de contact est root@dns.truc.be
2005101401
Date de mise à jour yyyymmddxx où xx est la xième mise à jour du jour.
; ENREGISTREMENTS "NS" truc3.be. IN NS dns truc3.be. IN NS dns2
Les nameservers sont dns.truc3.be comme DNS primaire et dns2.truc3.be comme DNS secondaire.
; ENREGISTREMENTS "A" dns IN A 192.168.2.118 403-10 IN A 192.168.2.118
Ce sont les records les plus importants.
; ENREGISTREMENTS "CNAME" www IN CNAME 403-10
Définit un alias www → 403-10
Vérifier la syntaxe du fichier:
named-checkzone truc3.be /var/cache/bind/truc3.be.zone
Pour redémarrer le service:
/etc/init.d/bind9 restart
si on veut vider le cache
/etc/init.d/bind9 reload
si on ne veut pas vider le cache.
DNS secondaire pour un domaine
Pour faire un DNS secondaire, dans le fichier /etc/bind/named.conf.local, il faut mettre ceci:
zone "rafael.com" { type slave; file "rafael.com.zone"; masters { 192.168.2.199; }; };
Ensuite, lorsqu'on redémarre le service, il va chercher le fichier de la zone sur le serveur primaire (pour cette zone).
C'est un trou de sécurité: restreindre l'accès.
Pour essayer: sur le DNS primaire, couper le service:
/etc/init.d/bind9 stop
Sur le secondaire, faire une résolution de nom après s'être assuré qu'on a bien mis le secondaire dans /etc/resolv.conf.
Cache DNS
Configuration dans /etc/bind/named.conf.options Ajouter:
forwarder { 212.68.193.32; 212.68.193.30; };
où 212.68.193.32 et 212.68.193.30 sont 2 serveurs DNS (ex: ceux de Brutele ici)
et redémarrer le service.