Resolución de nombres

El proceso de obtención de una dirección de Internet a partir un nombre de sistema principal se conoce como resolución de nombres y lo realiza la subrutina gethostbyname.

El proceso de conversión de una dirección de Internet en un nombre de sistema principal se conoce como resolución de nombres inversa y lo realiza la subrutina gethostbyaddr. Estas rutinas son esencialmente accesorios en una biblioteca de rutinas de conversión de nombres que se conocen como rutinas de resolución.

Normalmente las rutinas de resolución de sistemas principales que ejecutan TCP/IP intentan resolver los nombres utilizando estas fuentes siguientes:

  1. BIND/DNS (named)
  2. NIS (Network Information Service - Servicio de información de red)
  3. Archivo /etc/hosts local

Cuando se instala NIS+, las preferencias de búsqueda se establecen utilizando el archivo irs.conf. Para obtener más información, consulte el apartado Network Information Services (NIS and NIS+) Guide.

Para resolver un nombre en una red de dominio, la rutina de resolución consulta primero la base de datos de servidores de nombres de dominio, que puede ser local si el sistema principal es un servidor de nombres de dominio o un sistema principal externo. Los servidores de nombres convierten los nombres de dominio en direcciones de Internet. El grupo de nombres del que es responsable un servidor de nombres es la zona de autorización. Si la rutina de resolución utiliza un servidor de nombres remoto, la rutina utiliza el protocolo de nombres de dominio (DOMAIN) para consultar la correlación. Para resolver un nombre de una red plana, la rutina de resolución busca una entrada en el archivo /etc/hosts local. Cuando se utiliza NIS o NIS+, se busca en el archivo /etc/hosts del servidor maestro.

De forma predeterminada, las rutinas de resolución intentan resolver los nombres utilizando los recursos indicados más arriba. Primero se prueba BIND/DNS. Si el archivo /etc/resolv.conf no existe o si BIND/DNS no ha podido encontrar el nombre, se consulta NIS si está en ejecución. NIS tiene autoridad sobre el archivo /etc/hosts local, de modo que la búsqueda finaliza aquí si se está ejecutando. Si NIS no está en ejecución, se buscan en el archivo /etc/hosts local. Si ninguno de estos servicios puede encontrar el nombre, las rutinas de resolución devuelven HOST_NOT_FOUND. Si ninguno de los servicios está disponible, las rutinas de resolución devuelven SERVICE_UNAVAILABLE.

El orden predeterminado descrito anteriormente se puede sobrescribir creando el archivo de configuración /etc/irs.conf y especificando el orden deseado. Asimismo, se puede sobrescribir el orden predeterminado y el orden de /etc/irs.conf con la variable de entorno NSORDER. Si se define el archivo /etc/irs.conf o la variable de entorno NSORDER, se debe especificar como mínimo un valor junto con la opción.

Para especificar el orden de sistema principal con el archivo /etc/irs.conf:

hosts valor [ continue ] 

El orden se especifica con cada método indicado en una línea él solo. El valor es uno de los métodos listados y la palabra clave continue indica que sigue otro método de resolución en la siguiente línea.

Para especificar el orden de sistema principal con la variable de entorno NSORDER:

NSORDER=valor,valor,valor

El orden se especifica en una línea con valores separados por comas. Están permitidos espacios en blanco entre las comas y el signo igual.

Por ejemplo, si la red local está organizada como una red plana, sólo se necesita el archivo /etc/hosts. En este ejemplo, el archivo /etc/irs.conf contiene la línea siguiente:

hosts local

Alternativamente, la variable de entorno NSORDER se puede establecer como:

NSORDER=local

Si la red local es una red de dominio que utiliza un servidor de nombres para la resolución de nombres un archivo /etc/hosts para la copia de seguridad, se deben especificar ambos servicios. En este ejemplo, el archivo /etc/irs.conf contiene las líneas siguientes:

hosts dns continue
hosts local

La variable de entorno NSORDER se establece como:

NSORDER=bind,local
Nota: Los valores listados deben estar en minúsculas.

Al seguir cualquier orden de resolución definido o predeterminado, el algoritmo de búsqueda continúa de una resolución a la siguiente sólo si:

  • El servicio actual no está en ejecución, por consiguiente no está disponible.
  • El servicio actual no puede encontrar el nombre y no tiene autoridad.

Si el archivo /etc/resolv.conf no existe, se considera que BIND/DNS no está configurado ni en ejecución y, por consiguiente, no está disponible. Si las subrutinas getdomainname y yp_bind fallan, se considera que el servicio NIS no está configurado ni en ejecución y, por consiguiente, no está disponible. Si no se han podido abrir el archivo /etc/hosts, la búsqueda local es imposible y, por lo tanto, el archivo y el servicio no están disponibles.

Cuando un servicio de lista como con autoridad, significa que este servicio es el experto de los sucesores y tiene todos los nombres y las direcciones pertinentes. Las rutinas de resolución no intentan los servicios sucesores, porque es posible que los sucesores sólo contengan un subconjunto de la información del servicio con autoridad. La resolución de nombres finaliza en el servicio listado como servicio con autoridad, incluso si no encuentra el nombre (en cuyo caso, la rutina de resolución devuelve HOST_NOT_FOUND). Si el servicio con autoridad no está disponible, se consulta el siguiente servicio especificado.

Un origen con autoridad se especifica con la serie =auth directamente después de un valor. Se puede escribir la palabra entera, authoritative, pero sólo se utiliza la serie auth. Por ejemplo, si la variable de entorno NSORDER contiene lo siguiente:

hosts = nis=auth,dns,local

La búsqueda final después de la consulta NIS (si NIS se está ejecutando), independientemente de que se haya encontrado el nombre. Si NIS no se está ejecutando, se consulta el siguiente origen, que es DNS.

Los servidores de nombres TCP/IP utilizan el almacenamiento en antememoria para reducir el coste de la búsqueda de nombres sistemas principales en redes remotas. En lugar de buscar un nombre de nombre de sistema principal cada vez que se realiza una petición, un servidor de nombres busca primero en la antememoria para ver si se ha resuelto recientemente el nombre de sistema principal. Puesto que los nombres de dominio y de sistema principal cambian, cada elemento permanece en la antememoria durante un tiempo limitado especificado por el valor de tiempo de vida (TTL) del registro. De este modo, los servidores de nombres pueden especificar cuánto tiempo esperan que las respuestas se consideren como respuestas con autoridad.