Serveur DNS · 5 min read · Oct 01, 2025

Installation et utilisation du serveur de noms Unbound sur Debian Etch

Installation et utilisation du serveur de noms Unbound sur Debian Etch

Version 1.0
Auteur : Falko Timme

Unbound est un résolveur DNS validant, récursif et en cache, publié sous une licence BSD. La version 1.0.0 a été publiée le 20 mai 2008. Ce tutoriel explique comment l’installer et l’utiliser sur Debian Etch, y compris la création de zones pour vos propres domaines.

Ce document est fourni sans garantie d’aucune sorte ! Je tiens à dire que ce n’est pas la seule façon de configurer un tel système. Il existe de nombreuses façons d’atteindre cet objectif, mais c’est la méthode que je choisis. Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Installation d’Unbound

Parce qu’il n’y a pas encore de paquet Debian disponible, nous devons installer Unbound à partir des sources. Tout d’abord, nous installons les prérequis :

apt-get install build-essential libssl-dev

Ensuite, nous téléchargeons et installons Unbound comme suit :

cd /tmp
wget http://www.unbound.net/downloads/unbound-latest.tar.gz
tar xvfz unbound-latest.tar.gz
cd unbound-1.0.0/
./configure
make
make install

Ensuite, nous créons un utilisateur et un groupe appelés unbound :

groupadd unbound
useradd -d /var/unbound -m -g unbound -s /bin/false unbound

Nous utiliserons le répertoire /var/unbound comme répertoire personnel du serveur de noms Unbound - il contiendra la configuration d’Unbound, et Unbound fonctionnera en chroot à l’intérieur pour des raisons de sécurité.

Ensuite, nous téléchargeons la liste des serveurs de noms racine :

cd /var/unbound
wget ftp://ftp.internic.net/domain/named.cache

Puis nous créons le répertoire /var/unbound/var/run qui contiendra le fichier PID d’Unbound, unbound.pid, et créons un lien symbolique /var/run/unbound.pid vers celui-ci :

mkdir -p /var/unbound/var/run
chown -R unbound:unbound /var/unbound
ln -s /var/unbound/var/run/unbound.pid /var/run/unbound.pid

Pour démarrer/arrêter/redémarrer Unbound, nous avons besoin d’un script d’initialisation comme celui-ci :

vi /etc/init.d/unbound

| #!/bin/sh # # unbound Ce script shell s'occupe de démarrer et d'arrêter # unbound (serveur DNS). exec="/usr/local/sbin/unbound" prog="unbound" config="/var/unbound/unbound.conf" pidfile="/var/run/unbound.pid" rootdir="/var/unbound" case "$1" in start) [ -x $exec ] || exit 5 [ -f $config ] || exit 6 echo -n "$Starting $prog: " # configuration de la prison racine if [ -s /etc/localtime ]; then [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; if [ ! -e ${rootdir}/etc/localtime ] || /usr/bin/cmp -s /etc/localtime ${rootdir}/etc/localtime; then cp -fp /etc/localtime ${rootdir}/etc/localtime fi; fi; if [ -s /etc/resolv.conf ]; then [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; if [ ! -e ${rootdir}/etc/resolv.conf ] || /usr/bin/cmp -s /etc/resolv.conf ${rootdir}/etc/resolv.conf; then cp -fp /etc/resolv.conf ${rootdir}/etc/resolv.conf fi; fi; if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; [ -e ${rootdir}/dev/log ] || touch ${rootdir}/dev/log mount --bind -n /dev/log ${rootdir}/dev/log >/dev/null 2>&1; fi; if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; [ -e ${rootdir}/dev/random ] || touch ${rootdir}/dev/random mount --bind -n /dev/random ${rootdir}/dev/random >/dev/null 2>&1; fi; # si pas en cours d'exécution, démarrez-le ici start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config echo ;; stop) echo -n "$Stopping $prog: " start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile echo if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then umount ${rootdir}/dev/log >/dev/null 2>&1 fi; if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then umount ${rootdir}/dev/random >/dev/null 2>&1 fi; ;; restart) start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config ;; reload) start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec ;; force_reload) start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec ;; *) echo "$Usage: $0 {start|stop|restart|reload|force-reload}" exit 2 ;; esac exit 0 |

Rendez le script exécutable et créez les liens de démarrage système pour celui-ci :

chmod 755 /etc/init.d/unbound
update-rc.d unbound defaults

C’est tout pour l’installation.

2 Configuration d’Unbound

Maintenant, nous créons le fichier de configuration d’Unbound, /var/unbound/unbound.conf. Vous pouvez trouver un exemple de fichier de configuration dans /tmp/unbound-1.0.0/doc/example.conf qui contient de nombreuses explications. Vous pouvez également visiter http://www.unbound.net/documentation/unbound.conf.html pour en savoir plus sur la configuration d’Unbound.

Dans la configuration suivante, j’ajoute deux zones pour des domaines (example.com et example.net) que je souhaite héberger sur le serveur de noms Unbound. Si vous êtes familier avec le serveur de noms BIND, vous pouvez apprendre la syntaxe d’Unbound très rapidement. Ajustez les zones selon vos besoins, ou laissez-les de côté si vous avez seulement besoin d’un résolveur local :

vi /var/unbound/unbound.conf

| server: verbosity: 1 interface: 0.0.0.0 port: 53 do-ip4: yes do-ip6: yes do-udp: yes do-tcp: yes do-daemonize: yes access-control: 0.0.0.0/0 allow #access-control: 0.0.0.0/0 refuse #access-control: 127.0.0.0/8 allow chroot: "/var/unbound" username: "unbound" directory: "/var/unbound" use-syslog: yes pidfile: "/var/run/unbound.pid" root-hints: "/var/unbound/named.cache" local-zone: "example.com." static local-data: "example.com. 86400 IN NS ns1.hostingcompany.com." local-data: "example.com. 86400 IN NS ns2.hostingcompany.com." local-data: "example.com. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400" local-data: "example.com. 86400 IN A 1.2.3.4" local-data: "www.example.com. 86400 IN CNAME example.com." local-data: "mail.example.com. 86400 IN A 1.2.3.4" local-data: "example.com. 86400 IN MX 10 mail.example.com." local-data: "example.com. 86400 IN TXT v=spf1 a mx ~all" local-zone: "example.net." static local-data: "example.net. 86400 IN NS ns1.hostingcompany.com." local-data: "example.net. 86400 IN NS ns2.hostingcompany.com." local-data: "example.net. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400" local-data: "example.net. 86400 IN A 1.2.3.4" local-data: "www.example.net. 86400 IN CNAME example.net." local-data: "mail.example.net. 86400 IN A 1.2.3.4" local-data: "example.net. 86400 IN MX 10 mail.example.net." local-data: "example.net. 86400 IN TXT v=spf1 a mx ~all" |

J’ai utilisé interface: 0.0.0.0 ici, ce qui signifie qu’Unbound écoute sur toutes les interfaces réseau, et access-control: 0.0.0.0/0 allow, ce qui signifie que tout le monde peut se connecter à Unbound. Si vous souhaitez simplement que localhost soit autorisé à se connecter, par exemple, vous utiliseriez

| [...] access-control: 0.0.0.0/0 refuse access-control: 127.0.0.0/8 allow [...] |

à la place.

Pour vérifier si la syntaxe de votre configuration Unbound est correcte, vous pouvez utiliser la commande unbound-checkconf :

unbound-checkconf /var/unbound/unbound.conf

server1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: pas d’erreurs dans /var/unbound/unbound.conf
server1:~#

Si la syntaxe est correcte, vous pouvez enfin démarrer Unbound :

/etc/init.d/unbound start

Pour en savoir plus sur Unbound, veuillez vous référer à la documentation d’Unbound.

3 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.