Pi-hole: bloquea publicidad en toda tu red

Pi-hole a fondo: por qué el DoH del navegador lo esquiva, DNS local para tu LAN, Teleporter y qué revisar si no bloquea.

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:

  1. Interfaz de red: selecciona la interfaz conectada a tu red local (por ejemplo eth0).
  2. Proveedor DNS upstream: elige uno temporal como Google o Cloudflare. Más adelante puedes cambiarlo.
  3. Listas de bloqueo: acepta las listas por defecto. Después podrás añadir más.
  4. Interfaz web: acepta instalar el panel de administración.
  5. 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.
$ pihole-dashboard.webp
Dashboard de Pi-hole mostrando el total de consultas DNS, el porcentaje bloqueado y el gráfico de actividad
Panel de administración de Pi-hole: consultas totales, bloqueadas y porcentaje de filtrado.

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:

  1. ¿El dispositivo usa realmente Pi-hole como DNS?nslookup pi.hole desde 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).
  2. ¿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.
  3. ¿Gravity está actualizada?pihole -g y revisa que termine sin errores de descarga.
  4. ¿El dominio concreto está en alguna lista? — usa Query Log en el panel o pihole -q dominio.ejemplo.com para 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.

$ curl tengoping.com/rss.xml | subscribe [suscribirse por RSS →]