📄 Cómo protejo mi red doméstica con ControlD, ctrld y Raspberry Pi

🇬🇧 This article is also available in English → Read in English


                        🧩 1. Introducción

En este artículo comparto cómo implementé una solución de filtrado y cifrado DNS para proteger mi red doméstica usando una Raspberry Pi, el cliente ctrld y el servicio ControlD. Esta configuración no solo me da privacidad y velocidad, sino también control total sobre lo que se consulta desde cualquier dispositivo conectado a mi red local.

Lo más valioso para mí es que todas las consultas DNS se hacen por el puerto 53 tradicional, por lo que no necesito modificar la configuración de los dispositivos. La Raspberry Pi recibe esas consultas y las transforma automáticamente en consultas DoH (DNS over HTTPS) usando mi perfil personalizado en ControlD.


🔹 2. Contexto

Esta solución surgió a partir de mi necesidad de tener un sistema DNS confiable, rápido y seguro para toda mi red LAN, sin depender de resolvers públicos ni configurar manualmente cada dispositivo.

En mi red conviven dispositivos modernos y otros que no soportan DoH de forma nativa, como dispositivos IoT, altavoces Echo, Chromecast, Fire TV Stick 4K Max y televisores Samsung. Por eso, necesitaba una solución que aceptara consultas DNS tradicionales por puerto 53 y las transformara en DoH de manera centralizada y transparente.

Usé como base la documentación oficial de ControlD y el cliente ctrld, además del acompañamiento técnico que fui desarrollando en mis sesiones con ChatGPT para integrar correctamente todos los componentes: Raspberry Pi, perfil personalizado, filtrado, salida por HTTPS y scripts de monitoreo.


🔧 3. Explicación técnica (paso a paso)

La solución se basa en usar una Raspberry Pi como servidor DNS interno, ejecutando el cliente ctrld, que redirige todas las consultas locales a un endpoint DoH personalizado de ControlD.

El sistema operativo usado en la Raspberry Pi es DietPi, una distribución optimizada, ligera y diseñada para alto rendimiento en dispositivos ARM.

Aquí están los pasos principales que seguí:

  1. Instalé ctrld en la Raspberry Pi, configurándolo para que escuche en 0.0.0.0:53, aceptando consultas DNS de todos los dispositivos de la red LAN.

  2. En la consola de ControlD, generé un perfil personalizado con reglas de filtrado, geoexit y configuración de logs.

  3. Usé el archivo ctrld.toml para definir la IP local de escucha, los servidores DoH de ControlD y un tag identificador del cliente.

  4. En el router configuré el servidor DHCP para distribuir como DNS principal la IP de la Raspberry Pi (192.168.88.10) y como secundario uno de los IPs públicos de ControlD.

  5. Validé que los dispositivos IoT, Fire TV, Echo y Smart TVs envían sus consultas a la Pi, y esta las reenvía por HTTPS usando DoH con todas las reglas del perfil aplicadas.

  6. Implementé scripts personalizados de verificación junto a Healthchecks.io, para recibir alertas proactivas en caso de fallo del cliente ctrld o problemas de resolución DNS.

  7. Además, integré el cliente msmtp para el envío automatizado de correos electrónicos, lo que me permite recibir notificaciones de eventos críticos, sin depender exclusivamente de los logs del sistema.


💡 4. Aplicación práctica / recomendación

Esta solución es ideal para quienes desean tener control total sobre la resolución DNS en su red local, especialmente si cuentan con dispositivos que no permiten configurar DoH directamente, como altavoces inteligentes, Smart TVs o equipos IoT.

También es útil para quienes buscan una alternativa más avanzada que usar simples DNS públicos como Google (8.8.8.8) o Cloudflare (1.1.1.1), y quieren integrar monitoreo, redundancia y perfiles de filtrado personalizables.

A diferencia de herramientas como Pi-hole o AdGuard Home, que solo actúan como bloqueadores de anuncios o resolvers DNS locales, ControlD permite crear un sistema robusto, cifrado y centralizado, con visibilidad completa y reglas específicas aplicables desde la nube. Es una solución más segura, flexible y escalable.

Además, el uso de DoH (DNS over HTTPS) significa que las consultas DNS viajan cifradas por Internet, lo que protege tu red contra inspección o monitoreo externo, incluyendo bots, malware y rastreadores que interceptan peticiones DNS no cifradas.

No necesitas conocimientos avanzados de programación: basta con tener una Raspberry Pi, acceso al router y disposición para probar una arquitectura estable, auditable y mucho más privada que las soluciones predeterminadas.

Con herramientas como ctrld, msmtp y Healthchecks.io, puedes construir un sistema que no solo resuelve consultas DNS, sino que se audita y protege automáticamente.


🔚 5. Cierre personal

Esta configuración me ha permitido mejorar significativamente la privacidad y estabilidad de mi red doméstica, sin depender de soluciones comerciales cerradas ni complicadas.

Es una arquitectura que me ha dado mayor control sobre mi privacidad digital, y que se comporta como una versión simplificada pero funcional de un sistema enterprise, con cifrado, filtrado, visibilidad y monitoreo activos.

El proyecto sigue evolucionando: constantemente ajusto y optimizo scripts, alertas y flujos de tráfico con nuevas herramientas que me permiten mantener todo bajo control de forma automática.

💬 ¿Te interesaría replicarla? ¿Ya usas alguna solución similar? Me encantaría leer tu experiencia o responder tus dudas.