Après avoir installé et testé Pi-hole puis pour un autre usage, Unbound DNS, je me suis mis en quête de mieux.
En effet, Pi-hole est très bien (je le préfère à Adguard home pour mes usages), mais il a un défaut qui me déplait.
En
fait, Pi-hole fait du cache, et dans le cas où il ne trouve pas un
adresse, il renvoi la requête à un ou plusieurs DNS, et gros, il
redirige la requête.
Problème, que se passe-t'il si ce DNS est H.S. ? (C'est le cas pour 1.1.1.1 à l'heure où j'écris ce billet de blog)
Que
se passe-t'il si je tombe sur un DNS "menteur" qui va filtrer ma
requête car se trouvant dans un pays censurant ladite requête ?
Etc, etc...
En gros, pourquoi Pi-hole ne s'adresse-t'il pas directement aux serveurs racine ?
MAIS ! Je préfère cette solution car cela me permet de décider ce que je filtre ou non. Et je peux le contrôler plus finement.
C'est alors que je suis tombé sur cet article : https://thelinuxexperiment.com/setting-up-pi-hole-as-a-recursive-dns-server/
Le principe, c'est d'utiliser Unbound DNS comme serveur récursif. Ce dernier étant connecté aux serveurs racine. Et de conserver pi-hole comme serveur filtrant, ce dernier renvoyant les requêtes à Unbound DNS.
Donc je rappelle les étapes :
- Installer Unbound DNS :
sudo apt install unbound
- Configurer Unbound DNS avec le fichier /etc/unbound/unbound.conf.d/pi-hole.conf
server: # If no logfile is specified, syslog is used # logfile: "/var/log/unbound/unbound.log" verbosity: 0 interface: 127.0.0.1 port: 5335 do-ip4: yes do-udp: yes do-tcp: yes # May be set to yes if you have IPv6 connectivity do-ip6: no # You want to leave this to no unless you have *native* IPv6. With 6to4 and # Terredo tunnels your web browser should favor IPv4 for the same reasons prefer-ip6: no # Use this only when you downloaded the list of primary root servers! # If you use the default dns-root-data package, unbound will find it automatically #root-hints: "/var/lib/unbound/root.hints" # Trust glue only if it is within the server's authority harden-glue: yes # Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS harden-dnssec-stripped: yes # Don't use Capitalization randomization as it known to cause DNSSEC issues sometimes # see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details use-caps-for-id: no # Reduce EDNS reassembly buffer size. # Suggested by the unbound man page to reduce fragmentation reassembly problems edns-buffer-size: 1472 # Perform prefetching of close to expired message cache entries # This only applies to domains that have been frequently queried prefetch: yes # One thread should be sufficient, can be increased on beefy machines. In reality for most users running on small networks or on a single machine, it should be unnecessary to seek performance enhancement by increasing num-threads above 1. num-threads: 1 # Ensure kernel buffer is large enough to not lose messages in traffic spikes so-rcvbuf: 1m # Ensure privacy of local IP ranges private-address: 192.168.0.0/16 private-address: 169.254.0.0/16 private-address: 172.16.0.0/12 private-address: 10.0.0.0/8 private-address: fd00::/8 private-address: fe80::/10
Pour ma part, j'ai mis do-ip6 à yes - Redémarrer Unbound DNS :
sudo service unbound restart
- Aller dans Pi-hole et renseigner 127.0.0.1#5335 comme seul DNS forwarder