Cómo Configurar DNS sobre HTTPS en Linux
Esta guía le ayudará a configurar DNS sobre HTTPS (DoH) en su sistema Linux, cubriendo múltiples métodos de configuración y mejores prácticas.
Requisitos Previos
- Sistema operativo Linux
- Privilegios de administrador (root)
- Conocimientos básicos de línea de comandos
- Conexión de red estable
Usando systemd-resolved
Paso 1: Verificar la Versión de systemd-resolved
systemctl --version
systemd-resolve --version
Asegúrese de que la versión sea 247 o superior, ya que estas versiones soportan DoH.
Paso 2: Configurar resolved.conf
Edite /etc/systemd/resolved.conf
:
[Resolve]
DNS=1.1.1.1 1.0.0.1
DNSOverTLS=yes
DNSSEC=yes
Cache=yes
DNSStubListener=yes
Para DoH, agregue la siguiente configuración:
[Resolve]
DNS=https://cloudflare-dns.com/dns-query
https://dns.google/dns-query
DNSOverTLS=no
DNSSEC=yes
Cache=yes
DNSStubListener=yes
Paso 3: Reiniciar el Servicio
sudo systemctl restart systemd-resolved
sudo systemctl status systemd-resolved
Usando NetworkManager
Paso 1: Verificar la Versión de NetworkManager
nmcli --version
Asegúrese de que la versión soporte funcionalidad DoH.
Paso 2: Configurar la Conexión
Configure DoH usando nmcli:
# Listar conexiones actuales
nmcli connection show
# Modificar la conexión especificada
sudo nmcli connection modify "Nombre de la Conexión" ipv4.dns "1.1.1.1,1.0.0.1" ipv4.dns-over-tls yes
sudo nmcli connection modify "Nombre de la Conexión" ipv6.dns "2606:4700:4700::1111,2606:4700:4700::1001" ipv6.dns-over-tls yes
Paso 3: Aplicar Cambios
sudo nmcli connection up "Nombre de la Conexión"
Usando Clientes Independientes
dnscrypt-proxy
- Instalación
# Debian/Ubuntu
sudo apt install dnscrypt-proxy
# Fedora
sudo dnf install dnscrypt-proxy
# Arch Linux
sudo pacman -S dnscrypt-proxy
- Configuración
Edite /etc/dnscrypt-proxy/dnscrypt-proxy.toml
:
server_names = ['cloudflare', 'google']
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = true
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 2500
keepalive = 30
- Iniciar Servicio
sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy
sudo systemctl status dnscrypt-proxy
Stubby
- Instalación
# Debian/Ubuntu
sudo apt install stubby
# Fedora
sudo dnf install stubby
# Arch Linux
sudo pacman -S stubby
- Configuración
Edite /etc/stubby/stubby.yml
:
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
- 0::1@53
upstream_recursive_servers:
- address_data: 1.1.1.1
tls_auth_name: "cloudflare-dns.com"
- address_data: 1.0.0.1
tls_auth_name: "cloudflare-dns.com"
- Iniciar Servicio
sudo systemctl enable stubby
sudo systemctl start stubby
sudo systemctl status stubby
Verificar Configuración
Método 1: Usando dig
# Probar resolución DNS
dig @127.0.0.1 example.com
# Verificar DNSSEC
dig @127.0.0.1 example.com +dnssec
# Verificar servidor DoH
dig @127.0.0.1 whoami.cloudflare CH TXT
Método 2: Usando resolvectl
# Ver configuración DNS actual
resolvectl status
# Probar resolución DNS
resolvectl query example.com
# Verificar DNSSEC
resolvectl query --dnssec example.com
Método 3: Pruebas en Línea
- Visite un sitio web de prueba de fugas DNS
- Ejecute la prueba completa
- Verifique el enrutamiento de las solicitudes DNS
Solución de Problemas
Problemas Comunes
-
Fallo de Resolución
- Verifique la conexión de red
- Verifique los archivos de configuración
- Verifique el estado del servicio
- Revise los registros del sistema
-
Problemas de Rendimiento
- Elija el servidor más cercano
- Optimice la configuración de caché
- Monitoree el tiempo de respuesta
- Verifique los recursos del sistema
-
Problemas de Compatibilidad
- Actualice los paquetes
- Verifique dependencias
- Verifique requisitos del sistema
- Pruebe configuraciones alternativas
Análisis de Registros
- Registros del Sistema
# Ver registros de systemd-resolved
journalctl -u systemd-resolved
# Ver registros de NetworkManager
journalctl -u NetworkManager
# Ver registros de dnscrypt-proxy
journalctl -u dnscrypt-proxy
- Diagnóstico de Red
# Probar conectividad de red
ping 1.1.1.1
# Verificar resolución DNS
nslookup example.com
# Verificar DNSSEC
dig example.com +dnssec
Mejores Prácticas
-
Selección de Proveedor
- Evalúe políticas de privacidad
- Verifique disponibilidad del servicio
- Considere ubicación geográfica
- Pruebe velocidad de conexión
-
Recomendaciones de Seguridad
- Use proveedores confiables
- Habilite DNSSEC
- Actualizaciones regulares del sistema
- Monitoree actividad de red
-
Optimización de Rendimiento
- Elija servidores más cercanos
- Optimice configuración de caché
- Monitoree métricas de rendimiento
- Mantenimiento regular
Implementación Empresarial
Configuración a Nivel de Sistema
-
Crear Archivos de Configuración
- Configurar systemd-resolved
- Configurar NetworkManager
- Implementar software cliente
-
Estrategia de Implementación
- Usar gestión de configuración
- Implementar monitoreo
- Planificar ventanas de mantenimiento
-
Gestión de Mantenimiento
- Actualizaciones regulares
- Monitoreo de rendimiento
- Seguimiento de incidencias
- Procedimientos de respaldo
Próximos Pasos
- Lista de Servidores - Explore proveedores DoH disponibles
- Guía de Seguridad - Aprenda más sobre configuración de seguridad
- Optimización de Rendimiento - Mejore el rendimiento DNS
- FAQ - Obtenga más ayuda