Installer votre résolveur DNS avec unbound
Pourquoi mettre en place un résolveur DNS ?
Avec une généralisation de la censure et de nombreuses pannes sur les résolveurs DNS des FAI, beaucoup d’articles recommandent l’utilisation des résolveurs DNS Google. Mais si ce dernier propose un service stable et performant, il peut être inquiétant de laisser google analyser l’ensemble des requêtes DNS que vous pouvez faire en naviguant sur le web.
Dans ce tutoriel, je vais donc vous expliquer comment mettre en place un résolveur DNS récursif, supportant la norme DNSSEC avec unbound. Pour l’installation, j’ai utilisé un VPS avec Ubuntu 16.04 LTS.
Installer et configurer unbound
Tout d’abord, il faut installer unbound :
apt update
apt install unbound
Après quoi, il faut créer un fichier de configuration dans le dossier /etc/unbound/unboud.conf.d/ que vous pouvez nommer mondns.conf par exemple.
Voici le contenu de ce fichier :
server:
interface: 0.0.0.0
interface: ::0
access-control: 0.0.0.0/0 allow
access-control: ::/0 allow
root-hints: "/var/lib/unbound/root.hints"
verbosity: 0
qname-minimisation: yes
num-threads: 2
msg-cache-slabs: 4
rrset-cache-slabs: 4
infra-cache-slabs: 4
key-cache-slabs: 4
rrset-cache-size: 100m
msg-cache-size: 50m
outgoing-range: 465
so-rcvbuf: 4m
so-sndbuf: 4m
port: 53
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
do-daemonize: yes
hide-identity: yes
hide-version: yes
harden-glue: yes
harden-dnssec-stripped: yes
harden-referral-path: yes
use-caps-for-id: yes
prefetch: yes
Attention, l’option *qname-minimisation: yes *ne fonctionne que sur Ubuntu car unbound 1.5.7 n’est pas disponible sur le repository debian.
On télécharge ensuite le fichier contenant les IPs des 13 serveurs de la racine.
wget https://www.internic.net/domain/named.cache -O /var/lib/unbound/root.hints
Il ne nous reste plus qu’à redémarrer le service unbound :
service unbound restart
Et votre résolveur DNS est désormais opérationnel ! (vérifiez que le service unbound fonctionne correctement avec la commande service unbound status)
Vous pouvez maintenant éditer le fichier /etc/resolv.conf pour remplacer l’IP du nameserver utilisé par 127.0.0.1.
Ensuite, si vous souhaitez automatiser la mise à jour des serveurs de la racine, vous pouvez le faire en ajoutant un cron avec le script suivant :
wget https://git.virtubox.net/virtubox/unbound-dns-server/raw/master/update-root-dns.sh
chmod +x update-root-dns.sh
crontab -e
0 0 * * * ./update-root-dns.sh
Si vous souhaitez aller encore plus loin, vous pouvez également mettre en place un résolveur DNSCrypt qui permet de chiffrer les requêtes faites entre votre machine et le résolveur DNS.
Je vous invite à jeter un coup d’œil sur le tutoriel de noobunbox.
Tutoriel inspiré de l’article de shaftinc.fr.