8.2.1.5.- Resolviendo nombre de host

DNS es una base de datos distribuida en ordenadores que realizan conversiones entre direcciones IP y nombres de host. Cada dominio debe mantener, al menos, dos servidores DNS; ambos deben proporcionar los nombres de cada ordenador del dominio o redireccionar una petición DNS a otro servidor DNS que pueda gestionar mejor la petición.

En la práctica, este proceso está oculto, ya que las empresas mantienen servidores DNS que hacen todo el trabajo sucio. Bastará con que nuestro ordenador apunte a los servidores DNS de nuestro ISP. Esto se puede controlar con DHCP o introduciendo la información manualmente en los ficheros de configuración. A veces necesitaremos comprobar manualmente las DNS debido a que nuestra configuración DNS esta distribuyendo la dirección errónea o para verificar si el servidor está operativo. Los programas que nos ayudan a realizar estas comprobaciones son los siguientes:

  • nslookup: realiza búsquedas DNS (por defecto, en determinados ordenadores en particular) y devuelve los resultados. Tiene un modo interactivo con el que podemos realizar una serie de consultas. El programa está oficialmente obsoleto, lo que significa que ya no recibe mantenimiento y será eliminado de su paquete padre (bind-utils o bind-tools). Lo mejor es utilizar host o dig.
  • host: es el sustituto para las funciones más sencillas de nslookup, carece de un modo interactivo y difiere en muchos detalles de funcionamiento. En el caso más simple, escribiremos host nombre_objetivo donde nombre_objetivo es el nombre de host o la dirección IP que queremos consultar. Admite varias opciones para modificar su comportamiento básico.
  • dig: realiza búsquedas DNS más complejas que host. Podemos utilizarlo para localizar la dirección IP de un único nombre de host o el nombre de host de una única dirección IP, es más flexible que host.
  • whois: busca la información de un dominio en conjunto y nos proporciona información sobre quién es el propietario del dominio, con quién contactar en caso de problemas, etc. Se suele utilizar junto con la opción -H, que omite las cláusulas legales que muchos registradores de dominios incorporan a la información de whois.

    whois_ejemplo_sybex

    Ejemplo de whois

Si sólo necesitamos resolver un puñado de nombres de host y no queremos recurrir a las DNS, utilizaremos el fichero /etc/hosts para definir las asociaciones de direcciones IP con nombres de host (una por línea). Cada asociación incluye por lo menos un nombre, aunque puede ser más de uno:

etc_hots_ejemplo

127.0.0.1  localhost
127.0.1.1  atika-VGN-FW21M

En este ejemplo, el nombre localhost está asociado a la dirección  127.0.0.1; el nombre atika-VGN-FW21M están asociados a 127.0.1.1 (fichero de configuración para mi equipo). El primer vínculo debería aparecer en cualquier fichero /etc/hosts; el segundo es un nombre de host completo que incluye la parte del domino. Los siguientes nombres de esta línea son alias (normalmente el nombre del host sin la especificación del dominio). Una vez configurado este fichero, podemos hacer referencia a los ordenadores que parecen en él por sus nombres, estén o no en los servidores DNS que utiliza el ordenador.

La principal desventaja de /etc/hosts es que es un fichero local y la definición de las asociaciones sólo afecta a las búsquedas de nombre  realizadas por el ordenador. Si queremos hacerlo en toda la red, tendremos que modificar los ficheros de todos los ordenadores de esta. Linux suele realizar búsquedas en /etc/hosts antes que en las DNS; para modificar este comportamiento configuraremos el fichero /etc/nsswitch.conf, en su línea hosts.

etc_nsswitch_conf

Esta línea indica el orden de las opciones files y DNS, que corresponden a /etc/hosts y DNS respectivamente:

hosts:   files  mdn4_minimal [NOTFOUND=return] dns

Invertiremos el orden de las opciones files y dns para obligar al sistema a consultar las DNS antes que /etc/hosts. El fichero /etc/nsswitch.conf admite opciones como, por ejemplo, realizar una resolución de nombres utilizando llamadas NetBIOS de Windows, o un servidor LDAP añadiendo las opciones pertinentes a la línea hosts junto con el software de apoyo necesario. Las líneas passwd, shadow y group controlan cómo se autentifican los usuarios y gestionan los grupos Linux. No deberíamos intentar cambiar estas configuraciones a menos que entendamos los sistemas implicados.

El fichero /etc/networks funciona de un modo similar a /etc/hosts, pero se aplica a las direcciones de red e invierte el orden de los nombres y las direcciones IP en cada línea:

etc_networks

link-local 169.254.0.0

Este ejemplo se define el nombre link-local con la red  169.254.0.0 no tendremos que editar este fichero salvo en contadas ocasiones.