El stack de resolución DNS en Linux

Introducción

Cuando escribes ping servidor.empresa.com, Linux necesita convertir ese nombre en una dirección IP. Ese proceso pasa por tres capas en orden: primero consulta la tabla local /etc/hosts, luego pregunta al servidor DNS configurado en /etc/resolv.conf, y el orden de esas capas lo define /etc/nsswitch.conf. Entender estas tres piezas es imprescindible para diagnosticar cualquier fallo de resolución.

/etc/nsswitch.conf — el árbitro del orden

Define el orden en que el sistema consulta las distintas fuentes para resolver nombres, usuarios, grupos, etc. La línea clave para DNS es hosts:


# /etc/nsswitch.conf (fragmento)
hosts:   files dns myhostname
          
  • files — consulta primero /etc/hosts
  • dns — si no lo encuentra, pregunta al servidor DNS de /etc/resolv.conf
  • myhostname — resuelve el propio hostname de la máquina aunque no esté en ningún sitio

Si cambias el orden a dns files, el DNS tiene preferencia sobre /etc/hosts. En sistemas con systemd-resolved, suele aparecer también resolve o mdns4_minimal.

/etc/hosts — resolución local estática

Tabla de resolución local que tiene prioridad sobre el DNS (según el orden de nsswitch.conf). Muy útil para pruebas, entornos sin DNS o redirecciones locales.


# Formato: IP   nombre_principal   [alias...]
127.0.0.1       localhost
127.0.1.1       mi-maquina.local   mi-maquina
192.168.1.10    servidor.empresa.com   servidor
10.0.0.1        router gw
          

El cambio es efectivo de inmediato, sin necesidad de reiniciar ningún servicio.

/etc/resolv.conf — el servidor DNS

Indica qué servidores DNS consultar y el dominio de búsqueda por defecto.


# /etc/resolv.conf
nameserver 8.8.8.8          # servidor DNS primario
nameserver 8.8.4.4          # servidor DNS secundario
search empresa.com local    # dominio de búsqueda (prueba sin FQDN)
domain empresa.com          # dominio por defecto
options timeout:2 attempts:3
          

Directivas más habituales:

  • nameserver — IP del servidor DNS (se pueden poner hasta 3)
  • search — lista de dominios que se añaden automáticamente si el nombre no es un FQDN. Con search empresa.com, una consulta a servidor prueba también servidor.empresa.com
  • domain — dominio local (equivalente a un search de un único dominio)
  • options timeout:N — segundos de espera por respuesta
  • options attempts:N — reintentos antes de pasar al siguiente servidor

Atención: en sistemas con systemd-resolved o NetworkManager, /etc/resolv.conf suele ser un enlace simbólico gestionado automáticamente. Editarlo a mano puede ser sobreescrito al reiniciar la red.


# Comprobar si es un enlace simbólico
ls -la /etc/resolv.conf
# → /etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf
          

Para el examen LPIC-1 (objetivo 109.3): conocer los tres ficheros, su función y el orden de resolución definido por nsswitch.conf.

Herramientas de consulta DNS: dig, host, nslookup

Índice de la sección

Índice del curso