Installer Unbound (serveur DNS) sous Linux
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
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.