Esta es la forma más moderna y compatible con la mayoría de distribuciones Linux actuales.
systemctl status systemd-resolved
# Editar el archivo de configuración
sudo nano /etc/systemd/resolved.conf
Añadir o modificar las siguientes líneas:
[Resolve]
DNS=dns.rocksdns.ovh dns2.rocksdns.ovh
DNSOverTLS=yes
Domains=~.
sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved
resolvectl status
Stubby es un cliente específico para DNS-over-TLS que ofrece mayor control sobre la configuración.
# Ubuntu/Debian
sudo apt update && sudo apt install stubby
# Fedora/CentOS/RHEL
sudo dnf install stubby
# Arch Linux
sudo pacman -S stubby
sudo nano /etc/stubby/stubby.yml
Configuración completa para RocksDNS:
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private: 1
round_robin_upstreams: 1
idle_timeout: 10000
listen_addresses:
- 127.0.0.1@53
upstream_recursive_servers:
- address_data: dns.rocksdns.ovh
tls_auth_name: "dns.rocksdns.ovh"
tls_port: 853
- address_data: dns2.rocksdns.ovh
tls_auth_name: "dns2.rocksdns.ovh"
tls_port: 853
- address_data: 82.223.31.111
tls_auth_name: "rescue.rocksdns.ovh"
tls_port: 853
- address_data: 46.62.141.91
tls_auth_name: "rescue2.rocksdns.ovh"
tls_port: 853
sudo systemctl enable stubby
sudo systemctl start stubby
# Editar resolv.conf
sudo nano /etc/resolv.conf
Añadir:
nameserver 127.0.0.1
Aunque cloudflared es de Cloudflare, puede configurarse para usar otros proveedores DoH.
# Descargar el binario
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# O usando snap
sudo snap install cloudflared
sudo mkdir -p /etc/cloudflared
sudo nano /etc/cloudflared/config.yml
Contenido del archivo:
proxy-dns: true
proxy-dns-port: 5053
proxy-dns-address: 127.0.0.1
proxy-dns-upstream:
- https://dns.rocksdns.ovh/dns-query
- https://dns2.rocksdns.ovh/dns-query
sudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflared
sudo nano /etc/resolv.conf
Añadir:
nameserver 127.0.0.1
dnscrypt-proxy soporta múltiples protocolos incluyendo DoH y DoT.
# Ubuntu/Debian
sudo apt install dnscrypt-proxy
# Fedora
sudo dnf install dnscrypt-proxy
# Arch Linux
sudo pacman -S dnscrypt-proxy
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Configuración básica:
server_names = ['rocksdns-doh', 'rocksdns2-doh']
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = false
dnscrypt_servers = false
doh_servers = true
require_dnssec = false
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 5000
keepalive = 30
cert_refresh_delay = 240
log_level = 0
[static]
[static.'rocksdns-doh']
stamp = 'sdns://AgcAAAAAAAAADDEyNy4wLjAuMTo0NDMgBuZm1wdG43_9a-C6lFYLDhksJ4u0N_0JwOxfXSPVOJYRZG5zLnJvY2tzZG5zLm92aA0vZG5zLXF1ZXJ5'
[static.'rocksdns2-doh']
stamp = 'sdns://AgcAAAAAAAAADDEyNy4wLjAuMTo0NDMgBuZm1wdG43_9a-C6lFYLDhksJ4u0N_0JwOxfXSPVOJYSZG5zMi5yb2Nrc2Rucy5vdmgNL2Rucy1xdWVyeQ'
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
about:config
network.trr.mode
y establecer a 3
network.trr.uri
y establecer a https://dns.rocksdns.ovh/dns-query
google-chrome --enable-features=dns-over-https --dns-over-https-templates="https://dns.rocksdns.ovh/dns-query"
dig @127.0.0.1 google.com
nslookup google.com
# Verificar DoT
dig @dns.rocksdns.ovh +tls google.com
# Verificar DoH (requiere curl)
curl -H 'accept: application/dns-json' 'https://dns.rocksdns.ovh/dns-query?name=google.com&type=A'
# Visitar en navegador:
https://dnscheck.tools
# O usar:
dig TXT whoami.ds.akahelp.net +short
# Verificar que el servicio está corriendo
systemctl status systemd-resolved
systemctl status stubby
systemctl status cloudflared
# Verificar conectividad
ping dns.rocksdns.ovh
ping dns2.rocksdns.ovh
# Probar diferentes servidores
dig @dns.rocksdns.ovh google.com
dig @dns2.rocksdns.ovh google.com
# Backup del resolv.conf original
sudo cp /etc/resolv.conf.backup /etc/resolv.conf
# O restablecer a DNS automático
sudo dhclient -r && sudo dhclient
Para usuarios de escritorio con NetworkManager:
# Configurar DoT globalmente
sudo nmcli connection modify "Wired connection 1" ipv4.dns "dns.rocksdns.ovh"
sudo nmcli connection modify "Wired connection 1" ipv4.dns-options "tls-hostname:dns.rocksdns.ovh"
sudo nmcli connection up "Wired connection 1"
Para configurar DNS específico por interfaz:
# Editar configuración de red
sudo nano /etc/netplan/01-netcfg.yaml
Ejemplo de configuración:
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
nameservers:
addresses: [127.0.0.1]
dhcp4-overrides:
use-dns: false
Para usar RocksDNS en contenedores Docker:
# Crear daemon.json
sudo nano /etc/docker/daemon.json
Contenido:
{
"dns": ["127.0.0.1", "dns.rocksdns.ovh"],
"dns-opts": ["edns0", "trust-ad"]
}
# Ver logs de systemd-resolved
journalctl -u systemd-resolved -f
# Ver logs de Stubby
journalctl -u stubby -f
# Monitorear consultas en tiempo real
sudo tcpdump -i any port 853 or port 443
# Medir tiempo de respuesta
dig @dns.rocksdns.ovh google.com | grep "Query time"
# Comparar servidores DNS
for server in dns.rocksdns.ovh dns2.rocksdns.ovh; do
echo "Probando $server:"
dig @$server google.com | grep "Query time"
done
#!/bin/bash
# Guardar como check_dns.sh
echo "Verificando configuración DNS..."
# Verificar resolución
if dig @127.0.0.1 google.com &>/dev/null; then
echo "✓ DNS local funciona"
else
echo "✗ Error en DNS local"
fi
# Verificar DoT
if dig @dns.rocksdns.ovh +tls google.com &>/dev/null; then
echo "✓ DNS-over-TLS funciona"
else
echo "✗ Error en DNS-over-TLS"
fi
# Verificar proveedor actual
provider=$(dig TXT whoami.ds.akahelp.net +short 2>/dev/null)
echo "Proveedor detectado: $provider"
#!/bin/bash
# Instalador automático para Ubuntu/Debian
echo "Instalando RocksDNS con systemd-resolved..."
# Backup de configuración actual
sudo cp /etc/systemd/resolved.conf /etc/systemd/resolved.conf.backup
# Configurar systemd-resolved
cat <<EOF | sudo tee /etc/systemd/resolved.conf
[Resolve]
DNS=dns.rocksdns.ovh dns2.rocksdns.ovh
DNSOverTLS=yes
Domains=~.
Cache=yes
DNSStubListener=yes
EOF
# Reiniciar servicios
sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved
echo "Configuración completada. Verificando..."
resolvectl status
# Instalar dnsmasq como caché local
sudo apt install dnsmasq
# Configurar dnsmasq
sudo nano /etc/dnsmasq.conf
Añadir:
server=127.0.0.53
cache-size=1000
no-resolv
log-queries
# Para systemd-resolved
sudo nano /etc/systemd/resolved.conf
Añadir:
[Resolve]
DNS=dns.rocksdns.ovh dns2.rocksdns.ovh
DNSOverTLS=yes
Domains=~.
ReadEtcHosts=yes
ResolveUnicastSingleLabel=no
DNSStubListenerExtra=127.0.0.2:53
#!/bin/bash
# Script de respaldo
backup_dir="/backup/dns-config-$(date +%Y%m%d)"
mkdir -p "$backup_dir"
# Respaldar archivos de configuración
sudo cp /etc/systemd/resolved.conf "$backup_dir/"
sudo cp /etc/resolv.conf "$backup_dir/"
sudo cp -r /etc/stubby "$backup_dir/" 2>/dev/null || true
sudo cp -r /etc/cloudflared "$backup_dir/" 2>/dev/null || true
echo "Respaldo creado en: $backup_dir"
# Restaurar desde respaldo
sudo cp /backup/dns-config-YYYYMMDD/resolved.conf /etc/systemd/
sudo systemctl restart systemd-resolved
# O volver a configuración DHCP
sudo rm /etc/resolv.conf
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
# Ver estado actual de DNS
resolvectl status
# Limpiar caché DNS
sudo systemd-resolve --flush-caches
# Probar resolución específica
resolvectl query google.com
# Ver estadísticas de DNS
resolvectl statistics
# Verificar configuración activa
cat /etc/resolv.conf
# Test completo de conectividad DNS
nslookup google.com && echo "DNS OK" || echo "DNS FAIL"
# Verificar que DoT está funcionando
ss -tlnp | grep :853
# Verificar latencia a servidores RocksDNS
ping -c 4 dns.rocksdns.ovh
ping -c 4 dns2.rocksdns.ovh
Categorías: Guías | Etiquetas: