Installation d'une Pi-hole

pihole

Petit article tuto sur la mise en place d'une Pi-hole sur son réseau.

Qu'est-ce que Pi-hole ?

Pi-hole est une solution de résolveur DNS menteur qui permet de manager des listes de blocages de noms de domaine. Concrètement, cela permet de bloquer des sites via la résolution DNS notemment des sites marketings ou publicitaires.

L'avantage de cette solution est de :

  • Protéger la vie privée des utilisateurs de votre réseau local en empêchant les appareils de se connecter à des services marketing ou de collecte de données
  • Bloquer les pubs directement niveau réseau. Par bloquer les pubs, il est question des appels DNS à des services publicitaires externes au site. Youtube, par exemple, continuera de diffuser de la pub sur vos vidéos car les pubs sont directement dans le contenu, pas dans des appels externes. Pour cela, d'autres soutions existent comme uBlockOrigin pour les navigateurs Firefox et Chrome, et l'application NewPipe sur Android.
  • Contourner les blocages DNS de votre FAI (du moins, les gros FAIs commerciaux).

Prérequis

Pi-hole peut s'installer sur n'importe quelle distribution Linux comme Fedora, Ubuntu, Debian, CentOS. Une image Docker est aussi disponible.

Pour l'installation, le site de Pi-hole conseille d'avoir la configuration minimale suivante :

  • 2 Go d'espace de stockage (4 Go recommandés)
  • 512 Mo de RAM

Je l'ai installé sur une raspberry pi 3 avec une distribution Raspbian.

Dans cet article, je me base sur une Debian bullseye (stable).

/!\ À l'heure où j'écris ces lignes, Debian testing n'est pas supporté /!\

Installation

Tout d'abbord, il faut fixer une adresse IP statique sur la machine pour éviter qu'elle puisse changer d'adresse IP.
Pour cela, dans le fichier /etc/network/interfaces nous allons définir une adresse IP.

Par exemple :

auto eth0
iface eth0 inet static
  address 192.168.1.253
  network 192.168.1.0
  netmask 255.255.255.0
  gateway 192.168.1.254

Ici, nous avons fixé l'adresse IP de la future Pi-hole à 192.168.1.253.

Il faut redémarrer le service networking pour prendre en compte les changements.

pi@rpi:~# /etc/init.d/networking restart

J'ai volontairement fixé une adresse IPv4 en statique. Mais si vous voulez utiliser la Pi-hole pour IPv6, il faudra aussi fixer une adresse IPv6.

Pour l'installation de Pi-hole, en root, sur la machine il suffit de lancer la commande :

pi@rpi:~# curl -sSL https://install.pi-hole.net | bash

Après avoir lancé cette commande, le script d'installation va faire le checkup complet de la machine pour vérifier que l'OS est bien compatible.

Il suffit de suivre les instructions et de se laisser guider pour la suite de l'installation. C'est très simple. Voici des captures de l'exemple d'installation que j'ai fait dans une VM :

screen1

J'ai choisi d'utiliser les résolveurs d'OpenDNS pour la résolution générale. Mais il est possible d'utiliser d'autres résolveurs déjà préconfigurés ou d'utiliser un résolveur custom.

On pourrait même imaginer installer bind9 sur cette machine pour qu'elle résolve elle-même les noms de domaine :

screen2

Nous avons ici la possibilité de rajouter ou non des listes de blocages après l'installation :

screen3

Je conseille ici d'installer une inferface web pour l'administration de la Pi-hole.

Cette interface permettre d'accéder à des stats d'utilisation du DNS sur tous les appareils connectés et savoir quel appareil fait plus ou moins de requêtes (bloquées ou non) :

screen4
screen5

Nous avons ici la possibilité de logguer les requêtes DNS faites par les appareils connectés au réseau :

screen6

Nous pouvons choisir la verbosité de ce qui est collecté :

screen7

Dans ce dernier écran, nous avons les informations nécessaires pour nous connecter à l'interface d'administration :

screen8

Et voilà ! La Pi-hole est installée !

Configuration du réseau local

Après installation, nous devons dire au serveur DHCP de fournir l'adresse IP de la Pi-hole à tous les appareils connectés.

Dans la plupart des gros opérateurs commerciaux (excepté Free peut-être ?), il n'est pas possible de supprimer le résolveur du FAI mais seulement la possibilité d'en rajouter. Par défaut, votre box internet fournira le resolveur DNS de votre FAI.

Il est tout à fait possible de contourner cette restriction en désactivant le serveur DHCP de la box Internet.

En effet, Pi-hole offre la possibilité de faire, en plus de résolution DNS, serveur DHCP.

Pour ce faire, via l'interface Web, il suffit d'aller dans la section Settings et DHCP :

screen9

Nous pouvons configurer la plage d'adresses, et nous devons fournir l'adresse IP de la box (section Router)

Il faut maintenant désactiver le serveur DHCP de la box internet de votre FAI et voilà.

Dans Query log, il est possible de voir les appareil et les noms de domaines résolues ou bloquées :

screen10

Dans le dashboard, nous avons des stats sur l'utilisation de DNS par les appareils du réseau :

screen11

Il y a également des stats sur les Top sites visités et les Top sites bloquées :

screen12

Nous avons aussi la liste des appareils connectés au réseau et les liste de ceux qui font le plus de requêtes DNS en général et ceux qui font le plus de requêtes bloquées.

Pour aller plus loin

Dans un prochain billet, j'expliquerai comment je protège les smartphones de la maison pour éviter qu'ils fassent des requêtes, notamment grâce à une connexion permanente à un noeud Wireguard.

lolcat

Refs:

Installation - Pi-hole documentation

Blocklists complémentaires :

GitHub - StevenBlack/hosts: 🔒 Consolidating and extending hosts files from several well-curated sources. Optionally pick extensions for porn, social media, and other categories.
🔒 Consolidating and extending hosts files from several well-curated sources. Optionally pick extensions for porn, social media, and other categories. - GitHub - StevenBlack/hosts: 🔒 Consolidating a...