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 ftp://FTP.INTERNIC.NET domainnamed.cache > 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/*

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/DeployDNS

Previous Post Next Post