3. Installation du service DNS cache-only

Avant d'aborder la configuration du service DNS, il faut passer par l'étape rituelle de sélection et d'installation des paquets contenant les outils logiciels de ce service.

Q2.

Quels sont les paquets Debian correspondant au service DNS ?

Reprendre les différentes possibilités d'interrogation de la base de données des paquets vues lors des travaux pratiques précédents. On ne retient que les paquets relatifs à la version 9.x du logiciel BIND (Berkeley Internet Name Domain).

On oriente 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 ^bind
p   bind9      - Serveur de noms de domaines internet
p   bind9-doc  - documentation de BIND
i   bind9-host - Version de « host » intégrée avec BIND 9.X
p   bind9utils - Utilitaires pour 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       - Serveur de noms de domaines internet
i   bind9-doc   - documentation de BIND
i   bind9-host  - Version de « host » intégrée avec BIND 9.X
i A bind9utils  - Utilitaires pour BIND
i A libbind9-80 - Bibliothèque partagée BIND9 utilisée par BIND

Q3.

Quelles sont les manipulations à effectuer pour valider le fonctionnement du service DNS ?

Contrôler la liste des processus actifs sur le système, la liste des ports réseau ouverts ainsi que les journaux système.

La «singularité» du service DNS provient du nom du processus exécuté : named.

Liste des processus actifs
# ps aux | grep na[m]ed
bind      2863  0.0  1.2 170168 13224 ?        Ssl  21:05   0:00 /usr/sbin/named -u bind
Ports réseau ouverts

En utilisant la commande lsof, on obtient la liste ports ouverts en fonction du processus.

# lsof -i | grep na[m]ed
named   2863        bind   20u  IPv6   6733      0t0  TCP *:domain (LISTEN)
named   2863        bind   21u  IPv4   6738      0t0  TCP localhost:domain (LISTEN)
named   2863        bind   22u  IPv4   6740      0t0  TCP 198.51.100.2:domain (LISTEN)
named   2863        bind   23u  IPv4   6743      0t0  TCP localhost:953 (LISTEN)
named   2863        bind   24u  IPv6   6744      0t0  TCP localhost:953 (LISTEN)
named   2863        bind  512u  IPv6   6732      0t0  UDP *:domain 
named   2863        bind  513u  IPv4   6737      0t0  UDP localhost:domain 
named   2863        bind  514u  IPv4   6739      0t0  UDP 198.51.100.2:domain

En utilisant la commande netstat, on obtient les mêmes informations en partant des ports réseau ouverts.

# netstat -autp | grep na[m]ed
tcp   0      0 198.51.100.2:domain     *:*         LISTEN      2863/named      
tcp   0      0 localhost:domain        *:*         LISTEN      2863/named      
tcp   0      0 localhost:953           *:*         LISTEN      2863/named      
tcp6  0      0 [::]:domain             [::]:*      LISTEN      2863/named      
tcp6  0      0 localhost:953           [::]:*      LISTEN      2863/named      
udp   0      0 198.51.100.2:domain     *:*                     2863/named      
udp   0      0 localhost:domain        *:*                     2863/named      
udp6  0      0 [::]:domain             [::]:*                  2863/named
Journaux systèmes
# grep na[m]ed /var/log/syslog
named[2863]: starting BIND 9.8.1-P1 -u bind
named[2863]: built with '--prefix=/usr' '--mandir=/usr/share/man'
'--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--localstatedir=/var'
'--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared'
'--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld'
'--with-geoip=/usr' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE
-O2'
named[2863]: adjusted limit on open files from 4096 to 1048576
named[2863]: found 2 CPUs, using 2 worker threads
named[2863]: using up to 4096 sockets
named[2863]: loading configuration from '/etc/bind/named.conf'
named[2863]: reading built-in trusted keys from file '/etc/bind/bind.keys'
named[2863]: using default UDP/IPv4 port range: [1024, 65535]
named[2863]: using default UDP/IPv6 port range: [1024, 65535]
named[2863]: listening on IPv6 interfaces, port 53
named[2863]: listening on IPv4 interface lo, 127.0.0.1#53
named[2863]: listening on IPv4 interface eth0, 198.51.100.2#53
named[2863]: generating session key for dynamic DNS
named[2863]: sizing zone task pool based on 5 zones
named[2863]: using built-in root key for view _default
named[2863]: set up managed keys zone for view _default, file 'managed-keys.bind'
named[2863]: Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
named[2863]: automatic empty zone: 254.169.IN-ADDR.ARPA
named[2863]: automatic empty zone: 2.0.192.IN-ADDR.ARPA
named[2863]: automatic empty zone: 100.51.198.IN-ADDR.ARPA
named[2863]: automatic empty zone: 113.0.203.IN-ADDR.ARPA
named[2863]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
named[2863]: 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[2863]: 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[2863]: automatic empty zone: D.F.IP6.ARPA
named[2863]: automatic empty zone: 8.E.F.IP6.ARPA
named[2863]: automatic empty zone: 9.E.F.IP6.ARPA
named[2863]: automatic empty zone: A.E.F.IP6.ARPA
named[2863]: automatic empty zone: B.E.F.IP6.ARPA
named[2863]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
named[2863]: command channel listening on 127.0.0.1#953
named[2863]: command channel listening on ::1#953
named[2863]: zone 0.in-addr.arpa/IN: loaded serial 1
named[2863]: zone 127.in-addr.arpa/IN: loaded serial 1
named[2863]: zone 255.in-addr.arpa/IN: loaded serial 1
named[2863]: zone localhost/IN: loaded serial 2
named[2863]: managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found
named[2863]: managed-keys-zone ./IN: loaded serial 0
named[2863]: running

Q4.

Quels sont les répertoires contenant les fichiers de configuration du service DNS ?

Identifier les répertoires à partir de la liste des fichiers du paquet bind9.

Comme pour 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/bind
/etc/bind/named.conf.default-zones
/etc/bind/named.conf
/etc/bind/db.empty
/etc/bind/db.255
/etc/bind/db.127
/etc/bind/db.local
/etc/bind/db.root
/etc/bind/db.0
/etc/bind/named.conf.local
/etc/bind/zones.rfc1918
/etc/bind/bind.keys
/etc/init.d
/etc/init.d/bind9
/etc/ppp
/etc/ppp/ip-down.d
/etc/ppp/ip-down.d/bind9
/etc/ppp/ip-up.d
/etc/ppp/ip-up.d/bind9
/etc/apparmor.d
/etc/apparmor.d/force-complain
/etc/apparmor.d/usr.sbin.named
/etc/apparmor.d/local
/etc/apparmor.d/local/usr.sbin.named
/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/ufw
/etc/ufw/applications.d
/etc/ufw/applications.d/bind9

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

Q5.

Qu'est ce qui distingue le répertoire général de configuration du répertoire de stockage des fichiers de zone ?

Consulter la documentation BIND 9 Administrator Reference Manual.

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.

Q6.

Pourquoi l'installation du paquet bind9 correspond à un service DNS de type cache-only ?

Identifier la ou les zones sur lesquelles le services a autorités à partir des informations contenues dans les journaux système et les fichiers de configuration named.conf.*.

Consulter la section relative au service de type cache-only dans le document BIND 9 Administrator Reference Manual.

  • La configuration livrée avec le paquet ne contient aucune déclaration de zone spécifique. 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.

Q7.

Comment appelle-t-on le logiciel client chargé d'interroger le service de noms de domaines ?

Rechercher le mot clé resolver dans les pages de manuels.

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

Q8.

Quelle est l'opération à effectuer pour le service DNS installé plus tôt soit effectivement utilisé ?

Rechercher la syntaxe à utiliser pour éditer le fichier /etc/resolv.conf.

Il est possible de créer un nouveau fichier simplement en désignant l'interface de boucle locale.

# echo nameserver 127.0.0.1 >/etc/resolv.conf

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 sollicite directement les serveurs racines à chaque nouvelle requête.

Q9.

À quel paquet appartient la commande dig ? Quelle est sa fonction ?

Utiliser le gestionnaire de paquets local dpkg.

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.