Installer Unbound (serveur DNS) sous Linux

Image illustrant l'article : Installer Unbound (serveur DNS) sous Linux

Installer Unbound (serveur DNS) sous Linux

par Korben -

Après vous avoir expliqué comment installer Unbound sous Windows et OSX pour faire votre propre résolution DNS en local chez vous, voici comment faire sous Debian / Ubuntu pour votre serveur.

D’abord, on installe les outils nécessaires :

apt-get install build-essential libssl-dev

Puis on installe Unbound comme ceci :

cd /tmp

wget http://www.unbound.net/downloads/unbound-latest.tar.gz

tar xvfz unbound-latest.tar.gz

cd unbound-x.x.x/

./configure

make

make install

Ensuite, on crée le groupe et l’utilisateur qui vont bien pour faire tourner unbound :

groupadd unbound

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

Le répertoire /var/unbound sera utilisé par Unbound et contiendra les fichiers de config.

Placez vous dedans et récupérez la liste des serveurs racines :

cd /var/unbound

wget ftp://ftp.internic.net/domain/named.cache

Créez ensuite le dossier /var/unbound/var/run qui contiendra unbound.pid et faites un lien symbolique vers le pid du système :

mkdir -p /var/unbound/var/run

chown -R unbound:unbound /var/unbound

ln -s /var/unbound/var/run/unbound.pid /var/run/unbound.pid

Ensuite, pour lancer / arrêter unbound, il nous faut un script de démarrage. Créez un fichier unbound (nano /etc/init.d/unbound) dans le init.d et copiez-collez y le script qui suit :

#!/bin/sh

unbound This shell script takes care of starting and stopping

unbound (DNS server).

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: "

# setup root jail 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;

# if not running, start it up here 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

Puis rendez ce script exécutable comme ceci :

chmod 755 /etc/init.d/unbound

update-rc.d unbound defaults

Et voilà c’est installé, mais ne lancez pas unbound tout de suite. Maintenant, on va régler les permissions pour que vos autres machines puissent s’y connecter et faire des requêtes DNS.

Créez le fichier de conf comme ceci :

nano /var/unbound/unbound.conf

Et collez-y la conf suivante :

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”

Vous voyez la ligne “access-control: 0.0.0.0/0 allow” ? Ça veut dire que tout le monde peut se servir de votre serveur DNS. Mais vous pouvez changer 0.0.0.0/0 par 192.168.0.0/24 pour autoriser uniquement vos IPs locales…etc. Si c’est juste pour une utilisation par la machine seule, vous pouvez mettre simplement “access-control: 127.0.0.0/8 allow”.

Bref, vous voyez l’idée. Concernant le fichier de conf, on peut faire plein de choses, mais je vous laisse lire la doc ici.

Pour vérifier que le fichier de conf est correct, on utilise cette commande :

unbound-checkconf /var/unbound/unbound.conf

Si ça vous dit que c’est bon, faites alors ceci pour démarrer unbound :

/etc/init.d/unbound start

Et voilà… Maintenant y’a plus qu’à entrer l’IP de votre serveur comme serveur DNS sur les clients de votre choix, et ce sera ce serveur qui résoudra lui-même les URL.

Source