Qué es Pi-hole
Pi-hole es un servidor DNS local que actúa como sumidero de publicidad. Cuando un dispositivo de tu red intenta resolver un dominio de publicidad o rastreo, Pi-hole responde con una dirección nula y el anuncio nunca se carga. Funciona a nivel de red, así que protege todos los dispositivos conectados sin necesidad de instalar extensiones en cada navegador. A diferencia de un DNS autoritativo como BIND9, que publica las zonas de un dominio, Pi-hole solo filtra y reenvía consultas.
Requisitos
- Una Raspberry Pi, un servidor Linux o una máquina virtual con Debian/Ubuntu
- IP estática en la red local
- Acceso root o sudo
Instalación
Pi-hole ofrece un script de instalación automática. Ejecútalo con:
curl -sSL https://install.pi-hole.net | sudo bash
El asistente te guiará por varios pasos:
- Interfaz de red: selecciona la interfaz conectada a tu red local (por ejemplo
eth0). - Proveedor DNS upstream: elige uno temporal como Google o Cloudflare. Más adelante puedes cambiarlo.
- Listas de bloqueo: acepta las listas por defecto. Después podrás añadir más.
- Interfaz web: acepta instalar el panel de administración.
- Contraseña: al finalizar, el script mostrará la contraseña del panel web. Anótala o cámbiala con:
pihole -a -p
Configurar Pi-hole como DNS en tu router
Para que todos los dispositivos usen Pi-hole sin configuración individual, accede al panel de administración de tu router y cambia el servidor DNS primario a la IP de Pi-hole. Por ejemplo, si Pi-hole está en 192.168.1.100:
- DNS primario:
192.168.1.100 - DNS secundario: déjalo vacío o pon la misma IP. Si pones un DNS externo como secundario, los dispositivos podrían usarlo y saltarse el filtrado.
Reinicia el servicio DHCP del router para que los dispositivos renueven su configuración.
## Consejo
Si tu router no permite cambiar el DNS que reparte por DHCP (algunos routers de operador lo bloquean), Pi-hole puede asumir directamente el papel de servidor DHCP de la red desde Settings > DHCP, sustituyendo al del router. En ese caso desactiva el DHCP del router primero, para evitar que dos servidores DHCP repartan IPs en conflicto en la misma red.
Resolver nombres de tu red local
Pi-hole filtra dominios externos, pero por defecto no sabe resolver los nombres de tus propios dispositivos (nas.local, proxmox.local…). Dos formas de solucionarlo, según el caso:
- DNS local manual — en Local DNS > DNS Records, añade a mano cada dominio con su IP (se guarda en
/etc/pihole/custom.list). Útil para servicios con IP fija que no cambian. - Conditional forwarding — en Settings > DNS, activa “Conditional forwarding” e indica la IP de tu router y el rango de tu red local. Pi-hole reenvía al router las consultas de nombres que no reconoce, y el router responde con el hostname que ya conoce de cada dispositivo por DHCP — sin mantener una lista a mano.
Panel de administración
Accede al panel web en http://192.168.1.100/admin. Desde allí puedes ver:
- Dashboard: estadísticas en tiempo real con el porcentaje de consultas bloqueadas, total de peticiones y dominios más frecuentes.
- Query Log: registro detallado de cada consulta DNS con su estado (permitida, bloqueada, cacheada).
- Long-Term Data: gráficos históricos de actividad DNS.
Gestionar listas de bloqueo
Las listas por defecto cubren los dominios más comunes de publicidad y rastreo, pero puedes ampliarlas. Ve a Group Management > Adlists y añade URLs de listas adicionales:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/domains/pro.txt
Después de añadir listas, actualiza la gravedad:
pihole -g
Lista blanca
Algunos servicios pueden dejar de funcionar si bloqueas dominios que necesitan. Añade excepciones desde el panel web en Whitelist o por terminal:
pihole -w dominio.ejemplo.com
Para ver los dominios actualmente en lista blanca:
pihole -w -l
Unbound como DNS recursivo
Por defecto, Pi-hole reenvía las consultas a un proveedor externo como Cloudflare o Google. Si quieres mayor privacidad, puedes instalar Unbound como resolver recursivo local que consulta directamente a los servidores raíz:
sudo apt install unbound
Crea el archivo de configuración:
sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
server:
verbosity: 0
interface: 127.0.0.1
port: 5335
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
harden-glue: yes
harden-dnssec-stripped: yes
use-caps-for-id: no
edns-buffer-size: 1232
prefetch: yes
num-threads: 1
cache-min-ttl: 3600
cache-max-ttl: 86400
sudo systemctl enable --now unbound
En el panel de Pi-hole, ve a Settings > DNS y configura como upstream personalizado 127.0.0.1#5335. Desactiva los demás proveedores.
Por qué algunos navegadores se saltan el bloqueo
## Advertencia
Chrome y otros navegadores basados en Chromium activan DNS-over-HTTPS (DoH) por defecto en muchas configuraciones, y cuando lo hacen dejan de usar el DNS que reparte tu red — cifran la consulta y la mandan directamente a un proveedor como Google o Cloudflare, saltándose Pi-hole por completo. Firefox también soporta DoH, pero respeta el DNS de la red si detecta un resolutor de filtrado de contenido activo; Chrome no hace esa detección automática, así que es el que más sorprende cuando “Pi-hole no bloquea nada” en ese navegador en concreto mientras sí funciona en el resto de dispositivos.
Para que el navegador vuelva a usar Pi-hole, desactiva el DNS seguro a mano en su configuración (chrome://settings/security en Chrome, buscando “DNS seguro”; about:preferences#privacy en Firefox, sección DNS sobre HTTPS) o gestiónalo de forma centralizada por política si administras varios equipos.
Copia de seguridad con Teleporter
Antes de tocar la configuración de gravity o migrar a otro equipo, exporta una copia completa (listas, configuración, DNS local) con Teleporter:
sudo pihole-FTL --teleporter
Genera un archivo .zip en el directorio actual. Para restaurarlo, la vía soportada en Pi-hole v6 es subirlo desde el panel web en Settings > Teleporter, no la línea de comandos.
Si Pi-hole no está bloqueando nada
Antes de sospechar de una lista de bloqueo desactualizada, comprueba en este orden:
- ¿El dispositivo usa realmente Pi-hole como DNS? —
nslookup pi.holedesde el dispositivo problemático; si falla o resuelve contra otra IP, el dispositivo no está usando Pi-hole (revisa DHCP o su configuración manual de DNS). - ¿Es un navegador con DoH activo? — ver la sección anterior; es la causa más habitual cuando solo falla un navegador y no el resto del tráfico del mismo dispositivo.
- ¿Gravity está actualizada? —
pihole -gy revisa que termine sin errores de descarga. - ¿El dominio concreto está en alguna lista? — usa Query Log en el panel o
pihole -q dominio.ejemplo.compara ver si Pi-hole lo reconoce como bloqueado.
Mantener Pi-hole actualizado
Actualiza Pi-hole y sus componentes con un solo comando:
pihole -up
Revisa periódicamente que las listas de bloqueo estén actualizadas y que el sistema operativo tenga los parches de seguridad aplicados.
Alternativa con Docker
Si prefieres contenedores, Pi-hole tiene imagen oficial. Crea un archivo docker-compose.yml (en Pi-hole v6, la contraseña del panel se define con FTLCONF_webserver_api_password; en versiones anteriores de la imagen se usaba la variable WEBPASSWORD):
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- '53:53/tcp'
- '53:53/udp'
- '80:80/tcp'
environment:
TZ: 'Europe/Madrid'
FTLCONF_webserver_api_password: 'tu_password_segura'
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
restart: unless-stopped
docker compose up -d
Resultado
Con Pi-hole funcionando como DNS de tu red, la navegación será más rápida y limpia. Reducirás el consumo de ancho de banda, eliminarás rastreadores y tendrás visibilidad total sobre las consultas DNS que generan tus dispositivos. Si quieres que el filtrado también se aplique fuera de casa, combínalo con una VPN como WireGuard apuntando el DNS del cliente a Pi-hole.
## Nota
✍️ Transparencia: Este artículo ha sido creado con el apoyo de herramientas de inteligencia artificial. Toda la información técnica ha sido revisada y validada por el autor antes de su publicación.