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