Vendredi 23 novembre 2018

Résolveur DNS Unbound

Créer son résolveur DNS avec Unbound sur Debian
Installer son propre serveur DNS Unbound
Debian : Installer le serveur DNS Unbound
Installer et configurer son serveur DNS connecté aux serveurs root avec Unbound

Les serveurs DNS sont des machines discutant entre elles afin de se communiquer les correspondances entre nom de domaine et adresses IP. Lors des requêtes faites par un client, les serveurs DNS répondent de façon hiérarchisée pour résoudre les différents composants d’un nom de domaine. Typiquement, “homeserver-diy”, “.”, “net” (dans un ordre différent). Pour accélérer ces résolutions, les serveurs DNS peuvent s’appuyer sur un système de cache limitant le nombre de requêtes. De ce fait, les performances d’un serveur DNS augmentent dans le temps car celui-ci cherche d’abord à résoudre les noms de domaines via ce cache avant d’interroger ses comparses.

Monter son propre serveur DNS Unbound améliore la vitesse de vos requêtes (cache) tout en ayant un peu plus de confidentialité.

  • Vitesse des requêtes: Si la requête a déjà été effectuée, elle sera mise en cache. Si un autre utilisateur de votre réseau cherche à joindre le même nom de domaine, votre serveur ne devra plus contacter les serveurs root car la réponse sera déjà dans son cache. De plus, si vous mettez votre résolveur dans votre réseau local, les performances seront encore améliorées.
  • Confidentialité: Certains fournisseur de DNS peuvent stocker et analyser vos requêtes. En installant votre résolveur, vous seul pourrez les analyser.

1-Installation d’ Unbound

La première chose à faire est d’installer le paquet nécessaire. Dans notre cas, nous choisirons Unbound qui nous servira uniquement de résolveur DNS.
En effet, Unbound ne dispose pas de service pouvant héberger votre propre zone DNS.
Il pourra cependant être couplé à un autre service pour vous permettre d’héberger votre zone.
apt install unbound

2-Télécharger la liste des serveurs root

Nous allons maintenant télécharger la liste complète des serveurs root et la stocker sur notre serveur.
wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /var/lib/unbound/root.hints

3-Editer le fichier de configuration

Editons maintenant notre fichier de configuration. Dans ce fichier, nous renseignerons des éléments comme l’adresse ip sur laquelle écoutera notre serveur, l’expiration du cache, les réseaux autorisés à effectuer des requêtes, etc.
nano /etc/unbound/unbound.conf.d/unbound-xinyic.conf

server:
statistics-interval: 0
extended-statistics: yes
statistics-cumulative: yes
verbosity: 3
interface: 127.0.0.1
#interface: 10.8.0.1 ## la passerelle VPN
port: 53
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: no
access-control: 127.0.0.0/8 allow ## j'autorise mon serveur
#access-control: 10.8.0.0/24 allow ## j'autorise le réseau établie avec mon OpenVPN
access-control: 0.0.0.0/0 refuse ## j'interdis tout le reste de l'Internet !
auto-trust-anchor-file: "/var/lib/unbound/root.key"
root-hints: "/var/lib/unbound/root.hints"
hide-identity: yes
hide-version: yes
harden-glue: yes
harden-dnssec-stripped: yes
use-caps-for-id: yes
cache-min-ttl: 3600
cache-max-ttl: 86400
prefetch: yes
num-threads: 6
msg-cache-slabs: 16
rrset-cache-slabs: 16
infra-cache-slabs: 16
key-cache-slabs: 16
rrset-cache-size: 256m
msg-cache-size: 128m
so-rcvbuf: 1m
unwanted-reply-threshold: 10000
do-not-query-localhost: yes
val-clean-additional: yes
##je bloque cetaines pubs
local-zone: "doubleclick.net" redirect
local-data: "doubleclick.net A 127.0.0.1"
local-zone: "googlesyndication.com" redirect
local-data: "googlesyndication.com A 127.0.0.1"
local-zone: "googleadservices.com" redirect
local-data: "googleadservices.com A 127.0.0.1"
local-zone: "google-analytics.com" redirect
local-data: "google-analytics.com A 127.0.0.1"
local-zone: "ads.youtube.com" redirect
local-data: "ads.youtube.com A 127.0.0.1"
local-zone: "adserver.yahoo.com" redirect
local-data: "adserver.yahoo.com A 127.0.0.1"
local-zone: "ask.com" redirect
local-data: "ask.com A 127.0.0.1"
use-syslog: yes
logfile: /var/log/unbound.log
harden-dnssec-stripped: yes
cache-min-ttl: 3600
cache-max-ttl: 86400
prefetch: yes
prefetch-key: yes

4-On vérifie puis redémarre la configuration

ATTENTION! Serveur utilise bind9 , le désactiver
systemctl stop bind9 && systemctl disable bind9

Tester la configuration.
unbound-checkconf /etc/unbound/unbound.conf.d/unbound-xinyic.conf
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/unbound-xinyic.conf
Modifier le fichier /etc/resolv.conf :
echo "nameserver 127.0.0.1" > /etc/resolv.conf On redémarre Unbound
systemctl restart unbound

5-Vérification avec dig et nslookup

Installation des outils
apt install dnsutils
Vérifier la résolution de nom à partir du serveur :
dig @127.0.0.1 xoyize.xyz

; <<>> DiG 9.10.3-P4-Debian <<>> @127.0.0.1 xoyize.xyz
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19334
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xoyize.xyz.			IN	A

;; ANSWER SECTION:
xoyize.xyz.		3550	IN	A	93.115.96.97

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Oct 05 15:19:46 CEST 2017
;; MSG SIZE  rcvd: 58

La résolution fonctionne

Le résultat de la commande nslookup xoyize.xyz |grep Server doit être :
Server: 127.0.0.1

Maintenant, vous avez votre propre résolveur DNS en cours d’exécution.