Capítulo 6


Servicio de nombres. Configuración

Como se comentó en el capítulo 2, la red TCP/IP puede utilizar diferentes métodos para convertir nombres en direcciones IP. El mecanismo más simple consiste en almacenar los nombres en una tabla de máquinas en el fichero /etc/hosts. Esto es únicamente interesante en el caso de pequeñas redes de área local que solo requieran la administración de una persona, y que no tengan trafico IP con el mundo exterior. Recordamos que el formato del fichero hosts fue descrito en el capítulo 5.

Alternativamente, puede utilizarse BIND - el servicio de nombres Internet de Berkeley o "Berkeley Internet Name Domain" - para traducir nombres de máquinas a direcciones IP (cosa que también se conoce como resolución). Configurar BIND puede ser una laboriosa tarea pero, una vez hecho, los cambios en la topología de la red serán mucho más fáciles de hacer. En Linux, como en muchos otros sistemas Unix, el servicio de nombres se realiza mediante un programa llamado named. Al iniciarse, carga un conjunto de ficheros maestros en su cache y espera peticiones de procesos locales o remotos. Existen distintas maneras de preparar BIND, y no es necesario ejecutar un servidor de nombres en cada máquina: generalmente, uno para toda la red es suficiente.

 Este capítulo le dará ideas generales acerca de como configurar y ejecutar un servidor de nombres. Si pretende usar BIND en un entorno mas complejo que una pequeña red local (tal vez con conexión a Internet) debería echar un vistazo a un buen libro sobre BIND, como "DNS y BIND" de Cricket Liu (vea [AlbitzLiu92]). Además, le interesará echar un vistazo a los comentarios adicionales que aparecen junto a las fuentes de su versión de BIND. También existe un grupo de news para cuestiones sobre DNS: el grupo comp.protocols.tcp-ip.domains.

6.1 La biblioteca de resolución

6.1.1 El fichero host.conf
6.1.2 Variables de entorno
6.1.3 Configuración del fichero resolv.conf
6.1.4 Robustez del sistema de resolución

6.2 Ejecución de named

6.2.1 El fichero named.boot
6.2.2 Ficheros de base de datos DNS
6.2.3 Escribiendo los ficheros
6.2.4 Comprobación del funcionamiento del servidor de nombres
6.2.5 Otras utilidades interesantes

6.1 La biblioteca de resolución

Cuando hablamos del "sistema de resolución", no nos referiremos a una aplicación en particular, sino a la biblioteca de resolución: un conjunto de funciones que pueden encontrarse en las bibliotecas estándar del lenguaje C. Las rutinas principales son gethostbyname(2) y gethostbyaddr(2), que buscan la dirección IP de una máquina a partir del nombre y viceversa. Es posible configurarlas para que simplemente miren en el fichero hosts local (o remoto, si se usa NIS). Otras aplicaciones, como smail, pueden incluir diferentes rutinas para esto y necesitan cierto cuidado.

 

6.1.1 El fichero host.conf

El fichero host.conf es fundamental para controlar la configuración del sistema de resolución de nombres. Se encuentra en el directorio /etc e indica al sistema de resolución que servicios debe usar y en que orden.

Las opciones del fichero host.conf deben estar en líneas distintas. Los campos deben separarse por blancos (espacios o tabuladores). Un símbolo almohadillado (#) supone desde ese punto hasta el final de la línea un comentario del fichero.

Las opciones disponibles son las siguientes:

order Determina el orden en el que los servicios de resolución se usan. Opciones validas son bind para usar el servidor de nombres, hosts para buscar en /etc/hosts y nis para buscar con NIS. Puede especificarse cualquiera de las anteriores, y el orden de aparición determina que servicio se prueba en primer lugar para intentar resolver el nombre.

multi Va con las opciones on u off. Determina si una máquina del fichero /etc/hosts puede tener distintas direcciones IP o no. Esta opción no tiene efecto en peticiones vía NIS o DNS.

nospoof Como se explicó en el capítulo anterior, DNS le permite encontrar un nombre de máquina perteneciente a una dirección IP dada utilizando el dominio in-addr.arpa. Los intentos de los servidores de nombres de proporcionar un nombre falso se conocen en inglés como "spoofing"1. Para evitar esto, el sistema puede configurarse para comprobar si las direcciones IP originales están de hecho asociadas con el nombre obtenido. Si no, el nombre será rechazado y se retornará un error. Esta opción se activa poniendo nospoof on.

_____________________________________________
1 N. del T.: literalmente, burla

 

alert Esta opción puede ir con las palabras on u off. Si se activa, cualquier intento de dar nombre falso será anotado con un mensaje enviado al sistema de registros syslog.

trim Esta opción lleva un nombre de dominio como argumento, que se quitará a los nombres antes de buscar su dirección. Es útil para las entradas del fichero hosts, que podrán así ir solos los nombres de máquinas, sin el dominio.

Cuando se busque una máquina con el nombre de dominio local éste será eliminado, haciendo que la búsqueda en el fichero /etc/hosts tenga éxito. Esta opción puede ir repetida con varios dominios, de modo que su máquina podría ser local a diversos dominios.

Un ejemplo de este fichero para la máquina vlager seria:

# /etc/host.conf
# Tenemos servidor de nombres, pero no NIS (de momento)
order bind hosts
# Permitir multiples direcciones
multi on
# Contra los nombres falsos
nospoof on
# Dominio local por defecto (no necesario).
trim vbrew.com.

 

6.1.2 Variables de entorno

Existen algunas variables de entorno que establecen opciones que tienen mas prioridad sobre las puestas en el fichero host.conf. Estas son:

RESOLV_HOST_CONF
Especifica un fichero alternativo a /etc/host.conf.

RESOLV_SERV_ORDER
Establece la opción equivalente a la orden order del fichero anterior. Los servicios pueden ser hosts, bind y/o nis, separados por comas, espacios, puntos o puntos y coma.

RESOLV_SPOOF_CHECK
Determina la política seguida frente a los nombres falsos. Estará completamente desactivada con la opción off. Con las opciones warn y warn off se realizarán comprobaciones contra los nombres falsos, pero en el primer caso se mandarán los avisos al registro. Un valor * activa las comprobaciones contra nombres falsos, pero las anotaciones en el registro se dejan como diga el fichero host.conf.

RESOLV_MULTI
El valor on activa la opción "multi", y el valor off la desactiva.

RESOLV_OVERRIDE_TRIM_DOMAINS
Esta variable lleva una lista de dominios por defecto, similar a la puesta en el fichero host.conf con la opción trim.

RESOLV_ADD_TRIM_DOMAINS
Esta variable lleva una lista de dominios por defecto que se añade a las que se dan en el fichero host.conf.

 

6.1.3 Configuración del fichero resolv.conf

Cuando se configura la librería de resolución para utilizar los servicios de BIND, tiene que indicarse también que servidores utilizar. El fichero resolv.conf contiene una lista de servidores, que si está vacía hará considerar al sistema que el servidor está en su máquina.

Si ejecuta un servidor de nombres en su máquina local, tendrá que configurarlo por separado, como se explicará después. Si se encuentra en una red local y puede usar un servidor de nombres existente, mejor.

La opción más importante del fichero resolv.conf es nameserver, que tiene la dirección IP del servidor de nombres a usar. Si especifican varios servidores poniendo varias líneas nameserver, se intentarán usar en el orden dado; por lo que debería poner en primer lugar el servidor de nombres más rápido o cercano. Actualmente, puede ponerse un máximo de tres servidores distintos.

Si no hay ninguna línea nameserver, se intentará buscar el servidor en la propia máquina local.

Hay dos opciones más: domain y search, indicando la primera dominios alternativos a probar si la búsqueda inicial del nombre falla. Estos dominios irán separados por blancos o tabuladores.

Si no se incluye una opción search, se construirá una lista de búsqueda por defecto por el dominio local mas todos los dominios padre hasta el raíz. El dominio local puede darse con la opción domain, y si no se da ninguno el sistema de resolución lo obtendrá mediante la llamada al sistema getdomainname(2).

Como lo anterior puede resultar confuso, sea el siguiente ejemplo de fichero resolv.conf para la Cervecera Virtual:

# /etc/resolv.conf
# Nuestro dominio
domain vbrew.com
#
# Nuestro servidor principal va a ser vlager:
nameserver 191.72.1.1

 

Cuando se trate de traducir el nombre vale, el sistema empezará por buscar directamente vale y si falla, probará con vale.vbrew.com y finalmente vale.com.

 

6.1.4 Robustez del sistema de resolución

Si tiene en funcionamiento una red local dentro de otra más grande, deberá usar servidores de nombres principales siempre que sea posible. La ventaja de hacerlo así es que se consiguen generosas memorias cache, ya que todas las peticiones de nombres les llegan a ellos. Este esquema, sin embargo, tiene un inconveniente: cuando un incendio inutilizó el cable de red dorsal de nuestro departamento en la Universidad, no pudimos trabajar, pues ninguno de los servidores de nombres estaban accesibles. No funcionaban ni los terminales X ni las impresoras...

Aunque no es muy habitual que las redes dorsales de las universidades sean pasto de las llamas, deberían tomarse precauciones para casos como éste.

Una solución es poner un servidor de nombres local que se ocupe de sus nombres locales, y reenvíe todas las peticiones de otros nombres a los servidores principales. Por supuesto, ésto solo es posible si usted tiene un dominio propio.

Alternativamente, puede mantener una copia de la tabla de nombres para su dominio o red local en el fichero /etc/hosts. En el fichero /etc/host.conf deberá incluir la opción "order bind hosts" para obligar a usar el fichero local si el servidor principal de nombres falla.

 

6.2 Ejecución de named

El programa que proporciona servicio de nombres en las máquinas UNIX suele ser named 2. Es un servidor desarrollado inicialmente para Unix tipo BSD, con el propósito de proporcionar servicio de nombres a máquinas clientes y posiblemente a otros servidores de nombres.

La versión actualmente utilizada en casi todos los sistemas Linux es BIND-4.8.3. La nueva versión, BIND-4.9.3, esta en este momento en versión Beta, y pronto estará disponible para Linux.

_____________________________________________
2 N. del T.: Pronúnciese neim-di:

 

Esta sección requiere ideas acerca de como funciona el Sistema de Nombres y Dominios (DNS). Si lo que sigue a continuación le suena a chino, puede releer el capítulo 2, que le dará información acerca de como funciona básicamente el DNS.

El programa named suele iniciarse al arrancar la máquina, y ejecutarse hasta que se apaga. Obtiene la información que necesita de un fichero llamado /etc/named.boot, y diversos ficheros que contienen datos acerca de nombres de dominio y direcciones, llamados ficheros de zona. Los formatos y semántica de estos ficheros serán explicados en la siguiente sección.

Para ejecutar named, solo tiene que teclear:

# /usr/sbin/named

El programa named se iniciará y leerá el fichero named.boot y los ficheros de zona que se especifiquen en él. Su número de proceso será anotado en ASCII en el fichero /var/run/named.pid, recibirá ficheros de zona de los servidores principales si es necesario y comenzará a escuchar las peticiones de DNS por el puerto 53.3

 

6.2.1 El fichero named.boot

El fichero named.boot suele ser muy pequeño y contiene punteros a ficheros con información de zonas y a otros servidores de nombres. Los comentarios en este fichero comienzan con un punto y coma y se extienden hasta el siguiente fin de línea. Antes de que veamos con más detalle el formato de este fichero, observaremos el ejemplo para la máquina vlager dado en la figura 6.1.4

Los comandos cache y primary sirven para cargar información en named. Esta información se obtiene de los ficheros especificados en el segundo argumento. Contienen representaciones textuales de los registros DNS, que veremos a continuación.

En este ejemplo, se configura named como el servidor de nombres principal para tres dominios: los que se indican con el comando primary. La primera línea dice que named actúe como servidor principal para vbrew.com, tomando la información de zona del fichero named.hosts. El comando directory dice que todos los ficheros de zona se encuentran en el directorio indicado.

_____________________________________________
3 Hay varios binarios de named disponibles en los servidores de FTP, cada uno configurado de forma diferente. Algunos anotan su fichero de número de proceso en el directorio /etc/, otros en /tmp y otros en /var/tmp.
4 Observar que los nombres de dominio del ejemplo se dan sin el punto final. Versiones anteriores del programa named parece que traten los puntos al final como errores y sin avisar descartan la línea afectada. En la versión BIND-4.9.3 se intenta arreglar este tema.

 

;
; Fichero /etc/named.boot para vlager.vbrew.com
;
directory /var/named
;
; dominio fichero
;---------------------------------------------------
cache . named.ca
primary vbrew.com named.hosts
primary 0.0.127.in-addr.arpa named.local
primary 72.191.in-addr.arpa named.rev

Figura 6.1: El fichero named.boot para vlager.

La entrada iniciada con la palabra cache es muy especial y debe estar presente en casi todas las máquinas que ejecuten un servidor de nombres. Su función es doble: indica a named que active su cache, y también que cargue la información de los servidores raíz del fichero indicado (en este caso, named.ca). Regresaremos a este concepto más tarde.

A continuación se presenta una lista de las opciones más importantes que podemos poner en el fichero named.boot:

directory Especifica un directorio donde estén los ficheros de zona. Pueden ponerse varios directorios repitiendo el comando directory. De acuerdo con el estándar de sistema de ficheros para Linux, el directorio debería ser /var/named.

primary Los argumentos que lleva son un nombre de dominio y un nombre de fichero , declarando el servidor local primario para el dominio de named. Como servidor primario, named carga la información de zona del fichero dado.
Normalmente, siempre habrá por lo menos un comando primary en cada fichero named.boot, para traducción inversa del IP 127.0.0.1, que es el interface de bucle o "loopback", como ya sabemos.

secondary Esta sentencia tiene como parámetros un nombre de dominio, una lista de direcciones y un nombre de fichero. Declara el servidor local como servidor maestro secundario para el dominio indicado. Un servidor secundario mantiene también información "autorizada" como el primario, pero en lugar de obtenerla de un fichero, la intenta obtener de un servidor primario. Debe proporcionarse al menos una dirección IP de servidor primario en la lista de direcciones. El servidor local irá contactando con cada uno de ellos hasta que transfiera con éxito la base datos de zona, que será almacenada en el fichero de respaldo (copia de seguridad o backup) dado en el tercer argumento del comando. Si ninguno de los servidores primarios responde, se obtendrá la información de zona del fichero de respaldo.

named intentará entonces refrescar los datos almacenados regularmente. Esto se explica después cuando se vean las entradas "SOA" de los ficheros.

cache Tiene como argumentos un dominio y un nombre de fichero. Contiene la lista de servidores de nombres raíz. Solo se reconocerán registros NS y A. El argumento domain es normalmente el nombre del dominio raíz ("."). Esta información es fundamental: si el comando cache no existiera, named no haría una cache local. Esto degradaría de forma importante el rendimiento e incrementaría la carga de la red si los nombres que se buscan no están en la red local. Además, named tampoco será capaz de contactar con cualquier servidor de nombres raíz, y por ello, no podrá resolver ninguna dirección excepto aquellas para las que esté autorizado. Una excepción a esta regla, ocurre cuando se usan servidores redirigidos (con la opción forwarders explicada a continuación).

forwarders Esta opción lleva una lista de direcciones como argumento. Las direcciones IP en la lista especifican servidores de nombres a los que named puede preguntar si falla una traducción de un nombre mediante su cache local. Se intenta preguntar a todos en orden hasta que uno de ellos responda.

slave Esta opción hace que el servidor sea esclavo. Esto significa que nunca realizara consultas recursivas, sino que las redirigirá a los servidores especificados con forwarders.

Hay dos opciones adicionales que no vamos a describir: sortlist y domain. Además, hay dos directivas que pueden aparecer en los ficheros de zona. Son $INCLUDE y $ORIGIN, que tampoco vamos a describir, ya que raramente se utilizan.

 

6.2.2 Ficheros de base de datos DNS

Los ficheros incluidos con named, como named.hosts, siempre tienen un dominio asociado a ellos llamado origen. Este es el nombre de dominio especificado con los comandos cache y primary. En un fichero maestro, se pueden especificar nombres de máquinas y dominios relativos a este dominio. Un nombre dado en un fichero de configuración se considera absoluto si termina con un punto. En caso contrario se considera relativo al origen. Al origen en sí mismo nos podemos referir con "@".

Todos los datos en un fichero principal se dividen en registros de recursos o RRs. Son la unidad de información del DNS. Cada RR tiene un tipo. Los registros de tipo A, por ejemplo, asocian un nombre a una dirección IP. Los registros de tipo CNAME asocian un alias de una máquina con su nombre oficial. Como ejemplo, obsérvese la figura 6.3 de la página 96, que muestra el fichero named.hosts para nuestro sistema.

La representación de los RRs en los ficheros utiliza el siguiente formato:

[domain] [ttl] [class] type rdata

Los campos se separan por espacios o tabulaciones. Una entrada puede continuarse en varias líneas si se abre un paréntesis antes del primer fin de línea y el último campo es seguido de un cierre de paréntesis. Cualquier cosa entre un punto y coma y el siguiente salto de línea será un comentario.

domain Aquí va el nombre del dominio que se aplica al RR actual. Si no se da nombre de dominio, se asume el mismo que se puso para el RR anterior.

ttl Con el fin de forzar al sistema DNS a descartar información después de cierto tiempo, cada RR lleva asociado un "tiempo de vida" o ttl 5. El campo ttl especifica, en segundos, el tiempo de validez de la información desde que se obtiene del servidor. Es un número decimal de hasta ocho dígitos. Si no se especifica ningún valor, tomará uno por defecto del campo minimum del registro SOA precedente.

class Aquí se indica la clase de dirección: IN para direcciones IP, HS para objetos de la clase Hesiod. Trabajando con redes TCP/IP debe usarse siempre la clase IN. Si no se especifica ningún valor, se toma el valor del RR anterior.

type Describe el tipo de RR. Los tipos habituales son A, SOA, PTR y NS. En las siguientes secciones comentaremos estos tipos de RRs.

rdata Contiene los datos asociados al RR. El formato depende del tipo, y se describirán mas adelante.

_____________________________________________
5 N. del T.: Time to Live

 

A continuación se presenta una lista incompleta de RRs que se utilizan en los ficheros de DNS. Hay algunos mas que no vamos a comentar. Son experimentales, y de escaso uso.

SOA Describe una zona de autoridad (SOA significa "Start of Authority", es decir, "Comienzo de Autoridad"). Señala que los registros siguientes contienen información "autorizada" para el dominio. Cada fichero incluido en la opción primary debe tener un registro SOA para esta zona. Los datos asociados contienen los siguientes campos:

origin Nombre canónico del servidor de nombres primario para este dominio. Se suele dar como nombre absoluto.

contact Dirección de correo electrónico de la persona responsable de mantener el dominio, reemplazando el carácter '@' por un punto. Por ejemplo, si el responsable de nuestra red fuese janet, este campo contendrá: janet.vbrew.com.

serial Este es el número de versión del fichero de zona, expresado con un número decimal. Cuando se cambien datos del fichero, deberá incrementarse este número. El número de versión es utilizado por los servidores secundarios para saber cuando la información de una zona ha cambiado. Para mantenerse actualizados, los servidores secundarios piden cada cierto tiempo el registro SOA del primario, y comparan el número de versión con el que tienen en la cache. Si ha cambiado, el servidor secundario pedirá de nuevo la información de zona al primario.

refresh Especifica el intervalo, en segundos, que esperan los servidores secundarios entre peticiones de registros SOA a los primarios. De nuevo, se trata de un número decimal de hasta ocho dígitos. Normalmente, la topología de la red no cambia mucho, con lo que este número será como poco de un día para grandes redes, y de mucho más tiempo para redes pequeñas.

retry Este número determina los intervalos de tiempo entre reintentos de comunicación con servidores primarios cuando una petición de una zona falla. No debe ser pequeño ya que un fallo temporal del servidor primario hará que el secundario cargue inútilmente la red. Buenas elecciones son una hora o como poco media hora.

expire Especifica el tiempo, en segundos, que tardará el servidor en descartar los datos de zona si no ha podido contactar con el servidor primario. Normalmente será grande. Así, Craig Hunt ([Hunt92]) recomienda 42 días.

minimum Valor por defecto para el valor del ttl en los registros de recursos que no lo especifiquen. Sirve para indicar a otros servidores de nombres que descarten el RR tras cierto tiempo. No tiene efecto, sin embargo, sobre el tiempo en el que un servidor secundario intenta actualizar la información de zona. El valor de minimum debe ser grande, en especial para redes locales con tipologías poco cambiantes. Una buena elección puede ser de una semana o un mes. En el caso de que haya registros RR que cambien con frecuencia, siempre podrá asignarle valores particulares de ttl.

A Asocia direcciones IP con nombres. El campo de datos contiene la dirección separando los octetos por puntos, como es habitual. Para cada máquina solo puede haber un registro A, que se considera nombre oficial o canónico. Cualquier otro nombre será un alias y debe ser incluido con registros CNAME.

NS Apunta a un servidor de nombres maestro de una zona subordinada. Vea la sección 2.6 para obtener información de por qué es necesario. El campo de datos contiene el nombre del servidor. Para traducir ese nombre debe proporcionarse un registro A adicional, que se conoce como glue record, al proporcionar la dirección IP del servidor.

CNAME Asocia un alias con su nombre canónico. El nombre canónico se determina con un registro A. Los alias son indicados mediante registros CNAME.

PTR Se usa para asociar nombres del dominio in-addr.arpa con sus nombres normales. Se usa para obtener nombres a partir de direcciones IP (traducción inversa). El nombre de la máquina debe ser el canónico.

MX Especifica el servidor de correo para un dominio. En la sección "Encaminado de correo en la Internet" del capítulo 13 se explica por que son necesarios estos servidores. La sintaxis del registro MX es:

[domain] [ttl] [class] MX preference host

host es el nombre del servidor de correo para el dominio domain . Cada servidor tiene un valor entero de preferencia (preference) asociado. Un agente de transporte de correo que desee entregar mensajes al dominio indicado en domain lo intentará con los servidores de estos registros hasta que uno responda. Se empieza probando con los de menor preferencia.

HINFO Este registro da información sobre el hardware y el software de la máquina.
Su sintaxis es:

[domain] [ttl] [class] HINFO hardware software

El campo hardware identifica el hardware utilizado. Existe un conjunto de convenciones sobre esto, el cual puede verse en el RFC 1340. Si el campo contiene blancos, debe encerrarse entre comillas dobles. El campo software especifica el software utilizado, para el que también existen convenciones en el mismo documento RFC.

 

6.2.3 Escribiendo los ficheros

Las figuras 6.2, 6.3, 6.4, y 6.5 son ejemplos de ficheros para un servidor de nombres en nuestra red ejemplo, localizado en la máquina vlager. El ejemplo es sencillo dada la simplicidad de nuestra red. Si tiene requisitos mas complejos, léase el libro "DNS and BIND" de Cricket Liu y Paul Albitz ([AlbitzLiu92]).

El fichero named.ca mostrado en la figura 6.2 da ejemplos de registros de servidores raíz.

Un fichero de cache típico suele tener información sobre una docena de servidores. Puede obtener la lista de servidores del dominio raíz mediante el programa nslookup descrito mas adelante.6

;
; /var/named/named.ca Fichero de cache.
; No estamos en Internet, luego no necesitamos
; servidores raiz. Elimine los puntos y coma
; si desea activarlos.
;

; . 99999999 IN NS NS.NIC.DDN.MIL
; NS.NIC.DDN.MIL 99999999 IN A 26.3.0.103
; . 99999999 IN NS NS.NASA.GOV
; NS.NASA.GOV 99999999 IN A 128.102.16.10

Figura 6.2: Fichero named.ca.

_____________________________________________
6 Esto no podrá hacerlo si no ha especificado algún servidor raíz. Puede en cambio ejecutar nslookup con un servidor diferente del suyo, o usar el fichero de ejemplo de la figura 6.2 y entonces obtener una lista de servidores validos.

 

;
; /var/named/named.hosts Maquinas locales en nuestra red
; El origen es vbrew.com
;
@ IN SOA vlager.vbrew.com. (
janet.vbrew.com.
16 ; serial
86400 ; refresco: una vez al dia
3600 ; reintentos: una hora
3600000 ; expiracion: 42 días
604800 ; minimo: 1 semana )
IN NS vlager.vbrew.com.
;
; el correo local se distribuye en vlager
IN MX 10 vlager
;
; dirección de loopback
localhost. IN A 127.0.0.1
; Nuestra ethernet
vlager IN A 191.72.1.1
vlager-if1 IN CNAME vlager
; vlager es tambien un servidor de USENET news
news IN CNAME vlager
vstout IN A 191.72.1.2
vale IN A 191.72.1.3
; Otra Ethernet
vlager-if2 IN A 191.72.2.1
vbardolino IN A 191.72.2.2
vchianti IN A 191.72.2.3
vbeaujolais IN A 191.72.2.4

Figura 6.3: Fichero named.hosts.

 

;
; /var/named/named.local Traduccion inversa para 127.0.0
; El origen es 0.0.127.in-addr.arpa.
;
@ IN SOA vlager.vbrew.com. (
joe.vbrew.com.
1 ; serial
360000 ; refresco: 100 horas
3600 ; reintento: 1 hora
3600000 ; expiracion: 42 días
360000 ; minimo: 100 horas )
IN NS vlager.vbrew.com.
1 IN PTR localhost.

Figura 6.4: Fichero named.local.

 

;
; /var/named/named.rev Traducción inversa de nuestros numeros IP
; El origen es 72.191.in-addr.arpa.
;
@ IN SOA vlager.vbrew.com. (
joe.vbrew.com.
16 ; serial
86400 ; refresco: una vez al dia
3600 ; reintento: una hora
3600000 ; expiracion: 42 días
604800 ; minimo: 1 semana )
IN NS vlager.vbrew.com.
; nuestra red
1.1 IN PTR vlager.vbrew.com.
2.1 IN PTR vstout.vbrew.com.
3.1 IN PTR vale.vbrew.com.
; la otra red
1.2 IN PTR vlager-if1.vbrew.com.
2.2 IN PTR vbardolino.vbrew.com.
3.2 IN PTR vchianti.vbrew.com.
4.2 IN PTR vbeaujolais.vbrew.com.

Figura 6.5: Fichero named.rev.

 

6.2.4 Comprobación del funcionamiento del servidor de nombres

Existe una utilidad que resulta interesante para comprobar el funcionamiento del servidor de nombres recién configurado. Se llama nslookup, y puede usarse tanto interactivamente como desde la línea de comandos. En el último caso, se invoca simplemente como:

nslookup nombre

y pedirá el nombre indicado al servidor de nombres que aparezca en resolv.conf (si aparece mas de uno, nslookup cogerá uno al azar).

El modo interactivo, sin embargo, es mucho más interesante. Además de buscar máquinas por su nombre, se puede también preguntar por cualquier registro DNS, y transferir la información de zona completa de un dominio.

Cuando se invoca sin argumentos, nslookup mostrará el servidor de nombres en uso y entrará en modo interactivo. En el prompt '>' que se mostrará, puede teclear cualquier nombre de dominio por el que quiera preguntar. Por defecto, preguntará por registros de tipo A, es decir, aquellos que dan una dirección IP correspondiente al dominio introducido.

Esto se puede cambiar tecleando "set type=tipo", donde tipo es un nombre de registro de recurso (RR) como los descritos antes (en la sección 6.2) o bien la palabra ANY.

Por ejemplo, ésta puede ser una sesión con nslookup:

$ nslookup
Default Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60

> sunsite.unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60

Non-authoritative answer:
Name: sunsite.unc.edu
Address: 152.2.22.81

Si intenta preguntar por un nombre que no tiene dirección IP asociada, pero se encuentran otros registros relacionados en el DNS, el programa responderá con un error "No type A records found" (no se encontraron registros de tipo A). Sin embargo, puede hacer preguntas para otro tipo de registros sin mas que usar el comando "set type". Por ejemplo, para obtener el registro SOA de unc.edu, podría escribir lo siguiente:

> unc.edu
*** No address (A) records available for unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60

> set type=SOA
> unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60

Non-authoritative answer:
unc.edu
origin = ns.unc.edu
mail addr = shava.ns.unc.edu
serial = 930408
refresh = 28800 (8 hours)
retry = 3600 (1 hour)
expire = 1209600 (14 days)
minimum ttl = 86400 (1 day)

Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30

De manera similar, se pueden pedir registros MX, etc. Y mediante la palabra ANY se obtendrán todos los RR asociados al nombre escrito.

> set type=MX
> unc.edu
Non-authoritative answer:
unc.edu preference = 10, mail exchanger = lambada.oit.unc.edu
lambada.oit.unc.edu internet address = 152.2.22.80

Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30

 

Una aplicación práctica de nslookup para la depuración es obtener la lista de servidores raíz para el fichero named.ca. Esto puede hacerse pidiendo todos los registros NS asociados al dominio raíz:

> set type=NS
> .
Name Server: fb0430.mathematik.th-darmstadt.de
Address: 130.83.2.30

Non-authoritative answer:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL

Authoritative answers can be found from:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
NS.INTERNIC.NET internet address = 198.41.0.4
AOS.ARL.ARMY.MIL internet address = 128.63.4.82
AOS.ARL.ARMY.MIL internet address = 192.5.25.82
AOS.ARL.ARMY.MIL internet address = 26.3.0.29
C.NYSER.NET internet address = 192.33.4.12
TERP.UMD.EDU internet address = 128.8.10.90
NS.NASA.GOV internet address = 128.102.16.10
NS.NASA.GOV internet address = 192.52.195.10
NS.NASA.GOV internet address = 45.13.10.121
NIC.NORDU.NET internet address = 192.36.148.17
NS.NIC.DDN.MIL internet address = 192.112.36.4

El conjunto completo de comandos disponibles en nslookup puede obtenerse con la orden interna help.

 

6.2.5 Otras utilidades interesantes

Hay algunas utilidades que pueden ayudarle en sus tareas de administrador de BIND. Describiremos dos de ellas. Por favor, eche un vistazo a la documentación que traen para saber como utilizarlas.

La utilidad hostcvt sirve para obtener una configuración inicial de BIND a partir del fichero /etc/hosts. Genera tanto los ficheros de traducción directa (registros A) como los de traducción inversa (registros PTR) teniendo cuidado con los nombres de alias y otros. Por supuesto, no hará todo el trabajo, pues aun puede que necesite ajustar los registros SOA o añadir registros MX. Suponemos que también le ayudará tener cerca algunas aspirinas. El programa hostcvt forma parte de las fuentes de BIND, pero puede obtenerse por separado en algunos servidores FTP dedicados a Linux.

Después de configurar el servidor de nombres, puede que desee comprobar el resultado. La aplicación ideal para ésto (al menos para mí) es el programa dnswalk, un paquete basado en perl que navega por la base de datos DNS, buscando errores habituales y verificando que la información es consistente. El programa dnswalk ha sido enviado recientemente al grupo comp.sources.misc de News, y debería estar en los servidores FTP que archiven este grupo (un servidor que seguro que lo tiene es ftp.uu.net).