
Proxy DNS simple y rápido con funciones no tan simples. Enfocado en reenvío DNS enrutado, filtrado y control parental.
Un proxy DNS que te da control real sobre tu red doméstica.
Pasé años como consultor en la "arena" de redes y seguridad de "gente grande". La seguridad DNS era/es mi trabajo diario, pero también un pasatiempo favorito para trastear. Como ahora tengo hijos y necesito ser un padre responsable, me tomé la tarea de filtrar el gran y malvado internet para ellos. Así que construí sdproxy (Simple DNS Proxy). Trae protecciones/métodos/precisión de nivel empresarial/gente grande al nivel de la red doméstica (más o menos).
El proxy está escrito en Go y compila a un binario ligero para routers baratos. NO hay suscripciones en la nube ni cuotas mensuales. Habla todos los sabores de DNS e incluye control de admisión adaptativo para mantenerse estable. Es simplemente precisión ligera (más o menos), maliciosa, de ingeniería neerlandesa para la sala de estar. Solo tú, un ejecutable y un archivo yaml.
Y recuerda... ¡Siempre es DNS!
Nota: El full_reference_config.yaml siempre está más actualizado que este README. En caso de duda, consúltalo allí.
DNS es la guía telefónica de internet - cada dispositivo en tu red busca un nombre antes de conectarse a cualquier lugar.
sdproxy se sitúa en medio de eso, en tu router, y te permite decidir qué sucede después: almacenarlo en caché, bloquearlo, enrutarlo a un resolver diferente, aplicar modelos avanzados de seguridad ML o imponer límites de tiempo por hijo. Sin suscripción en la nube, sin cuota mensual, sin servicio externo que se caiga.
Está escrito en Go, compila a un único binario y es lo suficientemente ligero para ejecutarse en routers domésticos baratos (OpenWrt en un TP-Link, GL.iNet o NetGear, pfSense, OPNsense o simplemente una caja Linux normal).
Consulta las ventajas clave frente a alternativas .
El clásico UDP/TCP (puerto 53), DNS cifrado sobre TLS (DoT), DNS sobre HTTPS (DoH) y DNS sobre QUIC (DoQ).
sdproxy analiza de forma nativa las cabeceras Alt-Svc y actualiza sin problemas los flujos DoH estándar a conexiones HTTP/3 (QUIC) de alto rendimiento sobre la marcha.Protege tu navegación de la inspección profunda de paquetes de tu ISP cifrando el Server Name Indication (SNI) de TLS.
HTTPS/SVCB, extrae sus claves ECH y asegura el handshake TLS de forma completamente autónoma.Un motor de inferencia ML de Regresión Logística nativo y de cero asignaciones se ejecuta en la ruta crítica. Extrae la entropía de Shannon, el sesgo de vocales/consonantes y las cadenas de n-gramas para detectar y bloquear al instante Dominios Generados Algorítmicamente (DGA) utilizados por botnets, malware e infraestructura C2.
El perfilado de línea base volumétrico rastrea la Media Móvil Exponencial (EMA) suavizada con Alpha de los datos transferidos por cliente o por subred. Detecta ráfagas repentinas y anómalas de datos que salen de la red por el puerto 53 y envía al cliente a un agujero negro en una Penalty Box de alto rendimiento.
sdproxy no solo reenvía consultas a ciegas; evalúa los upstreams dinámicamente.
¿Respondiste algo recientemente? Sírvelo desde la caché. sdproxy utiliza 32 fragmentos de memoria sin bloqueos, sembrados criptográficamente. Si un registro expira mientras sigue siendo popular, sdproxy activa una precarga en segundo plano para que tus dispositivos nunca noten un fallo de caché. Soporta completamente el servicio de datos obsoletos RFC 8767.
Apúntalo a tus archivos de concesión DHCP y a /etc/hosts y responderá a las búsquedas de nombres locales (tu NAS, tu impresora, tu Pi) sin molestar a un resolver upstream. Funciona con dnsmasq, ISC DHCP, Kea y odhcpd.
Asigna la identidad de un dispositivo a un grupo de resolvers upstream diferente o a un perfil parental.
RCODE: REFUSED, NXDOMAIN) directamente a una regla de enrutamiento para cuarentena instantánea del cliente.Configura un perfil por hijo, asigna sus dispositivos y configura:
Interfaz opcional basada en navegador y protegida con contraseña para operaciones en vivo.
Descarta cualquier respuesta upstream que contenga IPs privadas o bogon (RFC1918, loopbacks, ULAs) devolviendo NXDOMAIN para prevenir ataques de Server-Side Request Forgery (SSRF) y pivoting del navegador.
git clone https://github.com/cbuijs/sdproxy
cd sdproxy
go build -o sdproxy .
./sdproxy --config config.yaml
Requiere Go 1.25+. Sin CGo, sin librerías externas.
server:
listen_udp: ["0.0.0.0:53"]
cache:
enabled: true
size: 1024
upstreams:
default:
- "udp://1.1.1.1:53"
- "udp://9.9.9.9:53"
# OpenWrt MIPS (TP-Link, Netgear, etc.)
GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -ldflags="-s -w" -o sdproxy .
# OpenWrt ARM (Linksys, Asus, etc.)
GOOS=linux GOARCH=arm GOARM=7 go build -ldflags="-s -w" -o sdproxy .
# OpenWrt x86_64
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o sdproxy .
Los flags -s -w eliminan los símbolos de depuración - ahorra un 30-40% del tamaño del binario, lo cual importa en almacenamiento flash pequeño.
Todo vive en un único archivo YAML. El full_reference_config.yaml de este repositorio documenta cada opción en línea - ese archivo es el manual. Cópialo, elimina lo que no necesites, ajusta el resto.
2026/05/01 14:23:01 [DNS] [DoH3+ECH] 192.168.1.42 (alice-iphone) -> google.com A | ROUTE: kids | UPSTREAM: doh3://cloudflare-dns.com | OK
2026/05/01 14:23:02 [DNS] [UDP] 192.168.1.42 (alice-iphone) -> google.com A | ROUTE: kids | CACHE HIT
2026/05/01 14:23:05 [DNS] [DoQ] 192.168.1.10 -> nas.lan A | LOCAL IDENTITY
2026/05/01 14:23:10 [DNS] [UDP] 192.168.1.42 (alice-iphone) -> dga-domain-xzq1.com A | DGA INTERCEPT (Score: 98.2) | NXDOMAIN