Pi-hole: Bloqueo de anuncios a nivel de red con DNS sinkhole

Publicado por


pi-hole
Bloqueo de anuncios a nivel de red

Pi-hole: Bloqueo de anuncios a nivel de red con DNS sinkhole

Protege todos tus dispositivos sin software cliente mediante un servidor DNS que filtra contenido no deseado

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Pi-hole: Bloqueo de anuncios a nivel de red con DNS sinkhole en el canal GENBYTE:

¿Qué es Pi-hole: Bloqueo de anuncios a nivel de red con DNS sinkhole?

Pi-hole es un DNS sinkhole que actúa como un agujero negro para la publicidad en Internet. Funciona a nivel de red, interceptando las consultas DNS y bloqueando las que apuntan a dominios conocidos de publicidad, rastreadores y malware. A diferencia de los bloqueadores basados en navegador, Pi-hole protege cualquier dispositivo conectado a la red —móviles, smart TVs, consolas, IoT— sin necesidad de instalar software en cada cliente. El proyecto está escrito principalmente en Shell y utiliza dnsmasq como servidor DNS, complementado con FTLDNS (Faster Than Light DNS) para estadísticas y API, y una interfaz web opcional para administración.

Bloquea publicidad y rastreadores en toda la red sin instalar nada en los dispositivos cliente, incluyendo aplicaciones móviles y smart TVs.

Características principales

Instalación automatizada

Instalación en menos de diez minutos mediante script interactivo o comando único curl.

Bloqueo en ubicaciones no navegador

Filtra contenido en aplicaciones móviles, smart TVs y dispositivos IoT donde los bloqueadores de navegador no llegan.

Caché DNS para mayor velocidad

Acelera la navegación cotidiana almacenando en caché las consultas DNS resueltas.

Requisitos mínimos de hardware

Funciona en hardware modesto como Raspberry Pi, pero escala a cientos de millones de consultas en servidores de grado empresarial.

Interfaz de línea de comandos auditable

CLI completa (comando `pihole`) para administración, depuración, gestión de listas, allowlist/denylist y regex.

Panel web responsivo

Dashboard opcional con gráficos, listas principales, registro de consultas filtrable, estadísticas a largo plazo y gestión de contraseña.

Servidor DHCP integrado opcional

Puede actuar como servidor DHCP para asignar automáticamente Pi-hole como DNS a todos los clientes de la red.

Compatibilidad IPv4 e IPv6

Bloquea anuncios en ambos protocolos de forma nativa.

API REST documentada

FTLDNS expone API para estadísticas (dominios bloqueados, consultas, clientes únicos, porcentaje de bloqueo) accesible vía HTTP, curl o CLI.

Software libre y abierto

Código abierto bajo licencia EUPL 1.2, control total de la privacidad sin telemetría obligatoria.

Requisitos del sistema

  • Sistema Linux compatible (Debian, Ubuntu, Fedora, CentOS, Arch, etc.)
  • Acceso root o sudo para instalación
  • Puerto 53 (UDP/TCP) disponible para DNS
  • Puerto 80/443 disponible si se usa interfaz web
  • Conexión a Internet para descargar listas de bloqueo y actualizaciones
  • Para Docker: Docker Engine y Docker Compose instalados

Instalación con Docker Compose

Instalación automatizada (método oficial)

Ejecuta el script oficial que guía la configuración interactiva. Revisa el script antes de ejecutarlo si lo prefieres.

curl -sSL https://install.pi-hole.net | bash

Instalación clonando el repositorio (revisión de código previa)

Clona el repositorio y ejecuta el instalador desde la copia local para auditar el código antes de instalar.

git clone –depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
cd "Pi-hole/automated install/"
sudo bash basic-install.sh

Descarga manual del instalador

Descarga el script, revísalo y ejecútalo manualmente.

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh

Despliegue con Docker (imagen oficial)

El proyecto recomienda usar las imágenes oficiales del repositorio docker-pi-hole. Consulta su documentación para docker-compose.yml, variables de entorno, volúmenes y puertos específicos.

# Consulta https://github.com/pi-hole/docker-pi-hole para docker-compose.yml y configuración completa

Acceder al proyecto

Interfaz web de administración

Accede al dashboard en http://pi.hole/admin/ (si Pi-hole es tu servidor DNS) o en http://<IP_DE_TU_PI_HOLE>/admin/. Requiere contraseña definida durante la instalación.

API REST (FTLDNS)

Documentación interactiva en http://pi.hole/api/docs. Ejemplo curl: curl –connect-timeout 2 -ks "https://pi.hole/api/stats/summary" -H "Accept: application/json". También accesible vía CLI: pihole api stats/summary.

Línea de comandos

Ejecuta `pihole` en la terminal del host donde está instalado para acceder a todas las funciones de administración, depuración y consulta.

Casos de uso

  • Bloqueo de publicidad y rastreadores en toda la red doméstica o de oficina
  • Protección de dispositivos sin capacidad de instalar bloqueadores (smart TVs, consolas, IoT)
  • Mejora de la velocidad de navegación mediante caché DNS local
  • Control parental básico bloqueando dominios de contenido para adultos mediante listas adicionales
  • Reducción de ancho de banda y consumo de datos al evitar descarga de anuncios
  • Monitoreo de consultas DNS y detección de dispositivos comprometidos o telemetría excesiva
  • Servidor DHCP centralizado con asignación automática de Pi-hole como DNS

Configuración avanzada

Gestión de listas de bloqueo (Gravity)

Actualiza las listas de dominios bloqueados manualmente o programado. El comando `pihole -g` (o `pihole updateGravity`) descarga y compila las listas configuradas en /etc/pi-hole/adlists.list.

pihole -g

Allowlist, Denylist y Regex

Añade dominios a allowlist (permitidos) o denylist (bloqueados) y usa expresiones regulares para bloqueos por patrón. Gestionable vía CLI (`pihole -w`, `pihole -b`, `pihole –regex`) o panel web.

pihole -w ejemplo.com
pihole -b rastreo.ejemplo.com
pihole –regex '^ad\.'

Configuración de DNS upstream

Define servidores DNS upstream (Google, Cloudflare, Quad9, personalizados) en /etc/pi-hole/setupVars.conf o mediante el instalador. Soporta DNS over HTTPS (DoH) mediante cloudflared u otros proxies configurados externamente.

# Editar /etc/pi-hole/setupVars.conf
PIHOLE_DNS_1=1.1.1.1
PIHOLE_DNS_2=9.9.9.9

Servidor DHCP integrado

Activa el servidor DHCP en Pi-hole para que asigne IPs y configure automáticamente Pi-hole como DNS. Requiere desactivar DHCP en el router. Configurable en /etc/pi-hole/dhcp.conf o panel web.

# Ejemplo básico en /etc/pi-hole/dhcp.conf
dhcp-range=192.168.1.100,192.168.1.200,24h
dhcp-option=6,192.168.1.50 # IP de Pi-hole como DNS

API para integraciones propias

Consume la API de FTLDNS para mostrar estadísticas en paneles propios, Home Assistant, Grafana, etc. Endpoints principales: /api/stats/summary, /api/stats/top_clients, /api/stats/top_domains, /api/queries.

curl -ks "https://pi.hole/api/stats/summary" -H "Accept: application/json"

Gestión y mantenimiento

Actualización de Pi-hole (core, web, FTL)

Ejecuta el comando de actualización oficial que actualiza todos los componentes (core, interfaz web, FTLDNS) y listas de bloqueo.

pihole -up

Actualización solo de listas de bloqueo (Gravity)

Fuerza la descarga y compilación de las listas de bloqueo sin actualizar el software.

pihole -g

Diagnóstico y depuración

Genera un token de depuración para compartir en foros de soporte. Incluye configuración, logs y estado del sistema (sin contraseñas).

pihole -d

Visualización de log en tiempo real

Muestra las consultas DNS en vivo con indicación de bloqueadas/permitidas. Útil para depurar falsos positivos.

pihole -t

Copia de seguridad de configuración

Los archivos clave están en /etc/pi-hole/: setupVars.conf, adlists.list, regex.list, local.list, dhcp.conf. Haz backup de este directorio.

tar -czf pihole-backup-$(date +%F).tar.gz /etc/pi-hole/

Reinicio de servicios

Reinicia los servicios DNS (dnsmasq/FTL) y web (lighttpd) tras cambios de configuración manuales.

sudo systemctl restart pihole-FTL
sudo systemctl restart lighttpd

Stack técnico

  • Shell (scripts de instalación y CLI principal)
  • dnsmasq (servidor DNS ligero y DHCP opcional)
  • FTLDNS (daemon C para estadísticas, API y motor de bloqueo rápido)
  • lighttpd (servidor web para interfaz de administración)
  • PHP (backend de la interfaz web)
  • SQLite (base de datos para consultas y estadísticas a largo plazo)
  • JavaScript/Chart.js (frontend del dashboard)
  • Docker (imagen oficial multi-arquitectura en docker-pi-hole)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *