Que fait Pi-hole DNS pour lab maison ?
Pi-hole est un bloqueur de publicités DNS à l'échelle du réseau qui fonctionne sur un Raspberry Pi ou tout hôte Linux. Chaque appareil de votre réseau bénéficie automatiquement du blocage des domaines publicitaires et de malwares — sans extension de navigateur.
Quand l'utiliser
- Installer Pi-hole sur un Raspberry Pi ou un hôte Linux
- Configurer Pi-hole comme serveur DNS pour un réseau domestique
- Ajouter ou gérer des listes de blocage
- Configurer des résolveurs amont DNS-over-HTTPS (DoH)
- Créer des enregistrements DNS locaux (par ex.
nas.home.lan,pi.home.lan) - Diagnostiquer les appareils qui perdent l'accès Internet après l'installation de Pi-hole
- Exécuter Pi-hole en complément ou à la place de DHCP
Comment Pi-hole fonctionne
Flux normal (sans Pi-hole) :
Appareil → demande ads.tracker.com → FAI DNS → vraie IP → publicité chargée
Avec Pi-hole :
Appareil → demande ads.tracker.com → Pi-hole DNS → bloqué (renvoie 0.0.0.0) → pas de publicité
Toutes les requêtes DNS passent d'abord par Pi-hole.
Pi-hole les vérifie par rapport aux listes de blocage.
Les domaines bloqués reçoivent une réponse nulle — la publicité/tracker ne se charge jamais.
Les domaines autorisés sont transmis à votre résolveur amont (Cloudflare, Google, etc.).
Installation
Docker (Recommandé)
Docker est le moyen le plus simple d'installer Pi-hole et facilite les mises à jour et sauvegardes.
# docker-compose.yml
services:
pihole:
image: pihole/pihole:<pinned-release-tag>
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp" # Administration web
environment:
TZ: "America/New_York"
WEBPASSWORD: "${PIHOLE_WEBPASSWORD}" # défini via fichier .env ou secret
PIHOLE_DNS_: "1.1.1.1;1.0.0.1"
DNSMASQ_LISTENING: "all"
volumes:
- "./etc-pihole:/etc/pihole"
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
restart: unless-stopped
cap_add:
- NET_ADMIN # nécessaire uniquement si Pi-hole sert DHCP
Remplacez <pinned-release-tag> par un tag de version actuel de Pi-hole avant le déploiement.
Évitez latest pour une infrastructure DNS durable afin que les mises à niveau soient délibérées et vérifiables.
Définissez PIHOLE_WEBPASSWORD dans un fichier .env à côté de docker-compose.yml, chmod à 600, et gardez-le hors de git — ne mettez pas le mot de passe directement dans le fichier compose.
Accédez à l'administration web à : http://<ip-du-pi>/admin
Installation physique (Raspberry Pi OS / Debian / Ubuntu)
Pi-hole nécessite une adresse IP statique avant l'installation.
# Étape 1 : Attribuer une IP statique (éditer /etc/dhcpcd.conf sur Pi OS)
sudo nano /etc/dhcpcd.conf
# Ajouter à la fin :
interface eth0
static ip_address=192.168.3.2/24
static routers=192.168.3.1
static domain_name_servers=192.168.3.1
# Étape 2 : Télécharger et inspecter l'installateur avant de l'exécuter.
# Privilégier le paquet ou le chemin d'installation documenté par Pi-hole pour votre OS/version.
curl -sSL https://install.pi-hole.net -o pi-hole-install.sh
less pi-hole-install.sh # vérifier avant de continuer
# Étape 3 : Exécuter
bash pi-hole-install.sh
# Suivre l'installateur interactif :
# 1. Sélectionner l'interface réseau (eth0 pour filaire — recommandé)
# 2. Sélectionner le DNS amont (Cloudflare ou laisser par défaut — modifiable plus tard)
# 3. Confirmer l'IP statique
# 4. Installer l'interface d'administration web (recommandé)
# 5. Noter le mot de passe administrateur affiché à la fin
Pointer votre réseau vers Pi-hole
# Méthode 1 : Modifier le DNS dans les paramètres DHCP du routeur (recommandé)
Interface admin du routeur → Paramètres DHCP → Serveur DNS
DNS primaire : 192.168.3.2 (IP de Pi-hole)
DNS secondaire : laisser vide pour un blocage strict, ou utiliser un deuxième Pi-hole.
Un repli public comme 1.1.1.1 améliore la disponibilité lors du déploiement
mais peut contourner le blocage car les clients peuvent l'interroger.
Tous les appareils reçoivent Pi-hole comme DNS automatiquement lors du prochain renouvellement DHCP.
Forcer le renouvellement : reconnecter le Wi-Fi ou exécuter 'sudo dhclient -r && sudo dhclient' sur Linux
# Méthode 2 : DNS par appareil (utile pour tester avant un déploiement réseau)
Windows : Panneau de configuration → Carte réseau → Propriétés IPv4 → définir DNS manuellement
macOS : Réglages système → Réseau → Détails → DNS → définir manuellement
Linux : /etc/resolv.conf ou NetworkManager
# Méthode 3 : Pi-hole comme serveur DHCP (remplace le DHCP du routeur)
Administration Pi-hole → Paramètres → DHCP → Activer
Désactiver d'abord le DHCP sur le routeur — deux serveurs DHCP sur le même réseau créent des conflits
Avantage : la résolution de nom d'hôte fonctionne automatiquement (les appareils enregistrent leurs noms)
Gestion des listes de blocage
# Administration Pi-hole → Listes de publicité → Ajouter une nouvelle liste
# Listes recommandées :
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
# par défaut — 200k+ domaines
https://blocklistproject.github.io/Lists/malware.txt
# domaines malveillants
https://blocklistproject.github.io/Lists/tracking.txt
# tracking/télémétrie
# Après avoir ajouté une liste :
Outils → Mettre à jour Gravity (télécharge et compile toutes les listes)
# Si un site est bloqué à tort (faux positif) :
Administration Pi-hole → Liste blanche → Ajouter un domaine
Exemple : api.my-legitimate-service.com
# Voir ce qui est bloqué en temps réel :
Tableau de bord → Journal des requêtes (flux live des requêtes DNS avec statut bloqué/autorisé)
DNS-over-HTTPS amont
Le DNS-over-HTTPS chiffre vos requêtes DNS afin que votre FAI ne puisse pas voir quels sites vous résolvez.
# Installer cloudflared (proxy DoH de Cloudflare).
# Privilégier le dépôt de paquets Cloudflare pour une vérification automatique des signatures.
# Si vous téléchargez un binaire directement, figez une version et vérifiez son checksum.
CLOUDFLARED_VERSION="<version-figée>"
curl -LO "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64"
# Vérifier le checksum/signature depuis les notes de version de Cloudflare avant d'installer.
sudo mv cloudflared-linux-arm64 /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
# Créer la configuration cloudflared
sudo mkdir -p /etc/cloudflared
sudo tee /etc/cloudflared/config.yml << EOF
proxy-dns: true
proxy-dns-port: 5053
proxy-dns-upstream:
- https://1.1.1.1/dns-query
- https://1.0.0.1/dns-query
EOF
# Créer le service systemd
sudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflared
# Maintenant, pointer Pi-hole vers le proxy DoH local :
# Administration Pi-hole → Paramètres → DNS → DNS amont personnalisé
# Définir sur : 127.0.0.1#5053
# Décocher tous les autres résolveurs amont
Enregistrements DNS locaux
Rendez vos services accessibles par nom (par ex. nas.home.lan, grafana.home.lan).
Note sur le nom de domaine :
.home.lanest largement utilisé dans les labs domestiques et fonctionne en pratique. Le suffixe réservé par l'IETF pour un usage local est.home.arpa(RFC 8375) — utilisez-le pour suivre la norme. Évitez.localpour les enregistrements DNS Pi-hole car il entre en conflit avec mDNS/Bonjour.
# Administration Pi-hole → DNS local → Enregistrements DNS
Domaine IP
nas.home.lan 192.168.30.10
pi.home.lan 192.168.30.2
grafana.home.lan 192.168.30.3
proxmox.home.lan 192.168.30.4
# Depuis n'importe quel appareil de votre réseau :
ping nas.home.lan → 192.168.30.10
http://grafana.home.lan → votre tableau de bord Grafana
# Pour les sous-domaines, ajouter un CNAME :
Administration Pi-hole → DNS local → Enregistrements CNAME
Domaine : portainer.home.lan → Cible : pi.home.lan
Dépannage
# Pi-hole bloque quelque chose qu'il ne devrait pas
pihole -q exemple.com # Vérifier si le domaine est bloqué et par quelle liste
pihole -w exemple.com # Mettre en liste blanche immédiatement
# Le DNS ne résout rien
pihole status # Vérifier si pihole-FTL fonctionne
dig @192.168.3.2 google.com # Tester le DNS directement contre Pi-hole
# Redémarrer le DNS Pi-hole
pihole restartdns
# Consulter les logs de requêtes pour un appareil spécifique
pihole -t # Suivi live de toutes les requêtes
# Ou filtrer par client dans le journal des requêtes de l'administration web
# Mise à jour de gravity Pi-hole (rafraîchir les listes de blocage)
pihole -g
Anti-patrons
# MAUVAIS : Dépendre d'un seul Pi-hole sans chemin de récupération
# Si Pi-hole plante ou que le Pi perd de l'alimentation, le DNS peut cesser de fonctionner
# BON : Conserver un repli routeur documenté pour le rollback lors de la configuration
# MEILLEUR : Exécuter deux instances Pi-hole pour la redondance ; éviter le DNS public de repli pour un blocage strict
# MAUVAIS : Installer Pi-hole sans IP statique
# Si le Pi reçoit une nouvelle IP DHCP, tous les appareils perdent le DNS
# BON : Définir une IP statique d'abord, puis installer Pi-hole
# MAUVAIS : Activer le DHCP Pi-hole sans désactiver d'abord le DHCP du routeur
# Deux serveurs DHCP sur le même réseau attribuent des IP conflictuelles
# BON : Désactiver le DHCP du routeur, puis activer le DHCP Pi-hole
# MAUVAIS : Ne jamais mettre à jour gravity (listes de blocage)
# De nouveaux domaines publicitaires et malveillants s'accumulent — les listes obsolètes les ratent
# BON : Planifier une mise à jour hebdomadaire de gravity : pihole -g (ou activer dans Paramètres → API)
Bonnes pratiques
- Donner au Pi une IP statique ou une réservation DHCP avant d'installer Pi-hole
- Utiliser Pi-hole comme DNS principal ; pour la redondance, ajouter un deuxième Pi-hole au lieu d'un résolveur public si vous avez besoin d'un blocage strict
- Activer DoH (DNS-over-HTTPS) avec cloudflared pour des requêtes amont chiffrées
- Définir
home.lancomme domaine local et créer des enregistrements DNS pour tous vos services - Consulter le journal des requêtes de temps en temps — les requêtes bloquées montrent ce que font les appareils
Compétences connexes
- homelab-network-setup
- homelab-vlan-segmentation
- homelab-wireguard-vpn