BIND, DNS Server

BIND DNS es un sistema cliente/servidor. El cliente se llama ‘resolvedor’ (resolver , en Ingl茅s), y formula peticiones y env铆a al servidor de dominios. Cada equipo de la red corre un resolvedor. De hecho, muchos sistemas s贸lo ejecutan el resolvedor.

Tradicionalmente, el resolvedor BIND no es aplicado como un proceso (que suba con el sistema). Es una biblioteca (o librer铆a, como deseen llamarle) de rutinas de software, llamado el c贸digo de resoluci贸n, que est谩 vinculada a cualquier programa que requiera de servicio de nombres. La mayor铆a sistemas Linux usan la implementacion tradicional de resoluci贸n, que se denomina ‘stub resolver’. Ya que es el m谩s ampliamente usado, es al que le daremos cobertura en este art铆culo.

El lado servidor de BIND responde las peticiones que vienen del resolvedor.
El nombre del daemon es un proceso que se llama named. La configuraci贸n de named es mucho m谩s compleja que la configuraci贸n del resolvedor; pero no hay necesidad de correr named en cada equipo.

Debido a que todos los ordenadores de tu red -ya sean clientes o servidores- ejecutan el resolvedor, comenzaremos la configuraci贸n de DNS con la configuraci贸n del resolvedor.

Los Comandos de Configuracion Del Resolvedor (resolver)

El resolvedor de Linux est谩 configurado por dos tipos de archivos. Un tipo le dice al resolvedor qu茅 servidores de nombres de dominio va a utilizar y en qu茅 orden. Eso lo discutiremos m谩s adelante.

El otro archivo de configuraci贸n, /etc/resolv.conf, configura al resolvedor para su interacci贸n con el Sistema de Nombres de Dominio (Domain Name System). Cada vez que un programa que utiliza el resolvedor inicializa, lee el fichero /etc/resolv.conf, y guarda en cache la configuraci贸n de dicho archivo, durante el lapso de vida del proceso.

Es decir, por ejemplo; en el momento que levantas Sendmail, este leer谩 el fichero /etc/resolv.conf y trabajar谩 con esa informaci贸n durante el tiempo de vida de ese proceso (hasta que finalice de alguna forma). Si le haces algun cambio a /etc/resolv.conf, tendr谩s que reinicializar Sendmail para que los cambios surtan efecto.

Si no se encuentra el fichero /etc/resolv.conf, una configuraci贸n por default ser谩 utilizada.

La configuraci贸n por default utiliza al sistema local como el servidor de nombres. Esto quiere decir que debes ejecutar named si no crear谩s un fichero /etc/resolv.conf. Generalmente, es recomendable crear un fichero resolv.conf, incluso si no est谩s corriendo named en el host local (Este fichero se crea cuando configuramos la red utilizando netconfig en Slackware, si no lo ves, crealo… no duele).

Hay tres razones principales por lo cual deber铆as crearlo:

Primero, el fichero resolv.conf provee los medios para documentar la configuraci贸n en tu sistema; es decir, cualquiera puede ver el fichero y saber la configuraci贸n que has utilizado para tu sistema.

Segundo, los valores por default que funcionan en una versi贸n de BIND, pueden cambiar en una futura versi贸n.

Y tercero, a煤n cuando est茅s utilizando tu m谩quina local como servidor de nombres, el fichero resolv.conf te permite configurar servidores de respaldo para incrementar la robustez.

Los Comandos de Configuraci贸n del Resolvedor

BIND 9 (quien comenz贸 a ser incluido en los tiempos de Red Hat 7.2) utiliza los mismos ficheros de configuraci贸n que BIND 8. El fichero resolv.conf es un fichero de texto que puede contener la siguiente informaci贸n:

nameserver direccion-IP

El comando nameserver define el la direcci贸n IP de un servidor de nombres que deber铆a utilizar el resolvedor. Los servidores son consultados en el orden que aparezcan en el fichero hasta que sea recibida una respuesta o se acabe el tiempo de espera. Por lo general el primer servidor de nombres responde la consulta. La 煤nica vez cuando el segundo servidor es consultado es cuando el primero no responde o est谩 fuera de l铆nea. El tercer servidor 煤nicamente responder谩 las consultas si los primeros dos fallan. Si no se encuentra ning煤n servidor de dominios en el fichero resolv.conf, el servidor de nombres corriendo en el servidor local es utilizado (En caso de que est茅s corriendo uno, obviamente).

domain nombre-de-dominio

El comando domain define el dominio local. El dominio local es utilizado para expandir el nombre de host en una consulta antes de ser enviado al servidor de nombres. Si el comando domain no es utilizado, los valores indicados en el comando search son utilizados. Ahora bien, si ninguno de los dos comandos son indicados en el fichero resolv.conf, el valor derivado del comando hostname es utilizado. Sin importar como sea seteado el valor del dominio local, podr谩 ser sobreescrito por cualquier individuo si setea la variable de entorno LOCALDOMAIN.

search lista-de-busqueda

El comando search define una lista de dominios que son utilizados para expandir un nombre de host antes de que se envie la consulta al servidor de nombres. lista-de-busqueda contiene un maximo de seis nombres de dominios, separados por espacio en blanco. La busqueda se hace en cada dominio especificado en la lista hasta que la consulta sea contestada. A diferencia del comando domain, el cual crea una lista de busquedas por defecto la cual contiene unicamente el dominio local, el comando search crea una lista explicita conteniendo cada dominio especificado en la lista-de-busqueda.

options opcion

La opcion options modifica el comportamiento estandard del resolvedor. Hay diferentes opciones diponibles para BIND:

debug

Enciende el depurador. Cuando la opcion debug es indicada, el resolvedor imprime mensajes de depuracion a la salida estandard. Estos mensajes son bastante informativos para depurar problemas del resolvedor o del servidor, pero la verdad es que esta opcion es de valor marginal. Encender el depurador en la configuracion basica del resolvedor produce demasiada informacion de salida, en tiempo inapropiado.

ndots:n

Define el numero de puntos (‘.’) que indican cuando el resolvedor deberia adjuntar valores extraidos de la lista-de-busqueda al nombre de host antes de enviar la primera consulta al servidor de nombres. Por defecto el resolvedor no modificara un nombre de host si este contiene un punto ‘.’
驴Que es lo que intento decir? (porque imagino que algunos podrian estar confundidos con lo antes dicho)

Por ejemplo, si este fuera mi resolv.conf:

search eslackware.com slackware-es.com # Estos dos dominios constituyen
                                       # mi lista-de-busqueda

nameserver 208.67.222.222              # Servidor de nombres primario
nameserver 208.67.220.220              # Servidor de nombres secundario
options ndots:1

Y este fuera mi /etc/hosts:

127.0.0.1 localhost
10.0.0.204 pbx pbx
10.0.0.202 slackbox.ejemplo.com slackbox
10.0.0.44 agonzalez.ejemplo.com agonzalez
10.0.0.111 ylaborda.ejemplo.com ylaborda
10.0.0.76 jrobinsonc.ejemplo.com jrobinsonc

La opcion ‘ndots:2′ en mi resolv.conf le esta diciendo al resolvedor que use mi lista de busqueda (los dominios (la que le indique mediante ‘search‘) antes de intentar enviar la primera consulta al primer servidor de nombres, para todos los nombres de host que tengan menos de dos puntos (‘.’). De modo que lo que hara es ver si existe pbx.eslackware.com o pbx.slackware-es.com antes de preguntarle al primer servidor de nombres.

En caso de yo hacer ping a ‘agonzales.ejemplo.com’, como este registro contiene una cantidad igual al valor minimo de puntos (‘.’), la consulta se envia directamente al primer servidor de nombres.

Realmente esta opcion solo te seria de utilidad si algun componente de tu dominio podria confundir a un top-level domain, y tienes usuarios que consecuentemente suelen truncar (acortar, para los indoctos :P , broma) los nombres de dominio. Entonces cuando alguien escriba el hostname de un equipo en tu dominio, resulta que la consulta seria primero enviada a los servidores raiz, para que estos luego hagan referencia a tu servidor de nombres (horrible, no?).

timeout:n

Indica la cantidad de tiempo que el resolvedor esperara una respuesta del servidor de nombres antes de reintentar la consulta a travez de un servidorde nombrs diferente.

attempts:n

Define el numero de veces que el resolvedor reintentara una consulta. El valor por defecto es 2, lo que quiere decir que el resolvedor reintentara una consulta dos veces con cada servidor de nombres antes de retornar un error a la aplicacion.

rotate

Enciende el round-robin (seleccion en orden recursivo) de servidores de nombres. Normalmente el resolvedor envia la consulta al primer servidor en la lista, y unicamente envia la consulta al segundo servidor si el primero ha fallado. Tradicionalmente el segundo y tercer servidor de nombres fueron definidos para proveer servidores de nombres de respaldo. Estos no fueron concebidos para proveer balance de carga. La opcion rotate configura al resolvedor para compartir la carga de servidores de nombres de manera equilibrada sobre todos los servidores.

no-check-names

Deshabilita el chequeo de nombres de dominio con respecto al RFC 952, “DOD Internet Host Table Specification.”. (Para los que no lo sabian, RFC = Request For Comments, son documentos que describen estandares de como deben hacerse las cosas en internet, mas o menos).

Por defecto, los nombres de dominio que contienen un subrayado (underscore ‘_’), caracteres no-ASCII, o caracteres ASCII de control, son considerados como error. Usa esta opcion para trabajar con hombres de host que contengan subrayado.

inet6

Esto produce que el resolvedor intente resolver IP’s del protocolo IPv6. La version del protocolo de internet que usamos actualmente es IPv4.
Usa esta opcion si te estas conectando a una red IPv6 experimental.

sortlist lista-de-direcciones

El comando sortlist define una lista de redes que son preferidas sobre otras. La lista-de-direcciones es una lista de pares de direcciones y mascaras (por ejemplo, 66.128.63.0/255.255.255.0).
驴Para que te seria util esto?, bueno, Imagina que el nombre mp3local.com tenga mas de una direccion asignada a el, y que conoces cual de las dos direcciones tiene una red superior a la otra (mas rapida, menos latencia, lo que sea), pues con esta opcion puedes indicarle al resolvedor que a la hora de hacer una peticion a mp3local.com, tenga preferencia por la red que le indiques en lista-de-direcciones sobre otras las otras.

Consideraciones y Notas finales:

i. Las opciones domain y search son mutuamente excluyentes (o sea, o usas una, o usas la otra; NO las dos). Si mas de una de estas opciones es encontrada, la ultima prevalecera sobre la otra.

ii. La opcion search del fichero resolv.conf de un sistema puede ser sobreescrito a raiz de la ejecucion de un proceso al setear la variable de entorno ‘LOCALDOMAIN’ con una lista separada (por espacios) de dominios de busqueda.

Es decir, no importa lo que hayas puesto en la opcion search de resolv.conf, si alguien (antes de ejecutar algun programa o comando), hace algo como:

# LOCALDOMAIN=eslackware.com
# export LOCALDOMAIN

Lo que hayas puesto en search, no tendra validez.

iii. De igual forma, no importa lo que hayas indicado en resolv.conf utilizando options, si alguien setea la variable de entorno RES_OPTIONS a una lista (separada por espacio) de opciones para el resolvedor, este ultimo conjunto de parametros prevalecera.

Como siempre, espero que esto les haya sido de utilidad.
Proximamente veremos como configurar un servidor de DNS, vayan leyendo :)

This entry was posted in Administraci贸n, Networking.

Leave a Reply