Pi-Hole, ou comment bloquer toutes les publicités chez soi (maj 17/01/2019)

Vous connaissez certainement tous AdBlock ou UBlock, ces extensions de navigateur qu'on peut installer pour bloquer les publicités lors de notre navigation sur internet, qui sont parfois envahissantes ou sans aucun rapport avec le site sur lequel on se trouve.

AdBlock

Malheureusement, ces extensions ne peuvent être ajoutées que sur les navigateurs de nos PC. Les mobiles, les applications (aussi bien sur mobile que sur PC) ne sont, elles, pas concernées par le blocage de pub de ces extensions, et cela peut quand même nous donner une mauvaise expérience d'utilisation d'un service.

Et c'est là qu'entre en scène Pi-Hole !

Pi-Hole

Pour le présenter brièvement, Pi-Hole est un logiciel open-source (avec les sources disponibles sur github) qui peut se glisser entre Internet et TOUS vos périphériques sur votre réseau local, et qui permet de filtrer les requêtes DNS grâce à des listes pré-établies de domaines bloqués (comme le fait AdBlock). Cela permet donc même de bloquer les publicités là où ce n’est normalement pas possible (consoles de jeu, caméra IP connectées au cloud du fabricant, applications mobiles, etc).

L'installation

Pi-Hole peut être installé sur n'importe quel matériel, du moment qu'il accepte une des distributions Linux suivantes : Debian, Ubuntu, Fedora, CentOS ou encore Raspbian. Il ne demande que peu de ressources (environ 52 MB d'espace disque et 512 MB de RAM) et peut donc être installé sur un Raspberry (toute version, le Pi 1 ou le Pi Zero peuvent convenir) ou une machine virtuelle. En effet, pour résumer, Pi-Hole ne fait que rediriger les requêtes des serveurs publicitaires vers une page blanche.

De mon côté, j'ai préféré utiliser un Raspberry Pi Zero W qui traînait dans un tiroir, et vous verrez que c'est suffisant. A l'issue de mon test et si cela me paraît concluant, le Pi Zero sera probablement remplacé par un Raspberry Pi classique, histoire qu'il soit branché en filaire, ce qui est mieux pour un service réseau.

Pour commencer, gravez la dernière version de Raspbian Lite sur la carte microSD.
Un petit coup de sudo raspi-config pour activer le SSH et configurer la langue et le wifi, tout en n’oubliant pas de modifier le password de l’utilisateur pi, et on peut démarrer l'installation de Pi-Hole :

sudo apt-get update && sudo apt-get upgrade
curl -sSL https://install.pi-hole.net | bash

Il faut ensuite répondre à quelques questions, notamment sur la configuration réseau (il faut une adresse IP fixe obligatoirement), les logs, ... Le mieux est de laisser les choix par défaut pour le moment. Pour le choix du résolveur DNS, plusieurs vous sont proposés, dont ceux de Google (les plus connus), ceux d'OpenDNS (non-menteur), et Quad9 (le petit nouveau, public et surtout accessible de manière sécurisée et sans log). J'ai fait le choix de Quad9 (à prononcer "Quoi de neuf").

A la fin de l'installation, on retrouve un résumé, avec notamment l'adresse IP à utiliser en tant que serveur DNS dans la configuration de ses périphériques, ou encore le mot de passe de l'interface d'administration, joignable sur l'URL http://pi.hole/admin.

Interface d'administration Pi-Hole

Vous avez maintenant le choix de configurer manuellement sur chacun de vos PC, smartphone, ... le serveur DNS à utiliser, en indiquant simplement l'adresse IP du serveur ou Raspberry sur lequel vous l'avez installé.

Sur Windows, il vous suffit d'aller dans le Panneau de configuration, puis Réseau et Internet, Centre Réseau et partage, et choisir de Modifier les paramètres de la carte.

Il vous suffit ensuite de faire un clic droit sur la carte réseau, et d'aller modifier les propriétés pour renseigner l'adresse IP de votre résolveur DNS local.

Sélectionner « Protocole Internet Version 4 (TCP/IPv4) » et cliquez sur Propriétés.

Choisir d' « utiliser l'adresse de serveur DNS suivante »

Sauvegarder et quitter, et c'est tout !

Sauf que là, on a configuré seulement notre PC !

Une manière plus rapide de le propager est de le configurer au niveau du routeur ou de la box internet quand c'est possible, ce qui vous permettra d'en faire profiter plus facilement tous les périphériques connectés à votre réseau local, solution à préférer quand on le peut ! (si ce n'est pas le cas, c'est peut-être l'occasion de passer sur un vrai routeur, comme le le Asus RT-AC68) ou encore un Ubiquiti USG), que j'ai récemment acquis, et qui va mériter un article de présentation et d'utilisation.

A partir de ce moment, j'ai désactivé AdBlock sur mon navigateur, et ai configuré l'adresse IP du Raspberry hébergeant Pi-Hole en tant que serveur DNS à utiliser. Je verrais bien à l'usage la différence et l'efficacité ou non de Pi-Hole.

Sinon, oui, certains sites utilisent les publicités pour se financer ! Et avec l'avènement d'internet, la multiplication des sources d'information, on peut comprendre que pour continuer d'exister, pour payer leurs salariés, pour payer les serveurs et autres services leur permettant de fonctionner, ces sites DOIVENT se financer, et la publicité est un des moyens permettant d'y arriver. Il est bien évidemment possible de dresser une liste blanche des sites pour lesquels on autorise les publicités, parce qu'on souhaite les soutenir, tout comme vous aurez la possibilité d'ajouter des URLs de sites à bloquer complètement.

En complément de bloquer les publicités, Pi-Hole permet également de loguer tout ce qui transite par lui, et donc vous pourrez vérifier ce que font vos enfants sur Internet, ou leur bloquer certains sites que vous juges inadaptés !

Je reviendrais d'ici quelques semaines / mois pour agrémenter cet article de mon expérience et vous partager mon avis sur cette solution.


MAJ du 17/01/2019 : C'est marrant, cela fait pile 1 an que cet article a été écrit, et je viens donc le mettre à jour pour vous faire part de mon utilisation de Pi-Hole.

Pi-Hole est toujours en place, et après une période de tests de plusieurs mois sur un pc et nos smartphones, j'ai décidé d'aller un peu plus loin.

Ayant déménagé il y a peu, j'en ai profité pour vouloir configurer Pi-Hole en tant serveur DNS pour tout mon réseau !

Mon routeur ne permettant pas de configurer un serveur DNS dans mon réseau local, et ayant plusieurs autres petits griefs contre lui, notamment sur la gestion des périphériques DHCP, je me suis tourné vers une solution semi-professionnelle, UniFi, de la marque Ubiquiti, pour lui confier la gestion complète de mon réseau. J'ai donc investi dans un routeur Ubiquiti USG (pour UniFi Security Gateway) et un point d'accès Wifi Ubiquiti UAP-AC-Pro. Je ne vais pas rentrer dans les détails de ce matériel, un article est déjà en cours d'écriture pour vous en présenter l'installation et l'utilisation que j'en ai.

Dans l'interface de configuration Unifi du routeur, j'ai donc défini l'adresse IP de la machine virtuelle qui héberge Pi-Hole (ah oui, je suis aussi passé sur une VM, tout simplement pour éviter de laisser traîner le boitier du Raspberry Pi Zero W sur un meuble) en tant que serveur DNS pour l'ensemble du réseau.

Unifi Controller

Cela m'a permis de bénéficier du blocage de publicités (indésirables le plus souvent) sur tous mes équipements réseaux, que ce soit nos smartphones, les PC fixe et portable, les tablettes, et même la TV.
Justement, sur ce point, j'ai pu constater que ma TV connectée Samsung faisait 3 requêtes par seconde (oui, vous avez bien lu) vers les serveurs de Samsung... Et j'ai donc pu simplement lui couper le net en la débranchant ! Je n'en ai pas réellement l'utilité vu que nous utilisons la Xiaomi Mi Box.

La deuxième modification que j'ai apporté au fil du temps a été d'enrichir Pi-Hole de listes de blocage alternatives, open-source également, et permettant d'améliorer encore plus la détection des publicités :

https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt

https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt

https://gitlab.com/ZeroDot1/CoinBlockerLists/raw/master/list.txt

Je suis en train de tester d'autres listes, mais je ne vous les fournis pas pour le moment, le temps pour moi de valider qu'elles ne dégradent pas la navigation quotidienne sur le net.

Dernier petit détail, mais qui peut être sympa, un plugin Pi-Hole pour Jeedom a été développé par Nebz, et permet de remonter les statistiques de filtrage.

Jeedom et Pi-Hole

Au final, je peux dire que je suis très content de Pi-Hole, qu'il ne nous gêne pas, et que bien au contraire, il nous apporte un confort d'utilisation d'Internet pour notre navigation quotidienne, en ajoutant même un peu de sécurité dans le contrôle des informations entrantes et sortantes de mon réseau privé.