Créer et configurer son bloqueur de pubs Pi-Hole

Créer et configurer son bloqueur de pubs Pi-Hole

Qu'est-ce que Pi-Hole ?

Pi-Hole est un service open-source créé en 2014, auto-hébergeable, il est utilisé pour bloquer les pubs et les sites indésirables. Il est principalement conçu pour fonctionner sur Raspberry Pi, mais sa légerté lui permet de fonctionner sur tout type d'appareil utilisant Linux comme système d'exploitation.

Pi-Hole agit comme un serveur DNS (Domain Name System) se plaçant dans votre réseau entre votre routeur et vos appareils. Le serveur Pi-Hole va réceptionner les requêtes entrant dans votre réseau local et filtrer ces dernières en les bloquant ou les envoyant vers vos appareils selon le contenu de vos Adlists.

C'est quoi des "Adlists" ?

Avant de commencer à installer votre serveur, il est necessaire de savoir ce qu'est une "Adlist" qui est un terme largement utilisé dans le domaine du Pi-Hole.

Il s'agit d'une liste créée sous le format de fichier .txt contenant un grand nombres de domaines ou de liens dirigeant vers des publicités (donc ad en Anglais) ou du contenu indesirables, ce fichier va donc permettre à votre serveur Pi-Hole de savoir quels sites doivent être bloqués ou non.

Disclamer :

⚠ Si vous êtes abonné chez l'opérateur Orange, la démarche à suivre est différente des autres opérateurs. Un nouveau tutoriel sera bientôt disponible pour votre réseau.

Installation du serveur.

Ce tutoriel va vous montrer comment installer Pi-Hole sur la dernière version de Linux Debian à la sortie de cet article, Debian 12 (Bookworm).

Maintenant que vous avez les bases de Pi-Hole, nous pouvons passer à l'installation du serveur :

Tout d'abord il faut savoir qu'il existe deux types d'installation :

  • L'installation dite "Legacy" qui est le type d'installation classique des programmes sur Debian.
  • L'installation "Dockerisée" qui est un type d'installation qui utilise le service Docker qui permet de créer des conteneurs de differents services. Elle permet généralement d'utiliser moins de ressources sur votre appareil ainsi que d'isoler le service de votre machine, mais est accessible à des utilisateurs assez avancés sur le sujet.

Prérequis :

Pour procéder à l'installation de Pi-Hole, il vous faut d'abord quelques prérequis.

  • Vérifiez en premier lieu si vous êtes bien connecté en tant que super-utilisateur root.
  • Ensuite, vérifiez et mettez à jour votre système en lançant cette commande : apt update && apt upgrade -y , redémarrez votre appareil si des mises à jour ont été faites.
  • Vérifiez que votre appareil a une adresse IP statique dans votre réseau local. Pour ce faire, il existe différentes méthodes selon votre opérateur :

Configurer une IP statique sur votre DHCP

Nous vous expliquons comment attribuer une adresse IP statique dans votre réseau sur ce post :

Comment configurer une adresse IP statique sur votre DHCP
Chez Make in Lab, nous vous parlons beaucoup de serveurs, de configurations, mais plus globalement de réseau. Cependant, nos tutoriels vous propose très souvent de fixer une adresse IP pour les services que nous vous présentons et ceci, en passant par le serveur DHCP. Mais concrètement, qu’est ce que c’est

Installation classique :

Enfin, vous pouvez passer à l'installation de Pi-Hole.

Tout d'abord, lancez la commande suivante :

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

Après quelques secondes d'attente, cela devrait vous donner ce résultat :

Vous acceptez alors les messages pour passer à l'étape suivante.

Cette étape vous demande d'attribuer une adresse IP statique à votre machine, nous l'avons fait pour les prérequis de ce tutoriel alors nous pouvons sélectionner "Continue" et passer a l'étape suivante.

Une des grandes étapes pour l'instllation, le choix du serveur DNS que Pi-Hole va utiliser pour diriger vos requêtes.

Selon vos préférences vous pouvez utiliser un de ceux proposés dans la liste, si vous ne savez pas quel serveur DNS utiliser nous vous conseillons de choisir celui de votre routeur avec l'option "Custom" puis indiquez ensuite son adresse IP (Chez les opérateurs français ils sont souvents prédéfinis par 192.168.1.254)

Ensuite, l'installateur vous demande si vous souhaitez utiliser une Adlist qu'il vous suggère. Nous vous conseillons de l'utiliser, elle contient un très grand nombre de domaines bloqués et est régulièrement mise à jour.

Maintenant, l'installateur vous demande si vous souhaitez installer l'interface web d'administration ainsi que son serveur, nous vous conseillons de l'installer car elle permet de consulter les statistiques de votre traffic et de gérer facilement votre Pi-Hole.

Pour cette étape, l'installateur vous demande si vous souhaitez avoir un historique des requêtes faites par les appareils de votre réseau, cela vous permet de verifier les differentes requêtes et de bloquer ou accepter celles qui vous semblent indésirables ou non. Nous vous conseillons de l'activer.

Après cela, on vous demande si vous souhaitez que Pi-Hole enregistre toutes les statistiques ou si il doit en cacher certaines, afin de voir toutes les infos du traffic de votre réseau, nous vous conseillons de choisir l'option "0 Show everything". Passons maintenant à l'étape suivante.

Une longue liste de lignes devraient défiler devant vos yeux, cela veut dire que Pi-Hole est en train de s'installer, à la fin de ce processus, l'installateur vous montrera une dernière page bleue indiquant comment vous connecter à l'interface web.

Conservez bien le mot de passe qu'il vous donne il est régulièrement requis pour vous connecter.

Mais si vous avez perdu votre mot de passe vous pouvez le changer en entrant cette commande :

pihole -a -p <votre_mot_de_passe>

Ne mettez pas votre mot de passe entre crochets "<>"

Vous pouvez maintenant passer à la configuration de votre routeur afin que votre réseau utilise le Pi-Hole.

Installation Dockerisée :

L'installation Dockerisée est un peu plus rapide, mais elle nécessite plus de compréhension du monde informatique.

Pour cette installation, on va utiliser Docker Compose, un outil qui simplifie l'utilisation des conteneurs Docker. Il s'utilise à l'aide d'un fichier qu'on appelle docker-compose.yml.

Pour commencer, installez Docker et Docker Compose dans votre système :

apt install -y docker.io docker-compose

Ensuite, créez un dossier que l'on va appeler pihole ou vous voulez, généralement on le place dans le répertoire /etc, créez donc le répertoire puis entrez dedans avec ces commandes :

mkdir /etc/pihole
ls /etc/pihole

maintenant, créez un fichier docker-compose.yml avec vim ou nano puis copiez-y ce code :

version: "3"

# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    hostname: pi-hole
    restart: unless-stopped
    # For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "80:80/tcp"
    environment:
      TZ: 'Europe/Paris'
      WEBPASSWORD: '<mdp_du_panneau_web>'
      FTLCONF_LOCAL_IPV4: '<adresse_ip_de_votre_serveur>'
      PIHOLE_DNS_: '192.168.1.254;1.1.1.1'
    # Volumes store your data between container upgrades
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities

Explication du fichier :

Commençons par le commencement, la première ligne. version: "3" précise quelle version de Docker Compose utiliser pour ce service.

Ensuite nous avons la section services avec 4 parties. La première indique le nom du conteneur container_name: pihole, quelle image Docker utiliser image:, le nom que Pi-Hole va avoir hostname:, puis à quel moment le service redemarre restart: dans notre cas, unless-stopped signifie que le service redemarrera en cas d'arrêt soudain sauf s'il a été stoppé manuellement.

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    hostname: pi-hole
    restart: unless-stopped

La seconde partie définie quels ports le service va utiliser.

  • 53:53/tcp et 53:53/udp : Pi-hole gère les requêtes DNS sur le port 53, aussi bien en TCP qu’en UDP.
  • 80:80/tcp : L'interface web de Pi-hole est accessible sur le port 80 en HTTP.
ports:
  - "53:53/tcp"
  - "53:53/udp"
  - "80:80/tcp"

Ensuite, la troisième partie, qui definie les variables d'environement de Pi-Hole.

  • TZ (pour Time Zone) : Définit le fuseau horaire, dans notre cas Europe/Paris.
  • WEBPASSWORD: Définit le mot de passe pour accéder à l'interface web de Pi-hole.
  • FTLCONF_LOCAL_IPV4: Indique l'adresse IP locale du serveur Pi-hole.
  • PIHOLE_DNS_: Déclare les serveurs DNS utilisés par Pi-hole, ici le DNS de votre routeur comme serveur primaire (192.168.1.254) et CloudFlare DNS comme serveur secondaire (1.1.1.1).
environment:
      TZ: 'Europe/Paris'
      WEBPASSWORD: '<mdp_du_panneau_web>'
      FTLCONF_LOCAL_IPV4: '<adresse_ip_de_votre_serveur>'
      PIHOLE_DNS_: '192.168.1.254;1.1.1.1'

Et enfin, la dernière partie définie les volumes du conteneur, autrement dit, où vont être stockés les données de Pi-Hole. Cela permet de conserver toute notre configuration ainsi que les données enregistrées après un redemarrage ou une mise à jour du service.

  • ./etc-pihole:/etc/pihole : Stocke les données spécifiques à Pi-Hole telles que les listes de blocage et les logs.
  • ./etc-dnsmasq.d:/etc/dnsmasq.d : Contient les configurations DNS.
volumes:
  - './etc-pihole:/etc/pihole'
  - './etc-dnsmasq.d:/etc/dnsmasq.d'

Démarrer et gerer le serveur

Pour démarrer le serveur avec Docker Compose c'est très simple il suffit de taper cette commande :

docker-compose up -d

Si vous souhaitez voir les logs du serveur vous pouvez entrer ceci :

docker-compose logs -f

Pour arrêter le serveur on utilise cette commande :

docker-compose down

Si vous souhaitez mettre à jour Pi-Hole, il suffit de taper cette suite de commandes :

docker-compose down
docker-compose pull
docker-compose up -d

Ensuite vous pouvez lister et supprimer l'ancienne image de Pi-Hole avec ceci :

docker image ls
docker image rm <id_de_l'ancienne_image>

Configuration DNS de votre Routeur :

Maintenant que l'installation du coté de votre Pi-Hole est faite, passons maintenant à la configuration de votre routeur afin qu'il l'utilise comme serveur DNS.

Pour ce faire, il existe différentes méthodes selon votre opérateur :

Orange

Il n'est pas possible de changer les serveurs DNS utilisés par la Livebox, pour utiliser un serveur Pi-Hole dans votre réseau, vous deverez utiliser Pi-Hole en tant que serveur DHCP. Un tutoriel sera bientôt disponible pour expliquer comment faire cela.

Bouygues Télécom

Avec un routeur Bbox nous pouvons procéder ainsi :

  • Connectez vous sur votre panneau d'administration de votre routeur via ce lien : https://mabbox.bytel.fr/.
  • Vous déroulez ensuite le menu "Services de la box", cliquez sur les trois points de l'option DHCP puis sur "Configurer".
  • Descendez en bas de la page jusqu'à "DNS" puis cliquez sur "Editer la règle" en passant votre souris sur ces paramètres.
  • Ensuite, entrez l'adresse IP que vous avez attribué à votre serveur Pi-Hole dans l'encart "DNS primaire" puis appliquez les paramètres.

Free

Avec un routeur Freebox nous pouvons procéder ainsi :

  • Connectez vous sur votre panneau d'administration de votre routeur via ce lien : http://192.168.1.254.
  • Accedez au menu "Paramètres de la freebox" puis entrez dans les paramètres DHCP.
  • Il ne vous reste plus qu'à entrer l'adresse IP que vous avez attribué à votre serveur Pi-Hole dans l'encart "Serveur DNS 1" puis appliquez les paramètres.

SFR

Avec un routeur SFRbox nous pouvons procéder ainsi :

  • Connectez vous sur votre panneau d'administration de votre routeur via ce lien : http://192.168.1.1.
  • Accedez au menu "LAN Réseau local".
  • Ensuite, il ne vous reste plus qu'à entrer l'adresse IP que vous avez attribué à votre serveur Pi-Hole dans l'encart "DNS Primaire" puis appliquez les paramètres.

Conclusion

Vous voilà à présent parés face aux pubs qui envahissent internet, pour compléter la configuration de votre Pi-Hole, voici une Adlist préparée par nos soins pour bloquer les domaines de site d'escroqueries et d'arnaques comme ceux présentés dans cet article.

Pour nous aider à nous améliorer, n'hesitez pas à faire part de vos avis en commentaires ou même à poser vos questions si vous avez besoin d'aide supplémentaire.