Il existe plusieurs type 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
# Unbound configuration file for Debian. # See the unbound.conf(5) man page. # #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 #Répondre aux requêtes DNS sur toutes les interfaces réseau. interface: 0.0.0.0 interface: ::1 #Port sur lequel sont fait les requêtes 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 autorisée à consulter le serveur dns access-control: 192.168.1.0/24 allow access-control: 127.0.0.0/8 allow access-control: ::1/128 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 à télécharger là à 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 requêtes 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 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 core du serveur dns num-threads: 4 #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 #Réglage de la taille du cache en Mo: rrset-cache-size: 8m msg-cache-size: 4m #nombre de connexions par cœurs CPU doit être ainsi calculée : 1024 / nb_coeurs_CPU - 50 outgoing-range: 206 #Taille du buffer pour le port UPD en entrée. #Evite la perte de message lors des requêtes so-rcvbuf: 1m so-sndbuf: 1m #Renforcer la vie privée des adresses du LAN. #Ne mettre que des adresses locales private-address: 192.168.1.0/24 #Si non nulles, les réponses indésirables #ne sont pas seulement signalés 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: 10000000 #Autorisé à répondre aux requêtes 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 données non signés dans la section supplémentaire seront #retirés des messages sécurisés val-clean-additional: yes #REDIRECTEUR INTERNE D'URL local-zone: "cloud.akoonet.com" redirect local-data: "cloud.akoonet.com A 192.168.1.200" local-zone: "download.akoonet.com" redirect local-data: "download.akoonet.com A 192.168.1.200" local-zone: "WIN-SAUVE" redirect local-data: "WIN-SAUVE A 192.168.1.220" local-zone: "esxi01" redirect local-data: "esxi01 A 192.168.1.199" local-zone: "television" redirect local-data: "television A 192.168.1.10" local-zone: "Serveur_admin" redirect local-data: "Serveur_admin A 192.168.1.210" #Bloquer les Serveurs de Pub include: "/var/lib/unbound/unbound_ad_servers" include: "/etc/unbound/adblock-war.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" #Zones de forward (utilisation d'autres DNS pour peupler le cache) #forward-zone: #name: "." #forward-addr: 212.27.40.240 # DNS FREE #forward-addr: 212.27.40.241 # DNS FREE #forward-addr: 37.235.1.174 # FreeDNS #forward-addr: 37.235.1.177 # FreeDNS #forward-addr: 50.116.23.211 # OpenNIC #forward-addr: 64.6.64.6 # Verisign #forward-addr: 64.6.65.6 # Verisign #forward-addr: 74.82.42.42 # Hurricane Electric #forward-addr: 84.200.69.80 # DNS Watch #forward-addr: 84.200.70.40 # DNS Watch #forward-addr: 91.239.100.100 # censurfridns.dk #forward-addr: 109.69.8.51 # puntCAT #forward-addr: 208.67.222.220 # OpenDNS #forward-addr: 208.67.222.222 # OpenDNS #forward-addr: 216.146.35.35 # Dyn Public #forward-addr: 216.146.36.36 # Dyn Public #forward-addr: 8.8.4.4 # Google #forward-addr: 8.8.8.8 # Google
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" > /var/lib/unbound/unbound_ad_servers /bin/chown unbound:unbound /var/lib/unbound/unbound_ad_servers
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" > /var/lib/unbound/unbound_ad_server /bin/chown unbound:unbound /var/lib/unbound/unbound_ad_servers