LinuxInfo
Dezoom

Résolveur de nom de domaines Unbound

Un résolveur de noms de domaines a pour fonction de traduire une URL (par exemple http://debian.org) en une adresse IP numérique (par exemple 5.153.231.4). L'installation d'un résolveur évite de recourir à des serveurs DNS externes. Les avantages attendus sont :

Ce qui suit décrit l'installation du résolveur DNS unbound dans le cadre d'une utilisation locale, avec une personnalisation minimale (utilisation de la configuration par défaut).

Terminologie


1 - Installation & configuration

1.1 - Installation de unbound

# apt install unbound
$ systemctl status unbound.service 
● unbound.service - (null)
Loaded: loaded (/etc/init.d/unbound)
Drop-In: /run/systemd/generator/unbound.service.d
└─50-insserv.conf-$named.conf, 50-unbound-$named.conf
Active: active (running) since dim. 2017-04-02 17:19:04 CEST; 22s ago
.....

1.2 - Configuration de l'adresse du résolveur

L'adresse du résolveur unbound est 127.0.0.1 et doit-être configurée dans /etc/resolv.conf. Pour que l'adresse soit persistance et ne soit pas remplacée par les adresses des DNS du fournisseur d'accès à chaque reconnexion : 

# apt install openresolv
# nano /etc/resolvconf.conf
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details

resolv_conf=/etc/resolv.conf
# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
name_servers=127.0.0.1
.....
# resolvconf -u
Too few arguments.
$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 127.0.0.1

2 - Tests

$ dig 1 |grep  SERVER
;; SERVER: 127.0.0.1#53(127.0.0.1)
# systemctl restart wicd
$ dig 1 |grep SERVER
;; SERVER: 127.0.0.1#53(127.0.0.1)
# apt install ldnsutils

$ drill debian.org |grep "Query time"
;; Query time: 482 msec

$ drill debian.org |grep "Query time"
;; Query time: 0 msec
$ drill @8.8.8.8 debian.org |grep "Query time"
;; Query time: 52 msec

On vérifier, comme ici, que le temps de réponse d'un serveur DNS externe est généralement inférieur à celui d'un résolveur interne à la première requête.

$ hostname -I
192.168.0.11
$ nmap -p53 $(hostname -I)

Starting Nmap 6.47 ( http://nmap.org ) at 2017-04-04 18:39 CEST
Nmap scan report for 192.168.0.11
Host is up (0.000023s latency).
PORT STATE SERVICE
53/tcp closed domain

Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds

Annexe 1 - Configuration des adresses des serveurs de nom racine

1.1 - Installation

unbound possède une liste de serveurs racine pour la résolution des adresses. Cette liste pouvant évoluer dans le temps, il est préférable d'installer une version à jour lors de l'installation :

# curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache
# nano /etc/unbound/unbound.conf.d/root-hints.conf
# Fichier des serveurs root à télécharger env tous les 6 mois :
# curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache

server:
root-hints: "/var/lib/unbound/root.hints"
# systemctl restart unbound.service
server

1.2 - Mise à jour

La mise à jour peut-être effectuée manuellement ou automatiquement en utilisant systemd, selon la méthode décrite ci-dessous et reprise du wiki ArchLinux unboud : Roothints systemd timer

La mise à jour s'effectuera mensuellement :

# cat /etc/systemd/system/roothints.service

[Unit] Description=Update root hints for unbound After=network.target [Service] ExecStart=/usr/bin/curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache
# cat /etc/systemd/system/roothints.timer

[Unit] Description=Run root.hints monthly [Timer] OnCalendar=monthly Persistent=true [Install] WantedBy=timers.target
# mv /var/lib/unbound/root.hints /var/lib/unbound/root.hints.BU
# systemctl start roothints.service
$ ls -ls /var/lib/unbound/root.hints*
4 -rw-r--r-- 1 root root 3291 avril 5 00:03 /var/lib/unbound/root.hints
4 -rw-r--r-- 1 root root 3291 avril 3 15:52 /var/lib/unbound/root.hints.BU
# systemctl start roothints.timer