Pour bloquer les pubs tu utilisais un plugin comme uLimit ou AdBlock sur ton navigateur. Il est temps de passer à une solution plus efficace: Pi-hole!
Introduction
Jusqu’ici, pour bloquer les pubs tu utilisais (oui, tu vas changer de méthode!) un plugin du type uLimit ou AdBlock sur les navigateurs supportés. Pour le reste, ma foi, tant pis. Mais heureusement, il existe une solution open source pour améliorer cette situation: Pi-hole!
Présentation
Pi-hole est un serveur DNS “sinkhole”, c’est à dire un serveur DNS qui interdit la résolution de noms des domaines selon différents critères et, comme c’est le cas de Pi-hole, en utilisant des listes d’exclusions. L’avantage d’un tel serveur est que la protection offerte ne se limite pas aux simples publicités et couvrent tous les appareils du réseau.
Installation
J’ai choisi d’installer Pi-hole sur un Raspberry Pi, parce que mon Pi fait déjà serveur DNS. Du coup, la configuration est facilitée puisque je peux reprendre la même adresse IP et donc ne rien changer sur les autres appareils. De plus, disposant d’une deuxième carte mémoire (quel luxe!), il n’y a pas de difficulté pour réaliser la sauvegarde pré-installation.
Préparation
Contrairement à une idée reçue, Pi-hole n’est pas une distribution Linux. Du coup, pour l’installer, il faut un OS fonctionnel. J’ai choisi Raspberry Pi OS, basé sur (roulements de tambour!) Debian. Pour installer RpiOS, c’est plutôt standard: on écrit l’image ISO sur la carte SD (avec la commande dd
), on n’oublie d’écrire l’adresse IP dans le fichier “cmdline.txt” (sous la forme ip = a.b.c.d
) puis de créer un fichier vide nommé “ssh”. Ensuite, on reboote, on configure le Raspberry et on peut continuer avec Pi-hole.
Installation de Pi-hole
Il y a plusieurs méthodes d’installation mais je préfère la numéro 2, à savoir:
Chargement de listes d’exclusion
Le site Firebog référence un nombre important de listes. J’ai choisi de charger les listes “vertes” pour commencer. L’ensemble représente tout de même presque 260'000 domaines bannis. Je pense que j’ajouterais les autres listes également, par curiosité.
Ajout de zones internes
Une fois configuré, Pi-hole fait son travail de DNS mais il ne connaît rien du réseau interne (encore heureux). Pour déclarer les noms DNS des machines du réseau, il faut modifier le fichier custom.list avec la commande sudo nano /etc/pihole/custom.list
puis ajouter le contenu suivant:
1a.b.c.d machine.domaine
Note: on peut lister plusieurs domaines dans le fichier custom.list. Ensuite il faut recharger la configuration de Pi-hole avec la commande sudo pihole restartdns reload
. Et voilà, la résolution de noms pour le réseau interne fonctionne.
Il traîne une petite blague: le Raspberry lui-même ne sait pas résoudre les noms des autres machines du réseau. C’est dû au fait que la configuration par défaut fait utiliser un résolveur externe (dans mon cas: OpenDns) plutôt que le résolveur Pi-hole. Pour corriger cela, il faut modifier le fichier dhcpcd.conf avec la commande sudo nano /etc/dhcpcd.conf
puis modifier comme suit (en bleu):
Après j’ai rebooté le Raspberry et magie! On peut faire un ping vers une machine du réseau en utilisant son nom.
Premiers retours
Pour être honnête, je ne pensais pas que plus de 80% des requêtes seraient rejetées. Pour l’instant, il y assez peu d’impacts sur les sites: la plupart des encarts publicitaires ont disparus sans provoquer de dysfonctionnements.
Après quelques heures de fonctionnement, les statistiques sont plutôt impressionnantes:
Pi-hole: statistiques
Conclusion
Facile à installer, facile à configurer, efficace pour tous les appareils d’un réseau. Difficile de ne pas adopter Pi-hole comme serveur DNS domestique.