Guía completa de DNS cifrado en Linux con RocksDNS
RocksDNS ofrece resolución DNS cifrada mediante DoH, DoT y DoQ. En Linux no basta con poner las IPs en /etc/resolv.conf: para usar cifrado necesitas un cliente o resolvedor compatible. Esta guía cubre las opciones más habituales.
Servidores disponibles
DNS1 🇪🇸 España
- DoH:
https://dns.rocksdns.ovh/dns-query(puerto 443) - DoT:
dns.rocksdns.ovh(puerto 853) - DoQ:
dns.rocksdns.ovh(puerto 8853) - IPv4:
82.223.31.111 - IPv6:
2001:ba0:22d:1c00::1
DNS2 🇩🇪 Alemania
- DoH:
https://dns2.rocksdns.ovh/dns-query(puerto 443) - DoT:
dns2.rocksdns.ovh(puerto 853) - DoQ:
dns2.rocksdns.ovh(puerto 8853) - IPv4:
116.203.57.216 - IPv6:
2a01:4f8:1c1a:aadb::1
Importante: RocksDNS no admite DNS sin cifrar por el puerto 53. Poner estas IPs directamente en /etc/resolv.conf no activa DoH, DoT ni DoQ.
1. systemd-resolved con DoT
Buena opción en distribuciones modernas con systemd. resolved.conf admite DNS=, DNSOverTLS= y DNSSEC=. Usar #hostname junto a la IP fija el nombre TLS/SNI del servidor.
sudo mkdir -p /etc/systemd/resolved.conf.d
sudo nano /etc/systemd/resolved.conf.d/rocksdns.conf
[Resolve]
DNS=82.223.31.111#dns.rocksdns.ovh 116.203.57.216#dns2.rocksdns.ovh
DNSOverTLS=yes
DNSSEC=yes
Domains=~.
sudo systemctl restart systemd-resolved
resolvectl status
Comprueba que /etc/resolv.conf es un symlink a /run/systemd/resolve/stub-resolv.conf. Si no lo es, algunos gestores de red pueden estar sobreescribiendo la configuración.
2. Stubby (DoT)
Stubby actúa como resolvedor local DoT. Es una buena alternativa tanto con como sin systemd, y permite definir tls_auth_name y puerto TLS de forma explícita.
sudo apt install stubby
sudo nano /etc/stubby/stubby.yml
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
listen_addresses:
- 127.0.0.1@53
- 0::1@53
upstream_recursive_servers:
- address_data: 82.223.31.111
tls_auth_name: "dns.rocksdns.ovh"
tls_port: 853
- address_data: 116.203.57.216
tls_auth_name: "dns2.rocksdns.ovh"
tls_port: 853
sudo systemctl enable --now stubby
Una vez activo, apunta /etc/resolv.conf a 127.0.0.1 para que el sistema use Stubby como resolvedor local.
3. dnscrypt-proxy (DoH)
dnscrypt-proxy 2 soporta DoH y otros modos. Para RocksDNS puedes usarlo como proxy local DoH definiendo un servidor estático.
sudo apt install dnscrypt-proxy
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
listen_addresses = ['127.0.0.1:53', '[::1]:53']
[static]
[static.rocksdns]
stamp = 'sdns://AgcAAAAAAAAAAAASZG5zLnJvY2tzZG5zLm92aAovZG5zLXF1ZXJ5'
Si prefieres no gestionar stamps DNS manualmente, Stubby con DoT suele ser más directo para esta configuración. dnscrypt-proxy es más potente si ya lo usas o quieres más flexibilidad de filtrado.
sudo systemctl enable --now dnscrypt-proxy
4. Métodos sin systemd
Si tu sistema no usa systemd, la vía más limpia es montar un resolvedor local cifrado y hacer que /etc/resolv.conf apunte a 127.0.0.1.
Stubby + openresolv
sudo apt install stubby openresolv
sudo nano /etc/stubby/stubby.yml
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
listen_addresses:
- 127.0.0.1@53
upstream_recursive_servers:
- address_data: 82.223.31.111
tls_auth_name: "dns.rocksdns.ovh"
tls_port: 853
- address_data: 116.203.57.216
tls_auth_name: "dns2.rocksdns.ovh"
tls_port: 853
echo 'name_servers="127.0.0.1"' | sudo tee /etc/resolvconf.conf
sudo resolvconf -u
Asegúrate de que Stubby arranca con el init de tu sistema: OpenRC, runit, s6 o el que uses.
dnscrypt-proxy + openresolv
Misma idea: dnscrypt-proxy escucha en 127.0.0.1:53 y resolv.conf apunta a localhost.
listen_addresses = ['127.0.0.1:53']
echo 'name_servers="127.0.0.1"' | sudo tee /etc/resolvconf.conf
sudo resolvconf -u
Verificación
Con systemd-resolved
resolvectl status
resolvectl query example.com
DoT
kdig @dns.rocksdns.ovh +tls google.com
kdig @dns2.rocksdns.ovh +tls google.com
DoQ
kdig @dns.rocksdns.ovh -p 8853 +quic google.com
kdig @dns2.rocksdns.ovh -p 8853 +quic google.com
DoH
curl -H 'accept: application/dns-json' \
'https://dns.rocksdns.ovh/dns-query?name=google.com&type=A'
Resolvedor local
dig @127.0.0.1 google.com
Herramientas externas
Solución de problemas
resolvectl status
systemctl status systemd-resolved stubby dnscrypt-proxy
journalctl -u stubby -f
journalctl -u dnscrypt-proxy -f
ping dns.rocksdns.ovh
ping dns2.rocksdns.ovh
- Si usas Stubby, revisa que
tls_auth_namecoincide exactamente con el hostname del servidor. - Si usas systemd-resolved, comprueba que ningún gestor de red está sobreescribiendo
/etc/resolv.conf. - Si usas método sin systemd, confirma que
/etc/resolv.confapunta a127.0.0.1. - Si el puerto 853 está bloqueado en tu red, prueba DoH como alternativa.
Configuración avanzada
Puedes integrar RocksDNS con NetworkManager, netplan, OpenRC o contenedores. La idea base no cambia: el sistema consulta a un proxy local, y ese proxy habla con RocksDNS mediante DoT o DoH.
NetworkManager
Si usas NetworkManager, puedes delegar la resolución DNS a systemd-resolved añadiendo en /etc/NetworkManager/conf.d/dns.conf:
[main]
dns=systemd-resolved
sudo systemctl restart NetworkManager
Contenedores
En Docker o Podman, configura el DNS del contenedor apuntando a la IP del host o a un resolvedor local accesible desde la red del contenedor.
Automatización y monitoreo
Script de comprobación
#!/bin/sh
if kdig @dns.rocksdns.ovh +tls google.com >/dev/null 2>&1; then
echo "RocksDNS DoT OK"
else
echo "Fallo en DoT — comprueba Stubby o systemd-resolved"
fi
Monitoreo de tráfico
journalctl -u stubby -f
journalctl -u dnscrypt-proxy -f
sudo tcpdump -i any port 853 or port 443 or port 8853
Respaldo de configuración
sudo cp /etc/systemd/resolved.conf.d/rocksdns.conf ~/rocksdns.conf.bak
sudo cp /etc/stubby/stubby.yml ~/stubby.yml.bak
sudo cp /etc/dnscrypt-proxy/dnscrypt-proxy.toml ~/dnscrypt-proxy.toml.bak
Comandos útiles
resolvectl status
resolvectl flush-caches
resolvectl query example.com
kdig @dns.rocksdns.ovh +tls example.com
kdig @dns.rocksdns.ovh -p 8853 +quic example.com
dig @127.0.0.1 example.com
curl -H 'accept: application/dns-json' 'https://dns.rocksdns.ovh/dns-query?name=example.com&type=A'
Para terminar
En distribuciones modernas con systemd, systemd-resolved con DoT es la opción más limpia y sin dependencias extra. Si prefieres más control o no usas systemd, Stubby es la alternativa más directa. Para DoH, dnscrypt-proxy es la herramienta más completa aunque requiere algo más de configuración.
El puerto DoQ verificado es el 8853. Si encuentras algún problema con DoT o DoQ en tu red, DoH suele ser la opción más permisiva.
¿Quieres seguir configurando RocksDNS?
Empieza con uno de estos endpoints:
https://dns.rocksdns.ovh/dns-queryhttps://dns2.rocksdns.ovh/dns-query