Debian logo [inetdoc.LiNUX]

3. Installation du service DNS cache-only

On sait que le logiciel à utiliser est appelé Berkeley Internet Name Domain (BIND). On oriente donc la recherche dans la base de données des paquets de la distribution vers la chaîne de caractères qui débute par "bind".

$ aptitude search ?name"(^bind)"
p   bind9         - Internet Domain Name Server
p   bind9-doc     - Documentation for BIND
i   bind9-host    - Version of 'host' bundled with BIND 9.X
p   bind9utils    - Utilities for BIND
p   bindfs        - mirrors or overlays a local directory with altered permissions
p   bindgraph     - DNS statistics RRDtool frontend for BIND9

Les paquets à installer à partir de la liste ci-dessus sont : bind9 et bind9-doc. Une fois l'opération # aptitude install bind9 bind9-doc effectuée, on vérifie le résultat.

$ aptitude search ~ibind9
i   bind9         - Internet Domain Name Server
i   bind9-doc     - Documentation for BIND
i   bind9-host    - Version of 'host' bundled with BIND 9.X
i A bind9utils    - Utilities for BIND
i   libbind9-60   - BIND9 Shared Library used by BIND

On valide l'activité du service à partir de la liste des processus, des ports ouverts en écoute sur le réseau et des messages système. La «singularité» du service DNS provient du nom du processus exécuté : named.

Liste des processus actifs
# ps aux |grep named
bind       917  0.0  2.5 119420 12972 ?        Ssl  12:27   0:00 /usr/sbin/named -u bind
Ports réseau ouverts

En utilisant la commande lsof, on obtient la liste suivante.

# lsof -i |grep named
named      917        bind   20u  IPv6   3709      0t0  TCP *:domain (LISTEN)
named      917        bind   21u  IPv4   3714      0t0  TCP localhost:domain (LISTEN)
named      917        bind   22u  IPv4   3716      0t0  TCP 192.200.0.3:domain (LISTEN)
named      917        bind   23u  IPv4   3719      0t0  TCP localhost:953 (LISTEN)
named      917        bind   24u  IPv6   3720      0t0  TCP localhost:953 (LISTEN)
named      917        bind  512u  IPv6   3708      0t0  UDP *:domain
named      917        bind  513u  IPv4   3713      0t0  UDP localhost:domain
named      917        bind  514u  IPv4   3715      0t0  UDP 192.200.0.3:domain

En utilisant la commande netstat, on obtient les mêmes informations avec un affichage symétrique.

# netstat -autp |grep named
tcp        0      0 localhost:953           *:*         LISTEN      917/named
tcp        0      0 192.200.0.3:domain      *:*         LISTEN      917/named
tcp        0      0 localhost:domain        *:*         LISTEN      917/named
tcp6       0      0 localhost:953           [::]:*      LISTEN      917/named
tcp6       0      0 [::]:domain             [::]:*      LISTEN      917/named
udp        0      0 192.200.0.3:domain      *:*                     917/named
udp        0      0 localhost:domain        *:*                     917/named
udp6       0      0 [::]:domain             [::]:*                  917/named
Messages systèmes
# grep named /var/log/syslog
named[917]: starting BIND 9.7.0-P1 -u bind
May 24 12:27:42 srvr named[917]: built with '--prefix=/usr' <snipped/>
named[917]: adjusted limit on open files from 1024 to 1048576
named[917]: found 1 CPU, using 1 worker thread
named[917]: using up to 4096 sockets
named[917]: loading configuration from '/etc/bind/named.conf'
named[917]: reading built-in trusted keys from file '/etc/bind/bind.keys'
named[917]: using default UDP/IPv4 port range: [1024, 65535]
named[917]: using default UDP/IPv6 port range: [1024, 65535]
named[917]: listening on IPv6 interfaces, port 53
named[917]: listening on IPv4 interface lo, 127.0.0.1#53
named[917]: listening on IPv4 interface eth0, 192.200.0.3#53
named[917]: generating session key for dynamic DNS
named[917]: automatic empty zone: 254.169.IN-ADDR.ARPA
named[917]: automatic empty zone: 2.0.192.IN-ADDR.ARPA
named[917]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
named[917]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
named[917]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
named[917]: automatic empty zone: D.F.IP6.ARPA
named[917]: automatic empty zone: 8.E.F.IP6.ARPA
named[917]: automatic empty zone: 9.E.F.IP6.ARPA
named[917]: automatic empty zone: A.E.F.IP6.ARPA
named[917]: automatic empty zone: B.E.F.IP6.ARPA
named[917]: command channel listening on 127.0.0.1#953
named[917]: command channel listening on ::1#953
named[917]: zone 0.in-addr.arpa/IN: loaded serial 1
named[917]: zone 127.in-addr.arpa/IN: loaded serial 1
named[917]: zone 255.in-addr.arpa/IN: loaded serial 1
named[917]: zone localhost/IN: loaded serial 2
named[917]: running

Comme tout service implanté sur un système GNU/Linux, les fichiers de configuration sont placés dans le répertoire /etc/.

# dpkg -L bind9 |grep etc
/etc
/etc/init.d
/etc/init.d/bind9
/etc/network
/etc/network/if-down.d
/etc/network/if-down.d/bind9
/etc/network/if-up.d
/etc/network/if-up.d/bind9
/etc/ppp
/etc/ppp/ip-up.d
/etc/ppp/ip-up.d/bind9
/etc/ppp/ip-down.d
/etc/ppp/ip-down.d/bind9
/etc/ufw
/etc/ufw/applications.d
/etc/ufw/applications.d/bind9
/etc/bind
/etc/bind/named.conf.default-zones
/etc/bind/named.conf
/etc/bind/zones.rfc1918
/etc/bind/db.127
/etc/bind/db.root
/etc/bind/db.255
/etc/bind/bind.keys
/etc/bind/db.empty
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/bind/db.local
/etc/bind/db.0
/etc/apparmor.d
/etc/apparmor.d/force-complain
/etc/apparmor.d/usr.sbin.named

De la même façon, les données du service doivent être placées dans le répertoire /var/.

# dpkg -L bind9 |grep var
/var
/var/cache
/var/cache/bind
/var/run
/var/run/named

C'est dans le répertoire /var/cache/bind/ que l'on place les fichiers contenant les enregistrements ou Resource Records (RRs). Ces enregistrements correspondent aux zones sur lesquelles le serveur a autorité. Ce choix de répertoire fait partie des options du service. Voir l'option directory dans le fichier /etc/bind/named.conf.options.

L'installation par défaut du paquet de la distribution fournit une configuration de type cache-only :

  • Il ne contient aucune déclaration de zone. Le fichier /etc/bind/named.conf.local ne contient que des commentaires.

  • Le répertoire /var/cache/bind/ est vide.

  • Le service peut contacter les serveurs racine. La liste de ces serveurs est donnée dans le fichier db.root.

  • Le service étant actif, il peut prendre en charge les requêtes et mémoriser dans son cache les résultats.

Vu du système sur lequel le service est exécuté, on optimise le traitement des requêtes en alimentant puis en utilisant le cache mémoire. Vu de l'Internet, on surcharge les serveurs racines en les sollicitant directement à chaque nouvelle requête.

C'est le fichier /etc/resolv.conf qui sert à configurer la partie client du service de résolution des noms ; le resolver. Dans le cas des postes de travaux pratiques, la configuration initiale du resolver est prise en charge par le service DHCP.

On doit éditer le fichier /etc/resolv.conf pour qu'il fasse référence au service de résolution des noms installé sur le système.

# cat /etc/resolv.conf 
nameserver 127.0.0.1

La commande dig est le «couteau suisse» qui va permettre d'effectuer tous les tests de requêtes DNS. On obtient le nom du paquet auquel elle appartient à partir d'une recherche du type :

# dpkg -S `which dig`
dnsutils: /usr/bin/dig

Le paquet dsnutils fait partie de l'installation de base. Il est donc présent sur tous les systèmes.