Configurer son serveur DNS

Dans ce billet, nous allons configurer un serveur DNS sous linux

J’utiliserais Debian 8 mais cela fonctionne également sur une version supérieur/inférieur ou une autre distribution

La configuration sera à adapter selon votre réseau/nom

GoodLuck !

Installer le paquet Unbound

apt-get update && apt-get install unbound

Téléchargez le fichiers des DNS Root puis attribuez lui les droit pour unbound

wget https://www.internic.net/domain/named.cache -O /var/lib/unbound/root.hints  
chown root:unbound /var/lib/unbound/root.hints  
chmod 750 /var/lib/unbound/root.hints

Éditez /etc/unbound/unbound.conf

vi /etc/unbound/unbound.conf

server: port: 53                                           #Port du service 
interface: 0.0.0.0                                         #Interface d'écoute 
root-hints: "/var/lib/unbound/root.hints"                  #DNS Racines 
access-control: 172.20.1.0/24 allow                        #Autoriser Reseau Local 
access-control: 127.0.0.1/8 allow                          #Autoriser Boucle local 
private-address: 172.20.1.0/24                             #Cache le segment LAN 
private-address: 127.0.0.1/8 
harden-glue: yes                                           #Limiter le spoof DNS 
hide-identity: yes                                         #Cacher l'identitée 
hide-version: yes                                          #Cacher la version 
harden-dnssec-stripped: yes                                #Requérir les infos DNSSEC pour les zones de confiance 
prefetch: yes                                              #Garde en cache les bon résultat 
cache-min-ttl: 3600                                        #TTL min du cache 
cache-max-ttl: 36000                                       #TTL max du cache 
use-caps-for-id: yes                                       #Resoud GOOGLE.FR et Google.fr pareil 
unwanted-reply-threshold: 100000                           #Evite l'empoisonnement DNS (si 100000 requetes le cache est vidé)
logfile: /var/log/unbound.log                              #Fichier de log 
verbosity: 2                                               #Verbosité du log 
include: "/etc/unbound/unbound.conf.d/*"                   #Inclure la conf blacklist, zonelocal et les clef DNSSEC

Créez un fichier contenant les domaines à bloquer (Ils seront redirigés sur la boucle local)

Vous pouvez aussi download une blacklist complète -> /content/images/blacklist.conf

$vi /etc/unbound/unbound.conf.d/blacklist.conf

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"

Créez un fichier de votre zone local

$nano /etc/unbound/unbound.conf.d/zonelocal.conf

private-domain: "my.domain" local-zone: "my.domain." static

local-data: "Server1.my.domain. IN A 172.20.1.100" 
local-data-ptr: "172.20.1.100 Server1.my.domain" 
local-data: "Server2.my.domain. IN A 172.20.1.110" 
local-data-ptr: "172.20.1.110 Server2.my.domain" 
local-data: "Server3.my.domain. IN A 172.20.1.5" 
local-data-ptr: "172.20.1.5 Server3.my.domain"
....

Créez le fichier de log du service DNS

touch /var/log/unbound.log 
chown unbound:unbound /var/log/unbound.log  
chmod 740 /var/log/unbound.log

Donnez les droits à unbound de lire les fichiers de configuration supplémentaires

chown unbound:unbound /etc/unbound/unbound.conf.d/*

Redémarrez le service

systemctl restart unbound

J'ai fais un script pour déployer un service DNS Bind rapidos (pour les réseaux en 255.255.255.0)

https://github.com/k-lfa/Linux-lan