Pi-hole es un sumidero DNS que bloquea dominios de publicidad y seguimiento a nivel de red antes de que lleguen a tus dispositivos. En lugar de instalar una extensión de navegador en cada dispositivo, Pi-hole se ejecuta en un único servidor — una Raspberry Pi, una máquina virtual Linux o un contenedor Docker — e intercepta las consultas DNS de dominios publicitarios conocidos, devolviendo una respuesta vacía. Cada teléfono, tableta, televisor inteligente, consola de juegos y dispositivo IoT en tu red se beneficia automáticamente. Esta guía cubre la instalación, configuración del router, gestión de listas de bloqueo, DNS local y ajuste del rendimiento de Pi-hole en un entorno doméstico o de pequeña oficina.
Requisitos Previos
- Una Raspberry Pi (cualquier modelo 2+), una máquina Linux de repuesto o un servidor/VM Linux existente
- Ubuntu 22.04/24.04, Debian 11/12 o Raspberry Pi OS (64 bits recomendado)
- Dirección IP estática asignada al host de Pi-hole (mediante reserva DHCP del router o configuración manual)
- Acceso al panel de administración del router para cambiar la configuración DNS
- Familiaridad básica con la línea de comandos de Linux
curlinstalado (sudo apt install curl)
Instalación de Pi-hole
La forma más rápida de instalar Pi-hole en un host Linux físico es el instalador oficial de una línea:
curl -sSL https://install.pi-hole.net | bash
El asistente interactivo te pide que confirmes tu interfaz de red, selecciones un proveedor DNS upstream (Cloudflare 1.1.1.1, Google 8.8.8.8 u otros), elijas si instalar la interfaz web de administración y establezcas una contraseña de administrador. Acepta los valores predeterminados para la mayoría de las opciones.
Tras la instalación, anota la dirección IP de tu Pi-hole. El instalador la muestra al final:
Pi-hole installation complete!
Admin console: http://192.168.1.50/admin
Instalación de Pi-hole con Docker
Si prefieres contenedores, usa la imagen oficial pihole/pihole con Docker Compose:
# docker-compose.yml
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: "America/Mexico_City"
WEBPASSWORD: "tu_contraseña_segura"
volumes:
- ./etc-pihole:/etc/pihole
- ./etc-dnsmasq.d:/etc/dnsmasq.d
restart: unless-stopped
docker compose up -d
El enfoque con Docker facilita las actualizaciones (docker compose pull && docker compose up -d) y mantiene Pi-hole aislado del sistema operativo host. Un inconveniente: el puerto 53 puede entrar en conflicto si el host ejecuta systemd-resolved. Desactívalo primero:
sudo systemctl disable --now systemd-resolved
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
Configurar el Router para Usar Pi-hole
Pi-hole es inútil si los dispositivos no envían consultas DNS a él. La forma más limpia es configurar el servidor DHCP de tu router para anunciar la IP de Pi-hole como servidor DNS para toda la red.
- Inicia sesión en el panel de administración de tu router (normalmente
192.168.1.1o192.168.0.1). - Busca Configuración DHCP o Configuración LAN.
- Establece el DNS Primario como la IP estática de tu Pi-hole (por ejemplo,
192.168.1.50). - Opcionalmente, establece el DNS Secundario como
1.1.1.1como respaldo (los dispositivos evitarán Pi-hole si no está disponible — déjalo en blanco si quieres bloqueo estricto). - Guarda y reinicia el servicio DHCP (los dispositivos conectados recogerán el nuevo DNS en su próxima renovación de arrendamiento; fuerza la renovación reconectándote).
Verifica que el bloqueo funciona desde cualquier dispositivo:
nslookup doubleclick.net 192.168.1.50
# Debe devolver 0.0.0.0 (bloqueado)
Gestión de Listas de Bloqueo con Gravity
La base de datos de listas de bloqueo de Pi-hole se llama gravity. La instalación predeterminada incluye la lista de hosts de StevenBlack (~180,000 dominios). Ampliarla mejora significativamente la cobertura del bloqueo.
Añadir Listas de Bloqueo desde el Panel de Administración
- Abre
http://TU_IP_PIHOLE/admine inicia sesión. - Ve a Adlists (en la sección de Gestión de Grupos).
- Pega las URLs de las listas de bloqueo y haz clic en Añadir. Listas recomendadas de firebog.net:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
https://v.firebog.net/hosts/Easylist.txt
https://v.firebog.net/hosts/Easyprivacy.txt
https://v.firebog.net/hosts/AdguardDNS.txt
- Tras añadir las listas, actualiza gravity para descargarlas y compilarlas:
pihole -g
Una configuración típica con 5-6 listas bloquea entre 500,000 y 1,000,000 dominios. Evita añadir demasiadas listas superpuestas — los rendimientos decrecientes aparecen rápidamente por encima de 1.5 millones de entradas.
Programar Actualizaciones Automáticas
Añade una tarea cron semanal para mantener gravity actualizado:
sudo crontab -e
# Añade esta línea:
0 3 * * 0 pihole -g > /var/log/pihole_gravity.log 2>&1
Pi-hole vs. Alternativas
| Función | Pi-hole | AdGuard Home | NextDNS | Extensión de Navegador |
|---|---|---|---|---|
| Cobertura de red completa | Sí | Sí | Sí | No (solo navegador) |
| Auto-alojado | Sí | Sí | No (nube) | N/A |
| Bloqueo IoT/TV | Sí | Sí | Sí | No |
| Complejidad de configuración | Media | Media | Baja | Muy baja |
| DNS local personalizado | Sí | Sí | Limitado | No |
| Soporte DNSSEC | Sí | Sí | Sí | No |
| Bloqueo por regex | No | Sí | Limitado | Depende |
| Costo | Gratis | Gratis | Gratis/pago | Gratis/pago |
AdGuard Home es una alternativa valiosa con bloqueo basado en regex y una interfaz más moderna. NextDNS es excelente si deseas cero mantenimiento de servidor. Pi-hole gana para configuraciones auto-alojadas con control total.
Escenario Real: Homelab con Más de 30 Dispositivos
Gestionas una red doméstica con televisores inteligentes, teléfonos, tabletas, varios servidores Linux y dispositivos IoT como bombillas inteligentes y cámaras. Antes de Pi-hole, los registros DNS de tu router muestran tráfico constante hacia googleadservices.com, doubleclick.net y endpoints de telemetría del fabricante de tu televisor.
Después de desplegar Pi-hole en una Raspberry Pi 4 con IP estática 192.168.1.50:
- El DHCP de tu router anuncia
192.168.1.50como DNS. - Cada dispositivo comienza automáticamente a usar Pi-hole sin reconfiguración.
- El panel muestra que el 25-40% de todas las consultas DNS son bloqueadas — principalmente anuncios y telemetría.
- Añades entradas DNS locales para que
nas.homeresuelva la IP de tu NAS yplex.homeapunte a tu servidor multimedia. - Tu televisor inteligente deja de comunicarse con servidores de análisis.
El registro de consultas de Pi-hole te permite auditar exactamente qué dominios consulta cada dispositivo, lo cual es invaluable para detectar tráfico de red inesperado de dispositivos IoT.
DNS Local y Registros CNAME
Una de las funciones más infrautilizadas de Pi-hole es actuar como resolvedor DNS local para nombres de host del homelab. Navega a Local DNS en el panel de administración:
- Registros DNS — mapea nombres de host a IPs (por ejemplo,
nas.home → 192.168.1.100) - Registros CNAME — crea alias (por ejemplo,
archivos.home → nas.home)
Esto te permite acceder a los servicios por nombre en lugar de dirección IP, lo cual es especialmente útil cuando las direcciones IP cambian.
Errores Comunes y Casos Especiales
Pi-hole cae y el internet deja de funcionar. Esto ocurre si configuras Pi-hole como el único DNS y falla o el host se reinicia. Soluciones: configura una segunda instancia de Pi-hole, o configura un DNS de respaldo en tu router. Para entornos críticos, ejecuta dos instancias de Pi-hole.
Los anuncios HTTPS no se bloquean. Pi-hole solo gestiona DNS. No puede inspeccionar el tráfico HTTPS ni bloquear anuncios servidos desde el mismo dominio que el contenido (como los anuncios de YouTube, que usan subdominios de youtube.com). Para esos, sigue necesitando una extensión de navegador como uBlock Origin.
Los clientes ignoran la configuración DNS. Algunos dispositivos (Chromecast, Google Home) tienen codificado el DNS de Google 8.8.8.8. Puedes interceptarlos con una regla de firewall:
# Redirigir todo el tráfico DNS a Pi-hole (requiere iptables en router/firewall)
iptables -t nat -A PREROUTING -i br0 -p udp --dport 53 ! -d 192.168.1.50 -j DNAT --to 192.168.1.50:53
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 ! -d 192.168.1.50 -j DNAT --to 192.168.1.50:53
La actualización de gravity falla tras actualizar el SO. Después de actualizar el sistema operativo host, ejecuta pihole -r (reparar) para restaurar los archivos de configuración de Pi-hole.
El contenedor Docker pierde la configuración al reiniciar. Siempre monta /etc/pihole y /etc/dnsmasq.d como volúmenes — nunca confíes en el sistema de archivos del contenedor para datos persistentes.
Resolución de Problemas Comunes
Los anuncios siguen apareciendo. Comprueba: (1) ¿El dispositivo usa realmente la IP de Pi-hole como DNS? Ejecuta nslookup google.com y mira la línea Server:. (2) ¿El dispositivo tenía una respuesta DNS en caché? Vacía la caché DNS del dispositivo. (3) ¿El anuncio se sirve desde el mismo dominio que el contenido?
El panel de Pi-hole devuelve 404. El servidor web lighttpd puede no estar ejecutándose. Reinícialo: sudo systemctl restart lighttpd.
La actualización de gravity falla con errores de certificado. Los certificados CA de tu host pueden estar desactualizados. Solución: sudo apt update && sudo apt install ca-certificates.
Alta latencia en consultas. Pi-hole añade ~1ms de latencia. Si ves mucho más, verifica que el caché de consultas esté habilitado (ya está habilitado por defecto) y que tu proveedor DNS upstream sea responsivo.
Comprobación del estado de Pi-hole:
pihole status
pihole -c # estadísticas en tiempo real
pihole tail # registro de consultas en vivo
pihole -q ejemplo.com # probar si un dominio está bloqueado
Resumen
- Pi-hole es un sumidero DNS que bloquea anuncios y rastreadores para todos los dispositivos de tu red sin instalar software en cada dispositivo individualmente
- Instálalo con el instalador de una línea en cualquier host Linux Debian/Ubuntu, o despliégalo mediante Docker Compose
- Asigna una IP estática al host de Pi-hole y configura el DHCP de tu router para anunciarla como DNS
- Amplía la cobertura añadiendo listas de bloqueo seleccionadas de firebog.net y ejecutando
pihole -gpara actualizar gravity - Usa la función DNS local de Pi-hole para dar nombres memorables a los servicios del homelab
- Pi-hole no puede bloquear anuncios HTTPS servidos desde el mismo dominio que el contenido (YouTube); combínalo con uBlock Origin en tu navegador para cobertura total
- Para redundancia, ejecuta una segunda instancia de Pi-hole o configura un DNS de respaldo para que el acceso a internet sobreviva a una caída de Pi-hole