Installer son propre DNS avec Unbound

Publié le 21/03/2015, dans informatique, dns, server, linux, hack, censor
Un DNS (Domain Name Server) faisant authorité est comme son nom l'indique un serveur de noms de domaine : sur internet chaque machine est identifiée par son adresse IP, or il est difficile pour un être humain de retenir des adresses comme 88.191.250.176 et ceci pour chaque site web (à moins que vous ne soyez une base de données ambulante).
Les DNS font donc entre autres correspondre les noms de domaines aux adresses IP correspondantes.
Par exemple : linuxfr.org => 88.191.250.176
La plupart des gens utilisent les résolveurs DNS de leur fournisseur d'accès internet, cependant ces DNS sont souvent dits « menteurs », c'est-à-dire qu'ils ne renvoient pas la vraie adresse de certains sites (pour des raisons de censure dans le pays…). Il est donc important d'avoir un DNS non-menteur afin de pouvoir naviguer librement, de plus les résolveurs de certains FAI peuvent souvent êtes plus lent que d'autres.
Quelles solutions à cela ?
1 – Utiliser des DNS publics comme ceux de OpenDNS ou Google
2 – Installer son propre résolveur DNS
Mais comme Google connaît déjà assez de choses sur nous et que l'on aime la bidouille on va installer notre propre serveur. On se connecte à notre serveur, Raspberry, ordinateur personnelle ou autre machine Linux… et en root pour l'aventure !
Installer Unbound :
# apt-get install unbound
Récupérer la configuration des DNS racine :
# wget https://ftp.internic.net/domain/named.cache -O /var/lib/unbound/root.hints
Fichier de configuration de Unbound : /etc/unbound/unbound.conf
# Unbound configuration file for Debian.
server:
# Configuration de unbound pour DNSSEC
# en utilisant la clé des serveurs root
auto-trust-anchor-file: "/var/lib/unbound/root.key"
# Activer les logs
verbosity: 1
# Répondre aux requêtes DNS sur toutes les interfaces réseau.
interface: <votre-ipv4-ici>
interface: <votre-ipv6-ici>
# Port requêtes DNS
port: 53
# Activation de l'IPv4
do-ip4: yes
# Activation de l'IPv6
do-ip6: yes
# Activation udp
do-udp: yes
# Activation tcp
do-tcp: yes
# Plages adresse ip autorisée à utiliser le DNS (mettez votre réseau)
access-control: 192.168.1.0/24 allow
# Chemin du fichier root.hints avec les infos sur les DNS racine
root-hints: "/var/lib/unbound/root.hints"
# Cacher les infos sur le serveur DNS
hide-identity: yes
hide-version: yes
# Paramètre limitant l'usurpation de DNS
harden-glue: yes
# Requérir les infos DNSSEC pour les zones de confiance
harden-dnssec-stripped: yes
# Options permettant de ne pas prendre la casse en compte lors des requêtes d'url.
use-caps-for-id: yes
# Valeur mini de la TTL en secondes. Ne pas dépasser 1h
cache-min-ttl: 3600
# Valeur max de la TTL en secondes.
cache-max-ttl: 86400
# Activation du prefetch. Si une requête est faite lorsque la tll expire dans moins de 10% du temps qu'il lui est imparti
# le cache se mettra à jour aussitôt après avoir répondu à la requête.
prefetch: yes
# Nombre de threads du DNS
num-threads: 1
# Tweaks et optimisations du cache
# Nombre de slabs à utiliser. Doit être une puissance de 2 du num-threads.
msg-cache-slabs: 8
rrset-cache-slabs: 8
infra-cache-slabs: 8
key-cache-slabs: 8
# Taille du cache en Mo:
rrset-cache-size: 51m
msg-cache-size: 25m
# Taille du buffer pour le port UPD en entrée. Evite la perte de message lors des requêtes
so-rcvbuf: 1m
# Renforcer la vie privée des adresses du LAN. Ne mettre que des adresses locales
private-address: 192.168.1.0/24
private-address: <votre-subnet-ipv6-ici>
# Si non nulles, les réponses indésirables ne sont pas seulement signalées dans les statistiques,
# mais aussi ajoutées à un total cumulé maintenu par thread.
# Si elle atteint le seuil, un avertissement est affiché et une action défensive est prise, le cache est vidé pour éviter l'empoissonnement DNS.
# Une valeur de 10000 est suggérée, la valeur par défaut est de 0 (service désactivé).
unwanted-reply-threshold: 10000
# Autorisé à répondre aux requêtes de localhost
do-not-query-localhost: no
# Est-ce que cette section supplémentaire doit être conservée intacte pour les données non-sécurisées
# Utile pour protéger les utilisateurs d'une validation de données potentiellement boguées
# Toutes les données non signées dans la section supplémentaire seront retirés des messages sécurisés
val-clean-additional: yes
On redémarre notre DNS :
# service unbound restart
Et vous voilà avec votre petit DNS fonctionnel, vous pourrez ainsi sûrement diminuer votre temps de réponse lors des requêtes DNS et ne pas subir les aléas politiques.
Ce fichier de configuration est tiré du site de Nicolas et Tom.
Credit image : matrixfans.net
Vous pouvez commenter en envoyant un mail via ce bouton (votre adresse ne sera pas publié).
Commenter par mail