🛠 Pi-hole : serveur DNS filtrant sur le NanoPi R5S
Objetivos
Instalar un servidor DNS de filtrado en el NanoPi R5S que ya actúa como router: ya sea Pi-hole (mediante DietPi o Docker), o dnsmasq en modo de filtrado de listas. El R5S es ideal para este rol: siempre encendido, bajo consumo, Ethernet cableado, y DietPi lo incluye entre los softwares admitidos desde la versión v8.20. Aprenderás a configurar el DNS ascendente, a redirigir el puerto 53 de la LAN y a verificar que el bloqueo funciona.
Hardware
- NanoPi R5S con Debian/Ubuntu (FriendlyElec), Armbian o DietPi ≥ v8.20
- El R5S debe ser el router (o el DNS anunciado por DHCP) de la LAN — ver el tutorial de router Linux
- Mínimo 8 GB de eMMC; se recomienda una tarjeta microSD o un NVMe M.2 para reducir el desgaste
Código completo
#!/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
Verificación esperada
ss -lunp muestra pihole-FTL escuchando en el puerto 53. Una consulta nslookup doubleclick.net devuelve 0.0.0.0 (bloqueado) mientras que un dominio permitido resuelve normalmente. La consola de administración http://192.168.69.1/admin muestra las consultas de la LAN. Los clientes DHCP apuntan a 192.168.69.1. El RK3568B2 soporta holgadamente el tráfico DNS doméstico (varios miles de consultas/s).
Errores frecuentes
- Conflicto de puerto 53: systemd-resolved o dnsmasq ya están escuchando; desactivar (
systemctl disable --now systemd-resolved) antes de instalar Pi-hole. - eMMC de 8 GB saturada por los logs: limitar la retención de logs en la administración, o mover la base de datos a NVMe/microSD.
- Bucle DNS si el DNS ascendente es 127.0.0.1: elegir un resolutor externo.
- Clientes Android/Chrome que evitan el filtro mediante DNS-over-HTTPS: prever reglas de bloqueo DoH en la salida o un perfil de red.
- Olvidar la regla PREROUTING: los clientes con DNS estático (8.8.8.8) no se filtran.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash