maj : 19/01/2024
Il existe plusieurs types de serveurs DNS
Les quatre serveurs DNS qui chargent une page Web
- Le serveur DNS récursif (Resolving Name Server) : le serveur DNS récursif répond à une requête DNS et demande l’adresse à d’autres serveurs DNS, ou détient déjà un enregistrement de l’adresse IP du site.
- Serveur racine du DNS (Root Name Server) : il s’agit du serveur de noms pour la zone racine. Il répond à des requêtes directes et peut renvoyer une liste de noms de serveurs faisant autorité pour le domaine de haut niveau correspondant.
- Serveur DNS TLD : le serveur TLD (top-level domain : domaine de premier niveau) est l’un des serveurs DNS de haut niveau que l’on trouve sur Internet. Lorsque vous recherchez www.varonis.com, un serveur TLD répondra en premier pour le « .com », puis le DNS recherchera « varonis ».
- Serveur de noms faisant autorité (Authoritative Name Server) : le serveur de noms faisant autorité constitue le terminus d’une requête DNS. Le serveur de noms faisant autorité contient l’enregistrement DNS répondant à la requête.
Je vous propose d’installer votre propre serveur DNS récursif en lieu et place de celui de votre FAI ou celui de Google (8.8.8.8).
J’utilise par défaut Debian comme distribution Linux. Mais cela fonctionne avec la plus part des distib.
Installer UNBOUND
apt update
apt install unbound
Récupération de la liste des DNS racines
/usr/bin/curl ftp://FTP.INTERNIC.NET/domain/named.cache -o /var/lib/unbound/root.hints
Fichier de configuration
#See /usr/share/doc/unbound/examples/unbound.conf for a commented #reference config file. server: #Activer les logs #unwanted-reply-threshold: 10000000 logfile: /var/log/unbound.log verbosity: 1 val-log-level: 2 statistics-cumulative: yes extended-statistics: yes #Repondre aux requetes DNS sur toutes les interfaces r??seau. interface: 0.0.0.0 interface: ::1 #Port sur lequel sont fait les requetes DNS port: 53 #support de l'IPv4 do-ip4: yes #support de l'IPv6 do-ip6: yes #support udp do-udp: yes #support tcP do-tcp: yes #Lancer sous forme de Daemon do-daemonize: yes #plages adresse ip autorisee ?? consulter le serveur dns access-control: 127.0.0.0/8 allow access-control: 192.168.100.0/24 allow access-control: 172.20.0.0/16 allow access-control: 2a01:e0a:4a0:b460::/64 allow access-control: 2a01:e0a:4a0:b461::/64 allow access-control: 2a01:e0a:4a0:b462::/64 allow #j'interdis tout le reste de l'Internet ! access-control: ::0/0 refuse access-control: 0.0.0.0/0 refuse #emplacement du fichier indiquant les infos pour consulter #les serveurs DNS root #fichier a telecharger a cette adresse: #ftp://FTP.INTERNIC.NET/domain/named.cache 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-below-nxdomain: yes harden-dnssec-stripped: yes #Traiter la case de la meme maniere use-caps-for-id: yes #Options permettant de ne pas prendre la casse en compte #lors des requetes d'url. #homeServer-DIY.net sera traduit en homeserver-diy.net par le serveur #et il communiquera la bonne IP 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 un requete est faite lorsque la tll expire #dans moins de 10% du temps qu'il lui est imparti #le cache se mettra a jour aussitot apres avoir repondu a la requ??te. prefetch: yes #nombre de core du serveur dns num-threads: 2 #Tweaks et optimisations du cache #Nombre de slabs a utiliser . #Doit etre une puissance de 2 du num-threads. msg-cache-slabs: 4 rrset-cache-slabs: 4 infra-cache-slabs: 4 key-cache-slabs: 4 #R??glage de la taille du cache en Mo: rrset-cache-size: 10m msg-cache-size: 4m #nombre de connexions par coeurs CPU doit etre ainsi calculee : 1024 / nb_coeurs_CPU - 50 outgoing-range: 462 #Taille du buffer pour le port UPD en entree. #Evite la perte de message lors des requetes #so-rcvbuf: 4m #so-sndbuf: 4m #Renforcer la vie privee des adresses du LAN. #Ne mettre que des adresses locales private-address: 192.168.1.0/24 #Si non nulles, les reponses indesirables #ne sont pas seulement signales dans les statistiques, #mais aussi ajoutees a un total cumule maintenu par thread. #Si elle atteint le seuil, un avertissement est affiche et une action #defensive est prise, le cache est vide pour eviter #l'empoissonnement DNS. #Une valeur de 10000 est suggere, #la valeur par defaut est de 0 (service d??sactiv??). unwanted-reply-threshold: 10000000 #Autorise a repondre aux requetes du localhost do-not-query-localhost: no #Emplacement du fichier root.key pour utilisation de DNSSEC auto-trust-anchor-file: "/var/lib/unbound/root.key" #Toutes les donnees non signes dans la section supplementaire seront #retires des messages securises val-clean-additional: yes ########################################################################### # LOCAL ZONE ########################################################################### # Include file for local-data and local-data-ptr include: /etc/unbound/a-records.conf include: /etc/unbound/ad-block.conf
Résolution DNS local
Dans le fichier /etc/unbound/a-records.conflocal-zone: "toto2" redirect
local-data: "toto2.akoonet.com A 192.168.100.202"local-zone: "toto.akoonet.com" redirect
local-data: "toto.akoonet.com A 192.168.100.204"
local-data: "toto.akoonet.com AAAA 2a01:e0a:4a0:b460::204"
Bloquer les pubs
Il est possible d’utiliser UNBOUND comme bloquer de publicité
/usr/bin/curl -sS -L --compressed "http://pgl.yoyo.org/adservers /serverlist.php?hostformat=unbound&showintro=0&mimetype=plaintext" > /etc/unbound/ad-block.conf
Vérifier la configuration :
unbound-checkconf
Redémarrer Unbound :
systemctl restart unbound
La machine utilise son propre serveur DNS
vim /etc/resolv.conf nameserver 192.168.x.x
si DHCP editer plutôt le bon fichier (plutôt que /etc/resolv.conf)
vim /etc/dhcp/dhclient.conf # au dessus du bloc request supersede domain-name-servers 192.168.x.x;
redémarrer le gestionnaire de réseau
service networking restart
Tester le serveur DNS Unbound :
time nslookup afnic.fr # OU dig afnic.fr
Création d’une tache de mise à jours des DNS racines et bloqueur de pub
L’idée est de récupérer une fois par mois les deux fichiers
/etc/cron.monthly/unbound
!/bin/sh #update file named.cache /usr/bin/curl ftp://FTP.INTERNIC.NET/domain/named.cache -o /var/lib/unbound/root.hints #update file ads servers /usr/bin/curl -sS -L --compressed "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=unbound&showintro=0&mimetype=plaintext" > /etc/unbound/ad-block.conf