Para solucionar DNS en un servidor Linux, verifique la conectividad de red, compruebe qué pila de resolución utiliza (systemd-resolved, NetworkManager o resolv.conf simple), configure los servidores de nombres correctos, vacíe DNS escondites y prueba con dig.
Si ejecuta una DNS TRANSPORTE GRATUITO (BIND/Sin enlazar/dnsmasq), validar la configuración, abrir el puerto 53 y confirmar las zonas y la recursión. DNS Un fallo en el servidor interrumpe las actualizaciones, las instalaciones de paquetes y las llamadas salientes a la API.
En esta guía, te mostraré cómo solucionarlo DNS En entornos de servidores Linux, aprenda paso a paso, utilizando comandos sencillos, diagnósticos probados e instrucciones específicas para cada distribución. Tanto si es principiante como si administra nodos de producción, encontrará soluciones rápidas y definitivas.
Búsqueda DNS Lista de verificación de diagnóstico
- Compruebe la conectividad básica de la red: ¿Puedes hacer ping a una IP (no a un dominio)?
- Identifique su pila de resolución: systemd-resolved, NetworkManager o /etc/resolv.conf estático.
- Inspeccionar la corriente servidores de nombres y dominios de búsqueda.
- Prueba DNS Resolución con dig y nslookup.
- Flush DNS cachés (cliente y local) DNS servicios).
- Compruebe el firewall/SELinux para el puerto 53 si el servidor está en ejecución. DNS.
- Revisar registros: systemd-journals y registros de servicio para errores (SERVFAIL, tiempos de espera agotados).
# 1) Connectivity
ping -c2 1.1.1.1 || ping -c2 8.8.8.8
# 2) What resolver do I use?
readlink -f /etc/resolv.conf
resolvectl status 2>/dev/null || systemd-resolve --status 2>/dev/null
# 3) What is my DNS seeing?
cat /etc/resolv.conf
dig youstable.com +short
nslookup youstable.com
# 4) Trace a domain (find where it fails)
dig example.com +trace
# 5) Logs (adjust service name as needed)
journalctl -u systemd-resolved --no-pager --since "10 min ago"
journalctl -u named --since "1 hour ago"
journalctl -u unbound --since "1 hour ago"Entender cómo DNS Funciona en Linux
Resolver glibc y nsswitch
La mayoría de las aplicaciones Linux dependen del resolvedor glibc, que consulta las fuentes listadas en /etc/nsswitch.conf. La línea “hosts: files dns myhostname” controla el orden de resolución. Si DNS Parece que se ignora. Compruebe nsswitch para asegurarse de que "dns" está presente y no está bloqueado por fuentes mal ordenadas.
/ Etc / resolv.conf
resolv.conf define las IP del servidor de nombres, los dominios de búsqueda y las opciones (como el tiempo de espera y los intentos). Dependiendo de su distribución, puede ser... managed por systemd-resolved, NetworkManager, netplan o cloud-init. Editarlo directamente podría sobrescribirse al reiniciar; use la herramienta adecuada para cambios persistentes.
systemd-resuelto
En muchas distribuciones modernas (Ubuntu, Debian, Fedora), systemd-resolved es el resolvedor auxiliar. Comúnmente usa 127.0.0.53 como una IP local. DNS y manages resolv.conf a través de un enlace simbólico. Use resolvectl para ver y configurar DNS por interfaz y para vaciar las cachés.
NetworkManager, netplan e ifcfg
NetworkManager (nmcli) y netplan (imágenes de nube de Ubuntu) configuran las interfaces y DNS persistentemente. Los sistemas basados en RHEL pueden usar archivos ifcfg. Cloud-init puede establecer DNS al arrancar desde metadatos. Establecer DNS en la capa adecuada para que los cambios persistan tras los reinicios.
Correcciones del lado del cliente: DNS No funciona en un servidor Linux.
Paso 1: Verificar la conectividad y el enrutamiento de la red
ip a
ip route
ping -c3 1.1.1.1
curl -I http://1.1.1.1Si el ping a una IP funciona pero la resolución de dominios falla, el problema es DNS-específico. Si la conectividad IP también está dañada, solucione primero los problemas de red (puerta de enlace, rutas, grupos de seguridad).
Paso 2: Inspeccione y configure resolv.conf (temporal)
cat /etc/resolv.conf
# Quick temporary fix: point to public resolvers
sudo sed -i.bak 's/^/#/' /etc/resolv.conf
printf "nameserver 1.1.1.1\nnameserver 8.8.8.8\noptions timeout:2 attempts:2\n" | sudo tee /etc/resolv.confEs posible que la pila de red sobrescriba este valor. Conviértalo en persistente con la herramienta correcta a continuación.
Paso 3: Utilice systemd-resolved correctamente (Ubuntu/Debian/Fedora)
# Show current DNS per interface
resolvectl status
# Set DNS for a specific interface, e.g., eth0
sudo resolvectl dns eth0 1.1.1.1 8.8.8.8
sudo resolvectl domain eth0 example.local
# Ensure resolv.conf points to systemd-resolved's stub
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# Flush cache
sudo resolvectl flush-cachesSi resolv.conf no es un enlace simbólico al archivo systemd, las discrepancias pueden causar fallos. Recree el enlace simbólico como se muestra.
Paso 4: NetworkManager persistente DNS (RHEL/CentOS/Alma/Rocky/Ubuntu Desktop)
# List connections and pick the active one
nmcli con show
# Set DNS and disable automatic DNS from DHCP if needed
sudo nmcli con mod <CONNECTION_NAME> ipv4.ignore-auto-dns yes
sudo nmcli con mod <CONNECTION_NAME> ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli con up <CONNECTION_NAME> # or reload
# For IPv6 if applicable
sudo nmcli con mod <CONNECTION_NAME> ipv6.ignore-auto-dns yes
sudo nmcli con mod <CONNECTION_NAME> ipv6.dns "2606:4700:4700::1111 2001:4860:4860::8888"Paso 5: Netplan (común en las imágenes en la nube de Ubuntu)
sudo nano /etc/netplan/50-cloud-init.yaml
# Example:
# network:
# version: 2
# ethernets:
# eth0:
# dhcp4: yes
# nameservers:
# addresses: [1.1.1.1, 8.8.8.8]
sudo netplan applySi cloud-init sobrescribe DNS al reiniciar, configure DNS en /etc/cloud/cloud.cfg o en la fuente de datos (metadatos) según la documentación de su proveedor.
Paso 6: Corrija el orden de nsswitch y el archivo de hosts
grep '^hosts:' /etc/nsswitch.conf
# Recommended baseline:
# hosts: files dns myhostname
sudo sed -i 's/^hosts:.*/hosts: files dns myhostname/' /etc/nsswitch.conf
sudo head -n 50 /etc/hostsAsegúrese de que /etc/hosts no contenga entradas conflictivas que secuestren dominios que necesitas resolver mediante DNS.
Paso 7: Enjuagar localmente DNS caches
# systemd-resolved
sudo resolvectl flush-caches
# nscd
sudo nscd -i hosts
# dnsmasq (cache flush by SIGHUP)
sudo killall -HUP dnsmasq
# unbound
sudo unbound-control flush_zone . # or specific zonesPaso 8: VPN, división-DNS y IPv6 trampas
Los clientes VPN a menudo instalan su propio resolv.conf o push DNS a través de NetworkManager. Prueba sin VPN. Si IPv6 está habilitado pero su resolvedor no puede llegar a los upstreams v6, agregue trabajo IPv6 DNS o deshabilitar IPv6 DNS Por ahora, a través de NetworkManager o las opciones de resolv.conf.
Si su servidor funciona DNS (BIND/Sin enlazar/dnsmasq)
Abrir y probar el puerto 53 (UDP/TCP)
# Firewalld
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload
# UFW
sudo ufw allow 53
sudo ufw allow 53/udp
# nftables quick check
sudo nft list ruleset | sed -n '1,200p'
# Test externally (from another host)
dig @SERVER_IP example.com A
dig @SERVER_IP google.com A +tcpConfiguración de BIND (con nombre) y cordura de zona
# Validate configs and zones
sudo named-checkconf
sudo named-checkzone example.com /var/named/example.com.zone
# Common mistakes:
# - Missing SOA/NS records
# - Serial number not incremented
# - Wrong allow-query / recursion settingsPara un solucionador que preste servicio a su red privada, habilite la recursión y restrinja el acceso:
options {
recursion yes;
allow-recursion { 10.0.0.0/8; 192.168.0.0/16; };
allow-query { any; };
dnssec-validation auto;
};Unbound como solucionador de validación
# Check logs for SERVFAIL (often DNSSEC-related)
journalctl -u unbound -e
# Basic allowlist for your LAN:
server:
interface: 0.0.0.0
access-control: 10.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
verbosity: 1notas de dnsmasq
dnsmasq puede reenviar o almacenar en caché. DNSSi está vinculado a 127.0.0.1 pero resolv.conf apunta a otra dirección, los clientes podrían omitirlo. Configure resolv.conf o systemd-resolved para usar dnsmasq y ejecute HUP después de los cambios.
DNSSEC y SERVFAIL
Si ve SERVFAIL esporádicamente, puede ser DNSLa validación SEC falla debido a un desfase horario o problemas con el servidor de origen. Asegúrese de que el NTP funcione correctamente y de que su resolvedor pueda acceder a los servidores raíz y TLD. Como solución temporal, utilice un resolvedor público (1.1.1.1, 8.8.8.8) mientras soluciona el problema de validación.
Verificación: Confirmar DNS Es saludable
- Resolver múltiples dominios: Registros A, AAAA, MX y NS.
- Pruebe UDP y TCP en el puerto 53 si ejecuta un DNS .
- Rastrear un dominio problemático de extremo a extremo con dig + trace.
- Captura de paquetes para ver tiempos de espera o rechazos.
dig youstable.com A +short
dig google.com MX +short
dig @1.1.1.1 cloudflare.com NS +short
dig example.com AAAA +short
dig +trace example.com
# Tcpdump (observe DNS traffic)
sudo tcpdump -ni any port 53 -vvHacer DNS Configuración persistente
- Utilice nmcli o netplan en lugar de editar resolv.conf directamente.
- Alinee el enlace simbólico systemd-resolved y resolv.conf.
- Deshabilite las fuentes de sobrescritura (DHCP ignore-auto-dns, actualizaciones de cloud-init) si es necesario.
- Comparación de DNS Opciones (resolutores públicos frente a privados) por entorno.
Prevención: Reducir DNS Cortes
- Configure siempre al menos dos resolvers de redes diferentes (por ejemplo, 1.1.1.1 y 8.8.8.8).
- Monitorización DNS Latencia y tasas de fallos con scripts o un conjunto de herramientas de monitorización.
- Usa DNS Almacenamiento en caché local (systemd-resolved, Unbound) para obtener respuestas más rápidas.
- Mantenga la hora sincronizada (NTP/chrony) para evitar DNSFallos de validación de la SEC.
- Cambios de control a través de la configuración managemento (Ansible, Terraform).
Cuándo escalar y cómo YouStable Ayuda a las
Si aún observa tiempos de espera agotados, SERVFAIL o resolución intermitente bajo carga, el problema podría estar relacionado con filtros ascendentes, emparejamiento del ISP o comportamiento del solucionador recursivo. En producción, considere managed DNS y manageservidores d. YouStableLa pila de alojamiento de incluye valores predeterminados reforzados, soporte 24 horas, los 7 días de la semana y configuraciones de resolución de mejores prácticas para mantener sus aplicaciones accesibles.
Errores comunes y soluciones rápidas
- “Fallo temporal en la resolución de nombres” — Establecer servidores de nombres que funcionen y vaciar cachés.
- “Se agotó el tiempo de conexión; no se pudo acceder a ningún servidor” Verifique el firewall, la accesibilidad ascendente o la VPN.
- “FALLA DE SERVICIO” — inspeccionar DNSProblemas con la SEC, la sincronización horaria o la delegación de zonas.
- resolv.conf sigue cambiando configurar DNS en NetworkManager, netplan o cloud-init.
- Funciona con IP pero no con nombre de host corregir el orden de nsswitch y DNS .
Preguntas Frecuentes
1. ¿Por qué es DNS ¿No funciona en mi servidor Linux?
Las causas comunes incluyen servidores de nombres incorrectos, resolv.conf sobrescrito, nsswitch.conf mal ordenado, local DNS Problemas de caché, interferencias de VPN o bloqueos de firewall en el puerto 53. Comience revisando resolv.conf, resolvectl status y realizando pruebas con dig contra un resolvedor que funcione correctamente.
2. ¿Cómo puedo configurarlo permanentemente? DNS ¿En Linux?
Utilice la herramienta de su pila de red: nmcli (NetworkManager), netplan (Ubuntu cloud) o resolvectl (systemd-resolved). Evite editar resolv.conf directamente; suele ser... managed y se sobrescribirá. En sistemas de la familia RHEL, nmcli con ignore-auto-dns garantiza la persistencia tras reinicios.
3. ¿Cómo tiro de la cadena? DNS ¿Caché en Linux?
Para systemd-resolved, use "resolvectl flush-caches". Para nscd, use "nscd -i hosts". Para dnsmasq, envíe SIGHUP, y para Unbound, use "unbound-control flush_zone". Muchos servidores no almacenan caché a nivel de glibc; las cachés residen en estos servicios.
4. ¿Cómo puedo probar si el puerto 53 está abierto?
Desde un host remoto, ejecute "dig @SERVER_IP example.com A" y "dig @SERVER_IP example.com +tcp". En el servidor, confirme las reglas del firewall (ufw, firewalld, nftables) y escuche los sockets con "ss -lunpt | grep :53".
5. ¿Cómo puedo solucionar rápidamente el “Error temporal en la resolución de nombres”?
Configure los resolvers que funcionen (1.1.1.1 y 8.8.8.8), alinee el enlace simbólico resolv.conf con systemd-resolved si se usa, vacíe las cachés y verifique con dig. Haga que el cambio sea persistente mediante nmcli o netplan para que sobreviva a los reinicios.
Con los pasos anteriores, puedes solucionarlo. DNS en entornos de servidor Linux de forma fiable y para que sus cambios se mantengan. Si desea una configuración reforzada con monitorización proactiva y soporte experto, YouStable, manageEl alojamiento web puede tomar DNS Te ahorrarás muchos dolores de cabeza.