Cette série est également disponible en anglais.
Read in English
Chapitre 3
Home LabTutorialsDevOps & Infrastructure

Comment installer et configurer Pi-Hole sur un Raspberry Pi 5

7 min de lecture
Comment installer et configurer Pi-Hole sur un Raspberry Pi 5
Apprenez à installer Pi-Hole sur un Raspberry Pi 5 pour agir comme un bloqueur de publicités à l'échelle du réseau. Ce guide couvre la configuration d'une IP statique, l'installation de Pi-Hole et le routage de domaines locaux.

Note : Ce guide est conçu pour Pi-hole v6. Si vous utilisez une version plus ancienne (v5), certaines commandes de configuration et le comportement du serveur web peuvent différer.

Maintenant que nous avons un Pi 5 entièrement configuré, ajoutons quelques services. Le premier sera Pi-hole. C'est un serveur DNS auto-hébergé capable de bloquer les publicités à l'échelle du réseau. Fini les pubs, même sur votre téléphone, tant que vous êtes connecté à votre réseau local !

Qu'est-ce qu'un DNS et à quoi servent les serveurs DNS ?

Lorsque vous essayez d'accéder à des sites web et des services internet, votre navigateur ou une autre application réseau doit savoir où se trouve le serveur. Cela se fait via une IP, l'adresse IP d'un serveur est un identifiant unique qui mène à cette machine spécifique dans le monde entier.

Cependant, vous ne tapez pas 142.250.110.190 dans votre navigateur, ce serait difficile à retenir. À la place, vous tapez youtube.com. Par conséquent, quelque chose doit traduire cette URL en une adresse IP pour que votre PC sache où envoyer la requête. C'est le rôle d'un serveur DNS ; c'est en quelque sorte un grand annuaire pour traduire les URL.

En réalité, le DNS ne traduit pas l'URL entière, seulement le nom de domaine. Ainsi :

https://www.youtube.com/watch?v=Aq5WXmQQooo

Devient :

https://142.250.110.190/watch?v=Aq5WXmQQooo

Pour être précis, taper directement l'adresse IP ne fonctionnera même pas. C'est parce que de nombreux services peuvent se trouver à la même adresse IP avec le même port. Le nom de domaine est également envoyé dans la requête (via l'en-tête Host) pour que le serveur sache quel service fournir.

Comment un serveur DNS peut-il bloquer les publicités ?

Lorsque vous visitez un site web et que vous voyez une publicité, celle-ci provient en fait d'un autre serveur, dont l'adresse diffère de celle du site que vous consultez. Ces adresses sont connues et si vous savez qu'une URL est utilisée pour diffuser des publicités, vous pouvez la bloquer.

En pratique, Pi-Hole dispose d'une grande base de données de domaines et résoudra toujours ces domaines vers 0.0.0.0. Cela signifie qu'ils ne mènent nulle part et qu'aucune publicité n'est diffusée ! Comme Pi-Hole opère au niveau du réseau, la plupart des sites web ne peuvent pas le détecter; ils ne cherchent généralement que les extensions navigateur comme AdBlock. Cela rend Pi-Hole bien plus efficace.

Exemple d'un fichier hosts redirigeant les domaines publicitaires vers 0.0.0.0

Comment installer Pi-Hole ?

Dans cette série d'articles, mon projet est de configurer Kubernetes sur mon Pi pour héberger des applications web. Cependant, nous ne pouvons pas déployer Pi-Hole à l'intérieur de Kubernetes. Pourquoi ? Parce que Pi-Hole doit déjà être en marche avant le démarrage du cluster; c'est un problème de l'œuf et la poule. Le serveur DNS doit être joignable à une adresse IP connue, il doit donc tourner directement sur la machine hôte.

Étape 1 : Mettre à jour le Pi

Si vous suivez cette série, vous l'avez déjà fait, mais sinon, mettez toujours à jour votre distribution Linux pour obtenir les dernières applications :

Donc, via SSH dans le Pi 5, exécutez :

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Après le redémarrage, reconnectez-vous par SSH.

Étape 2 : Définir une adresse IP statique pour votre Pi

Actuellement, vous avez un Pi sur votre réseau, il peut être connecté en Wi-Fi ou en Ethernet ; je recommande vivement de désactiver le Wi-Fi et d'utiliser uniquement une connexion Ethernet par câble. Cela signifie que votre Pi a reçu une IP aléatoire de votre routeur. Nous voulons que le Pi conserve la même IP locale pour nous assurer qu'il soit toujours à la même adresse.

Pour ce faire, vous devrez accéder à votre modem/routeur à la maison. La procédure varie beaucoup et dépend de votre fournisseur d'accès à Internet (FAI). Habituellement, vous pouvez essayer ces adresses directement dans votre navigateur, dans l'ordre des plus probables :

  • 192.168.0.1
  • 192.168.1.1
  • 192.168.1.254
  • 10.0.0.1
  • 10.1.1.1

Si cela ne fonctionne pas, essayez de trouver la documentation de votre FAI et de votre routeur/modem.

Une fois que vous avez trouvé la bonne adresse IP, vous devriez voir quelque chose de similaire à ceci, en fonction de votre FAI. Vous devrez maintenant trouver le mot de passe, qui devrait se trouver sur la boîte ou dans la documentation de votre FAI.

Page de connexion de l'interface d'administration d'un routeur

Selon votre FAI, vous devriez trouver une page similaire à celle-ci, où vous pouvez définir une adresse IP fixe pour les différents appareils connectés à votre réseau. Cherchez des paramètres nommés "Bail statique", "Réservation DHCP" ou "IP statique". Ici, vous devez être prudent : un appareil n'est pas le Pi lui-même mais l'adresse MAC de l'interface réseau. Donc, si vous avez à la fois le Wi-Fi et l'Ethernet sur votre Pi, vous verrez votre Pi deux fois.

Exécutez cette commande :

ip -o link | awk '/link\/ether/ {print $2, $(NF-2)}'

Et vous obtiendrez quelque chose comme :

eth0: 2c:cf:67:12:34:56
wlan0: dc:a6:32:ab:cd:ef
lo: 00:00:00:00:00:00 

Utilisez l'adresse MAC de eth0 si vous voulez utiliser l'Ethernet filaire ou wlan0 pour utiliser le Wi-Fi. Ensuite, vous pouvez choisir une IP, je suggère de garder celle déjà utilisée. Pour moi, c'était 192.168.0.14.

Interface du routeur pour configurer une adresse IP statique pour un appareil

Étape 3 : Installer Pi-Hole

Maintenant, installons Pi-Hole avec :

curl -sSL https://install.pi-hole.net | bash

Note : Exécuter un script téléchargé depuis Internet avec bash implique de lui faire confiance. Si vous le souhaitez, Vous pouvez consulter le script d'installation sur GitHub avant de l'exécuter.

Pendant l'installation :

  • choisissez votre interface réseau (celle avec une IP statique, donc soit eth0, soit wlan0)
  • choisissez votre DNS en amont (Google ou Cloudflare conviennent, mais c'est à vous de décider)

À un moment donné, l'installateur vous donnera un mot de passe, n'oubliez pas de le noter. Vous pourrez le changer plus tard en utilisant :

sudo pihole setpassword

Étape 4 : Déplacer le tableau de bord/API hors du port 80

Par défaut, le tableau de bord de Pi-Hole utilise le port 80 du Pi 5. Cependant, nous voulons garder ce port pour les services web que l'on déploiera sur Kubernetes dans un prochain chapitre. Par conséquent, nous allons déplacer le tableau de bord sur le port 8081 en exécutant ceci :

sudo pihole-FTL --config webserver.port "8081,[::]:8081"
sudo systemctl restart pihole-FTL

Vérifiez que le port 80 n'est plus utilisé par Pi-hole :

sudo ss -ltnp | grep -E ':80|:8081'

Vous devriez voir Pi-hole écouter sur le port 8081, et non sur le 80.

Vous pouvez aussi vérifier le statut de Pi-hole :

sudo pihole status

Ensuite, ouvrez le tableau de bord en utilisant l'IP statique de votre Pi et connectez-vous avec votre mot de passe :

http://x.x.x.x:8081/admin

Pi-Hole devrait être en cours d'exécution maintenant !

Écran de connexion du tableau de bord de Pi-Hole

Étape 5 : Configurer votre réseau pour qu'il utilise Pi-hole

Nous n'avons pas tout à fait terminé. Pi-Hole fonctionne, mais rien sur votre réseau ne l'utilise encore — c'est votre routeur qui décide quel serveur DNS utiliser. Vous pouvez également configurer le DNS au niveau de chaque appareil si vous le souhaitez, mais faisons-le sur le routeur.

Dans votre routeur, vous devriez trouver une page pour définir le DNS, qui ressemble à quelque chose comme ceci :

Paramètres DNS dans l'interface d'administration d'un routeur

Pointez le DNS de votre routeur, ou le DNS de chaque client, vers l'adresse IP du Pi et sauvegardez !

Maintenant, nous devons nous assurer que le changement a été appliqué et que nous n'utilisons pas un DNS en cache. Vous pouvez redémarrer votre modem et votre PC pour ce faire. Vous pouvez également vider le cache DNS de votre PC :

Windows:

ipconfig /flushdns

Linux avec systemd-resolved:

sudo resolvectl flush-caches

macOS:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Ensuite, exécutez quelque chose comme :

nslookup youtube.com

Et vous devriez maintenant être servi par votre Pi !

En cas de problème : Si votre connexion internet ne fonctionne plus après avoir changé le DNS, retournez dans les paramètres de votre routeur et remettez le DNS en automatique. Cela rétablira le fonctionnement normal le temps de déboguer.

Résultat de la commande nslookup dans un terminal, montrant que le serveur DNS est le Raspberry Pi

Allez sur un site web connu pour avoir beaucoup de publicités et vérifiez si vous les voyez toujours, elles devraient avoir disparu !

Dans le tableau de bord de Pi-Hole, vous devriez pouvoir voir les requêtes bloquées et plus encore !

Tableau de bord de Pi-Hole affichant les statistiques de blocage

Rediriger les domaines .home.arpa vers votre Pi

Maintenant que nous avons un serveur DNS, mettons-le à contribution pour ne plus avoir à taper l'IP du Pi pour accéder au tableau de bord. Nous utilisons le domaine de premier niveau .home.arpa car c'est le choix standard pour les DNS de réseaux domestiques privés. En utilisant .home.arpa, vous vous assurez que votre domaine local n'entrera jamais en conflit avec un nom de domaine public.

Deux options s'offrent à vous selon votre configuration :

Option A : Rediriger un seul domaine

Si vous avez uniquement besoin d'une URL pratique pour Pi-Hole, redirigez seulement pihole.home.arpa vers le Pi :

sudo pihole-FTL --config misc.dnsmasq_lines '["address=/pihole.home.arpa/192.168.0.14"]'
sudo systemctl restart pihole-FTL

Le tableau de bord est maintenant accessible (uniquement sur votre réseau local) à l'adresse :

http://pihole.home.arpa:8081/admin

Option B : Rediriger tous les *.home.arpa (mon choix)

Si votre Pi hébergera plusieurs services (par exemple via Kubernetes), vous pouvez rediriger tout ce qui se termine par .home.arpa vers lui :

sudo pihole-FTL --config misc.dnsmasq_lines '["address=/.home.arpa/192.168.0.14"]'
sudo systemctl restart pihole-FTL

Comme Kubernetes gère le routage interne, il saura quel service fournir pour quelle adresse sur le port 80.

Un effet secondaire : le tableau de bord de Pi-Hole devient accessible via n'importe quel domaine en .home.arpa sur le port 8081 (par ex. http://nimporte-quoi.home.arpa:8081/admin). Comme rien d'autre n'utilise ce port, ce n'est pas un problème.

Vérification

Quelle que soit l'option choisie, vérifiez que ça fonctionne :

nslookup pihole.home.arpa

Vous devriez voir l'adresse IP de votre Pi en réponse.

Et voilà ! Nous avons maintenant un serveur DNS auto-hébergé qui bloque les pubs sur tout le réseau, avec un routage local via .home.arpa. Je suis désormais le fier propriétaire de mon propre serveur DNS — et vous aussi si vous avez suivi ce tutoriel ! Dans le prochain chapitre, nous installerons Kubernetes sur le Pi.

#raspberry-pi#pi-hole#serveur-domestique#dns#réseau
Judicael Poumay (Ph.D.)

Judicael Poumay (Ph.D.)

Suivez-moi sur LinkedIn pour du contenu hebdomadaire Judicaël Poumay

En tant que chercheur/développeur IA indépendant spécialisé en Traitement du Langage Naturel (NLP), j'ai une expertise complète dans le développement et l'intégration de systèmes d'IA, ainsi que l'analyse de données.

Votre entreprise cherche à intégrer des solutions IA, analyser des données ou renforcer son développement back-end ? Contactez-moi !

Offrez-moi une bière 🍺

Articles Similaires