🛠 Pi-hole : serveur DNS filtrant sur le NanoPi R5S
Objectifs
Installer un serveur DNS filtrant sur le NanoPi R5S déjà routeur : soit Pi-hole (via DietPi ou Docker), soit dnsmasq en mode filtre de listes. Le R5S est idéal pour ce rôle : toujours allumé, faible consommation, Ethernet filé, et DietPi le liste parmi les titres logiciels pris en charge depuis la v8.20. Vous apprendrez à configurer le DNS amont, à détourner le port 53 du LAN, et à vérifier que le blocage fonctionne.
Matériel
- NanoPi R5S sous Debian/Ubuntu (FriendlyElec), Armbian ou DietPi ≥ v8.20
- Le R5S doit être le routeur (ou le DNS annoncé par DHCP) du LAN — voir le tuto routeur Linux
- 8 GB d'eMMC minimum ; préférer une carte microSD ou un NVMe M.2 pour l'usure
Code complet
#!/bin/bash
# Installation Pi-hole : sur DietPi, dietpi-software installe le paquet
# proprement ; sur Debian, l'installeur officiel (à examiner avant d'exécuter).
sudo apt update && sudo apt install -y pihole # paquet dispo sur DietPi
# Sur Debian classique, installeur officiel (à examiner avant d'exécuter) :
curl -sSL https://install.pi-hole.net | bash
# → interface amont : 1.1.1.1 ou le DNS de la box
# → interface d'écoute : br-lan
# Détourner le DNS du LAN (clients qui ignorent le DHCP) :
sudo iptables -t nat -A PREROUTING -i br-lan -p udp --dport 53 \
-j DNAT --to-destination 192.168.69.1:53
# Vérifier l'écoute et le filtrage
ss -lunp | grep ':53'
nslookup doubleclick.net 127.0.0.1 # doit répondre 0.0.0.0
nslookup example.com 127.0.0.1 # doit résoudre normalement
# Statistiques / console d'admin
curl -s http://127.0.0.1/admin | head -n 5
Vérification attendue
ss -lunp montre pihole-FTL en écoute sur le port 53. Une requête nslookup doubleclick.net renvoie 0.0.0.0 (bloqué) alors qu'un domaine autorisé résout normalement. La console d'admin http://192.168.69.1/admin affiche les requêtes du LAN. Les clients DHCP pointent vers 192.168.69.1. Le RK3568B2 encaisse largement un débit DNS domestique (plusieurs milliers de requêtes/s).
Erreurs fréquentes
- Conflit port 53 : systemd-resolved ou dnsmasq déjà en écoute ; désactiver (
systemctl disable --now systemd-resolved) avant l'install Pi-hole. - eMMC 8 GB saturée par les logs : limiter la rétention des logs dans l'admin, ou déplacer la base sur NVMe/microSD.
- Boucle DNS si le DNS amont est 127.0.0.1 : choisir un résolveur externe.
- Clients Android/Chrome qui contournent le filtre via DNS-over-HTTPS : prévoir des règles de blocage DoH en sortie ou un profil réseau.
- Oublier la règle PREROUTING : les clients avec DNS statique (8.8.8.8) ne sont pas filtrés.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash