Pi-hole y sinkholing DNS:
bloquear rastreadores en toda la casa
Redes y privacidad | unfantasmaenelsistema.com
Bloquear anuncios y rastreadores en el navegador está resuelto desde hace años con una extensión. El problema es todo lo demás: la smart TV que llama a servidores de telemetría, las apps del móvil que envían datos a decenas de dominios de publicidad, el frigorífico conectado, la consola, el portátil del trabajo. Nada de eso admite una extensión. La solución de red es interceptar el paso común a todos ellos: la resolución de nombres.
Un sinkhole DNS es un servidor DNS propio que responde con una dirección nula a los dominios de una lista negra y reenvía el resto con normalidad. Puesto como DNS de toda la casa, corta la conexión con miles de dominios de rastreo antes de que se abra, para cualquier dispositivo. Pi-hole es la implementación más conocida. Este artículo explica cómo funciona, cómo montarlo bien —incluido el DNS cifrado por detrás— y, sobre todo, qué no hace.
Qué aprenderás en este artículo
Cómo funciona un sinkhole DNS: responder 0.0.0.0 (o NXDOMAIN) a dominios de una lista negra · Pi-hole frente a AdGuard Home y Blocky, y dónde instalarlo (Raspberry Pi o contenedor) · Listas de bloqueo: cuáles usar, cómo evitar y resolver falsos positivos · Poner un resolutor cifrado (DoH/DoT) o recursivo (unbound) como DNS ascendente del Pi-hole · Forzar que todos los dispositivos lo usen vía DHCP, y por qué eso no basta · Los límites reales: DNS embebido en apps, DoH del navegador, CNAME cloaking, IP fijas
1. Qué es un sinkhole DNS
Cuando un dispositivo quiere conectar con ads.ejemplo.com, primero pregunta a su servidor DNS qué dirección IP le corresponde. Un sinkhole intercepta esa pregunta: si el dominio está en su lista de bloqueo, responde con 0.0.0.0 o con NXDOMAIN («no existe»), y el dispositivo no llega a abrir la conexión. Si el dominio no está en la lista, el sinkhole reenvía la consulta a un DNS ascendente y devuelve la respuesta real.
La gracia es que el DNS es el punto común: todos los dispositivos lo usan, hagan lo que hagan. Bloquear en esa capa cubre la tele, el móvil, los electrodomésticos y los invitados sin tocar ninguno. La contrapartida es que el bloqueo es por dominio entero: si un dominio sirve a la vez publicidad y contenido que quieres, no se puede filtrar solo una parte (para eso siguen haciendo falta los bloqueadores de navegador, que trabajan a nivel de URL y de elemento de la página).
Sinkhole DNS y bloqueador de navegador se complementan
El sinkhole cubre todos los dispositivos pero solo bloquea dominios completos. El bloqueador del navegador (uBlock Origin y similares) es más quirúrgico y bloquea elementos cosméticos y scripts de páginas concretas, pero solo en ese navegador. Lo razonable es tener los dos
2. Pi-hole y sus alternativas
| Opción | Puntos fuertes | A tener en cuenta |
|---|---|---|
| Pi-hole | El más documentado; panel claro; enorme comunidad; add-ons (servidor DHCP integrado) | DoH/DoT ascendente requiere un componente extra (cloudflared, unbound) |
| AdGuard Home | Un solo binario; DoH/DoT/DNSCrypt ascendente y de servidor incluidos; filtros de tipo navegador | Panel algo menos granular en estadísticas históricas |
| Blocky | Ligero, pensado para Docker/Kubernetes; configuración en YAML; rápido | Sin interfaz propia rica; se combina con Grafana para las métricas |
| Technitium DNS | Servidor DNS completo (autoritativo + recursivo) con bloqueo; muy flexible | Más funcionalidad de la que necesita un uso doméstico simple |
Para la mayoría de casas, Pi-hole o AdGuard Home son la elección correcta; el resto de este artículo usa Pi-hole como referencia, pero los conceptos valen para todos.
3. Dónde y cómo instalarlo
El sinkhole tiene que estar siempre encendido: si se cae, se queda toda la casa sin DNS. Las opciones habituales son una Raspberry Pi dedicada, un contenedor en un NAS o mini-PC que ya tengas encendido, o una máquina virtual pequeña. Pide muy pocos recursos (512 MB de RAM sobran).
# --- Opcion A: instalador oficial en una Raspberry Pi / VM Debian ---
curl -sSL https://install.pi-hole.net | bash
# asigna al equipo una IP FIJA durante el asistente
# --- Opcion B: Docker Compose ---
services:
pihole:
image: pihole/pihole:latest
ports: ['53:53/tcp', '53:53/udp', '80:80/tcp']
environment:
TZ: 'Europe/Madrid'
FTLCONF_webserver_api_password: 'usa-una-clave-larga'
FTLCONF_dns_upstreams: '127.0.0.1#5335' # unbound local (ver seccion 5)
volumes: ['./etc-pihole:/etc/pihole']
restart: unless-stopped- Dale al Pi-hole una IP fija (reserva DHCP o configuración estática). Esa IP será el DNS de toda la casa y no puede cambiar
- Cambia la contraseña del panel por una larga y no lo expongas a internet bajo ningún concepto (ni el panel ni el puerto 53). Un DNS abierto a internet se usa para ataques de amplificación
- Si quieres alta disponibilidad, monta un segundo Pi-hole y anúncialo como DNS secundario; ojo: los clientes reparten consultas entre primario y secundario, no lo usan solo como reserva
4. Listas de bloqueo y falsos positivos
Pi-hole viene con una lista por defecto razonable (StevenBlack). Se pueden añadir más, pero más no es mejor: listas enormes o agresivas multiplican los falsos positivos y aportan poco sobre una buena lista base. Empieza conservador y amplía solo si notas que algo se cuela.
- Listas recomendables: la de Hagezi en su nivel «normal» o «pro», OISD, la propia StevenBlack. Todas se mantienen y documentan sus criterios
- Evita agregadores gigantes de «todo lo que encuentres» y listas sin mantenimiento: rompen servicios legítimos
- Falsos positivos: cuando algo deje de funcionar (el pago de una tienda, el inicio de sesión de una app), mira la pestaña de consultas del panel, localiza el dominio bloqueado y añádelo a la allowlist. Es normal tener una lista blanca de 10-20 dominios
- Grupos: Pi-hole permite aplicar listas distintas por cliente. Útil para dejar la consola o la tele de los niños con un filtro más estricto y el resto normal
Quien administra el DNS de la casa, responde de que la casa navegue
Cuando un servicio falla, el resto de la familia no va a sospechar del Pi-hole: van a decir que «internet no funciona». Ten a mano cómo desactivarlo rápido (apuntar el router a un DNS normal), avisa de que existe, y no metas listas experimentales el día antes de irte de viaje
5. DNS ascendente: cífralo o hazlo recursivo
Por defecto, el Pi-hole reenvía lo que no bloquea a un DNS público (el de tu operador, Google, Cloudflare…) en claro por el puerto 53. Eso significa que tu operador —o quien esté en el camino— sigue viendo todos los dominios que visitas. Has bloqueado rastreadores pero no has ganado privacidad de resolución. Hay dos formas de cerrar ese hueco:
| Opción | Cómo | Ventaja | Inconveniente |
|---|---|---|---|
| Reenviar por DNS cifrado (DoH/DoT) | cloudflared o dnscrypt-proxy local como upstream del Pi-hole | Sencillo; oculta tus consultas al operador | Confías en el resolutor elegido (Cloudflare, Quad9…) |
| Resolver tú mismo (recursivo) | unbound local como upstream (127.0.0.1#5335) | No dependes de ningún resolutor; nadie ve el conjunto de tus consultas | Primeras consultas algo más lentas; un actor en ruta ve consultas sueltas a los autoritativos |
| Ambas | unbound recursivo + DoT hacia la raíz/Quad9 según config | Máxima autonomía con cifrado | Más piezas que mantener |
# --- unbound como recursivo local para Pi-hole (Debian) ---
apt install unbound
# /etc/unbound/unbound.conf.d/pi-hole.conf
server:
interface: 127.0.0.1
port: 5335
do-ip6: no
harden-dnssec-stripped: yes # valida DNSSEC
qname-minimisation: yes # revela lo minimo a cada autoritativo
prefetch: yes
# comprobar:
dig @127.0.0.1 -p 5335 unfantasmaenelsistema.com +dnssecDespués, en Pi-hole se desmarcan todos los DNS ascendentes públicos y se pone como «Custom upstream» 127.0.0.1#5335. A partir de ahí, tu casa bloquea rastreadores y resuelve sin filtrar sus consultas por el DNS del operador. Enlaza con nuestro artículo de DNS cifrado para el detalle de DoH/DoT.
6. Forzar que todos lo usen
De poco sirve el sinkhole si los dispositivos usan otro DNS. La forma correcta de imponerlo es por DHCP: que el router (o el propio Pi-hole como servidor DHCP) entregue la IP del Pi-hole como único servidor DNS a toda la red. Pasos y matices:
- En el router: cambia el «DNS primario/secundario» que se anuncia por DHCP a la IP del Pi-hole. Si el router no deja quitar el secundario, usa el Pi-hole como servidor DHCP y apaga el del router
- No pongas un segundo DNS que sea público (8.8.8.8): los dispositivos lo usarán a veces y se saltarán el filtro de forma aleatoria
- Intercepta el puerto 53 saliente: crea una regla en el router que redirija (o bloquee) todo el tráfico UDP/TCP 53 que no vaya al Pi-hole. Así, un dispositivo con 8.8.8.8 escrito a fuego (muchas smart TV, Chromecast) acaba resolviendo por el Pi-hole igualmente
- Reinicia los dispositivos o renueva sus concesiones DHCP para que cojan el cambio
7. Lo que un sinkhole DNS no bloquea
Es importante tener expectativas realistas. El bloqueo por DNS tiene agujeros por diseño:
| Técnica que lo evita | Por qué funciona | Qué puedes hacer |
|---|---|---|
| DoH en el navegador | Chrome/Firefox pueden resolver por su cuenta vía HTTPS y saltarse el DNS de la red | Desactivar «DNS seguro» en los navegadores (o por política); apuntarlos al Pi-hole si soporta DoH |
| DNS embebido en apps y dispositivos | Apps que llevan su resolutor DoH/DoQ y dispositivos con IP fijas escritas a fuego | Redirección forzada del puerto 53 en el router; bloquear DoH conocido; aislar el IoT en su VLAN |
| CNAME cloaking | El rastreador se sirve desde un subdominio del propio sitio que apunta (CNAME) al dominio de tracking | Pi-hole no lo resuelve de serie; AdGuard Home y algunas listas sí lo tratan |
| Publicidad servida desde el dominio principal | YouTube, redes sociales: el anuncio viene del mismo dominio que el contenido | No se puede bloquear por DNS sin romper el servicio; ahí actúa el bloqueador de navegador |
| Conexiones por IP directa | Malware o telemetría que no consulta DNS | Fuera del alcance de un sinkhole; es trabajo del firewall y del IDS |
El sinkhole DNS reduce mucho el ruido de rastreo y telemetría con un esfuerzo bajo, pero no es un cortafuegos ni anonimato. Combínalo con navegador endurecido, segmentación del IoT y, si te importa la privacidad de resolución, DNS cifrado ascendente.
8. Mantenimiento y métricas
- Pi-hole actualiza las listas solo (semanalmente); puedes forzarlo con pihole -g. Actualiza el software con pihole -up
- Revisa el panel de vez en cuando: porcentaje de consultas bloqueadas (un 10-25 % es normal), clientes que más consultan, dominios más bloqueados. Picos raros de un dispositivo suelen indicar telemetría agresiva o algo infectado
- Vigila el tamaño de la base de datos de consultas y ajusta la retención si el disco es pequeño (una microSD agradece bajarla a 30-90 días)
- Haz una copia de la configuración (Teleporter, en Ajustes) después de dejar la allowlist a tu gusto
Conclusión
Un sinkhole DNS como Pi-hole es de las mejores relaciones esfuerzo/resultado en privacidad doméstica: una hora de montaje y toda la casa —tele, móviles, IoT, invitados— deja de hablar con miles de dominios de rastreo y telemetría. La clave para que funcione y no dé guerra es conservadora: una IP fija, listas de bloqueo bien mantenidas y no exageradas, una allowlist para los falsos positivos y forzar el uso por DHCP más redirección del puerto 53.
Para cerrar el círculo, ponle detrás un resolutor cifrado o recursivo (unbound), y asume sus límites: no bloquea el DoH del navegador, ni el DNS embebido en apps, ni la publicidad servida desde el dominio principal, ni las conexiones por IP. Es una capa excelente, no la única.
Referencias
Documentación oficial de Pi-hole (docs.pi-hole.net) y de AdGuard Home · Guía de Pi-hole + unbound para resolución recursiva (docs.pi-hole.net/guides/dns/unbound) · Listas de bloqueo: Hagezi (github.com/hagezi/dns-blocklists), OISD (oisd.nl), StevenBlack · r/pihole y el foro oficial para diagnosticar falsos positivos concretos · Nuestros artículos sobre DNS cifrado, VLAN y segmentación de red, y huella del navegador
unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

