2.5. Resolución de nombres

Cuando enviamos un paquete de datos a un ordenador, es necesario que llegue a su destino. Si usamos su dirección IP no presenta mayor problema, sin embargo los números de 32 bits usados para identificar un equipo no son fáciles de recordar mientras que los ordenadores, como hemos visto en la Sección 2.4.1, suelen tener nombres más intuitivos para el ser humano. La aplicación que se encarga de traducir nombres de máquina a direcciones IP se conoce como Sistema de Resolución de Nombres o DNS (Domain Name System).

En una red pequeña no resultaría difícil mantener una tabla de resolución de nombres almacenada en el fichero /etc/hosts de cada máquina que asociara a cada dirección IP el nombre de esa máquina, sin embargo en toda Internet, fácilmente se comprende que no sería una buena solución, por ello en 1984 se diseñó y adoptó un sistema nuevo también llamado DNS que consiste básicamente en dividir los nombres de máquina en zonas o dominios y delegar en unos servidores de nombres que mantengan toda la información acerca de una zona. Por ejemplo, cuando cursamos una petición o enviamos un paquete de datos para la máquina hispalinux.es el sistema de resolución de nombres interroga a un servidor que mantenga la zona de España (.es) y éste le indicará cúal es la dirección IP que corresponde al ordenador con ese nombre.

Bien, dicho así parece sencillo, aunque en realidad es un sistema bastante complejo y con muchos matices pero que escapan totalmente de nuestros propósitos.

2.5.1. DNS en nuestras máquinas

Todos nuestros equipos van a necesitar resolver nombres de máquinas, tanto para navegar por internet como, tal vez, localmente en nuestra propia red para algunos servicios que tengamos implementados en las máquinas locales.

En el caso local, el fichero responsable de la resolución de nombres es etc/hosts y su estructura es simplemente una tabla conteniendo en cada entrada la dirección IP y el nombre de la máquina. Obviamente no es necesario que es este fichero estén identificados todos los equipos de nuestra intranet, sino solamente aquellos a los que debamos dirigirnos con algún propósito, amén del propio ordenador. Para configurarlo bastará usar cualquier editor de textos y dejarlo de la siguiente manera:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1	dire	localhost.localdomain	localhost
192.168.1.11	dire
192.168.1.1     gato	

Este podría ser el fichero etc/hosts para el ordenador de dirección.

Cuando resolvemos nombres de máquinas en Internet ya no usaremos este fichero[1] sino que ahora, el responsable es el archivo etc/resolv.conf que contendrá las direcciones de nuestros servidores de nombres (DNS) proporcionados por nuestro proveedor de acceso[2] . De nuevo, usando nuestro editor favorito dejaremos el archivo etc/resolv.conf de esta guisa:

nameserver 150.214.3.9
nameserver 150.214.90.11
nameserver 212.59.199.2	

Podemos colocar hasta tres servidores de nombres, en previsión de que alguno de ellos se caiga en un momento dado.

Para aclarar, un poco, cómo funciona este asunto digamos que cuando una de nuestras máquinas necesita resolver un nombre, mira en primer lugar en el fichero etc/hosts y finalmente, si no consigue resolverlo, interroga a las máquinas especificadas en el etc/resolv.conf puesto que así se lo indica el fichero de configuración /etc/nsswitch.conf donde se le especifican los recursos de resolución de nombres en un línea que luce:

hosts:  files nisplus nis dns	

Esta línea instruye a la computadora que, para resolver un nombre debe mirar en etc/hosts en primer lugar, según el parámetro files, después debe usar nisplus o nis caso de que tengamos implementados estos servicios en nuestra red local, y finalmente debe usar el sistema dns de los servidores de nombres.

Notas

[1]

Sería un disparate que nuestro fichero etc/hosts almacenase todas las IP públicas de Internet

[2]

En realidad no es imprescindible usar los DNS de nuestro acceso a Internet, funciona con cualquier servidor de nombres público.