Cómo configurar DNS en Linux: resolv.conf, nmcli y systemd-resolved
El DNS – Domain Name System se utiliza para la resolución de nombres para direcciones IP y viceversa. En este artículo explicamos de forma sencilla cómo configurar el DNS en Linux de forma manual.
La implementación del servicio de resolución de nombres está a cargo del paquete BIND u otros paquetes de servidor de DNS. Este paquete posee los archivos necesarios para la configuración del DNS y el servicio llamado named.
El DNS está estructurado sobre dos puntos básicos, la organización de Internet en dominios y la distribución de los servidores de nombres en la red en forma de jerarquía.
La organización de Internet en dominios evita la utilización de un mismo nombre por más de un equipo y descentraliza el registro de redes y equipos.
Los dominios pueden ser jerarquizados por instituciones y geográficamente.
La distribución de los servidores DNS es necesaria ya que la centralización de una única base de datos con la información para la conversión de los nombres simbólicos en direcciones IP sería inviable.
La propia Internet nació de un proyecto llamado ARPANET, creado por el Departamento de Defensa de Estados Unidos, que preconizaba una red sin un backbone central y sin administración centralizada, volviéndola virtualmente indestructible en caso de que alguna computadora, o trecho de la red se volviera inoperativa.
En Internet existen diversos servidores raíz geográficamente distribuidos y organizados a través de sufijos. Por ejemplo, los servidores raíz del sufijo .br están alojados en el registro.br. Los servidores raíz del registro.br necesitan conocer todos los servidores DNS que alojan dominios terminados en .br.
Hay 3 archivos de configuración importantes para la resolución de nombres, ya citados en el libro:
- /etc/nsswitch.conf: Este archivo posee una línea con el comando "hosts" que determina el orden de búsqueda para resolución de nombres. La etiqueta "files" determina que se consulte /etc/hosts y la etiqueta "dns" determina que se consulte el archivo /etc/resolv.conf para determinar la IP del servidor de DNS.
- /etc/resolv.conf: Este archivo posee una línea con el comando nameserver que determina la IP del servidor de DNS;
- /etc/hosts: Este archivo puede contener algunas resoluciones de nombres en IPs de forma manual;
Al acceder a Internet a través de un navegador o cualquier otra aplicación de red, el host Linux sigue la siguiente secuencia para identificar la dirección IP del nombre de dirección de Internet deseado:
- Linux verifica el archivo /etc/nsswitch.conf para saber el orden de búsqueda: si es en archivo (/etc/hosts) o por servidor de DNS (/etc/resolv.conf).
- Si el orden en /etc/nsswitch.conf es primero "files", se consulta el archivo /etc/hosts para intentar determinar la resolución del nombre. Si se encuentra la ocurrencia, se retornará la dirección IP. Si no la encuentra, el host leerá la dirección IP del servidor de DNS en el archivo /etc/resolv.conf y hará una consulta al servidor de DNS para intentar determinar la IP de la dirección deseada. Si el servidor retorna una dirección IP, el nombre será resuelto. De lo contrario, la aplicación recibirá una falla de resolución de nombres.
- Si el orden en /etc/nsswitch.conf es primero "dns", se consulta el archivo /etc/resolv.conf para obtener la dirección IP del servidor de DNS y se hará una consulta al servidor de DNS para intentar determinar la IP de la dirección deseada. Si el servidor de DNS encuentra la dirección, la aplicación recibirá la IP deseada. De lo contrario, el host accederá al archivo /etc/hosts para intentar determinar la IP de la dirección deseada. Si la encuentra, se retornará la IP. En caso negativo la aplicación recibirá una falla de resolución de nombres.
Ejemplo de configuración del /etc/nsswitch.conf
passwd: files systemdgroup: files systemdshadow: filesgshadow: fileshosts: files dnsnetworks: files
Ejemplo de configuración básica del archivo /etc/resolv.conf:
search meudominio.com.brnameserver 10.25.12.1nameserver 200.216.215.5
Ejemplo de configuración básica del archivo /etc/hosts:
127.0.0.1 localhost.localdomain localhost 10.25.12.1 www.certificacaolinux.com.br www
Es importante que entiendas el funcionamiento del proceso de resolución de nombres, que los archivos /etc/hosts, /etc/nsswitch.conf, /etc/resolv.conf regulan la configuración del cliente de DNS.
Es importante saber que el orden de resolución de nombres en el archivo /etc/nsswitch.conf afecta cómo se comportará la resolución de nombres. Tan pronto como se encuentra una ocurrencia de resolución de nombres, ya sea en el servidor de DNS o localmente en el archivo /etc/hosts, el host se da por satisfecho y no recurre a otro servicio.
Con esto, se pueden tener los siguientes casos de error:
- Puede existir una dirección listada en /etc/hosts manualmente, que difiere de la dirección IP que los servidores de DNS resuelven. Esto puede hacer que el host se conecte a un servidor incorrecto, o incluso no consiga conectarse porque la dirección IP no existe;
- Un determinado servidor de DNS listado en /etc/resolv.conf no está activo o el host no puede establecer una conexión con él, imposibilitando la resolución de nombres;
Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la inscripción aquí. Si ya tienes una cuenta, o quieres crear una, simplemente ingresa o crea tu usuario aquí.
¿Te gustó? Comparte
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.