DNS_documento2 (Este documento es bueno, pero no dejar de leer el manual de referencia publicado en el sitio oficial de BIND: www.isc.org)
¿Que es un servidor DNS?
En cualquier servidor, tanto de internet como intranet hemos de disponer de un servidor DNS, el cual sirve para poder asignar nombres a equipos o servicios de red. La asignación de nombres DNS se utiliza en las redes TCP/IP (servicio de correo, web, FTP, etc.), para localizar equipos y servicios con nombres sencillos a máquina o recursos. Cuando un usuario escribe un nombre DNS en una aplicación, los servicios DNS se encargan de traducir el supuesto nombre a otra información asociada con el mismo, como es una dirección IP. Como se puede observar es más senzillo de aprender y recordar un nombre senzillo que no un número de 4 bytes (su dirección IP).
Además a igual que se puede hacer la conversión de un nombres DNS a una dirección IP, también se puede hacer a la inversa, és decir, que a través de una dirección IP el servidor DNS nos devuelva su nombre.
La información que ha de tener un servidor DNS es:
La zona o varias zonas que controla.
Si es primario o secundario de cada zona.
Instalar el sevidor DNS (Bind)
Yo he utilizado el BIND (Berkeley Internet Name Domain), pero que sepáis que hay otros más...
Primeramente nos descargamos y compilamos la última versión
del servidor de DNS disponible en la web:
http://www.isc.org/products/BIND/bind9.html.
-- Descomprimimos el fichero bajado:
$ tar -xvzf nombre_archivo.tar.gz
-- Preparamos los fichero de compilación, los make's, esto
se hace con la comanda ./configure.
Pero antes de hacer nada,
ejecutamos ./configure --help que nos dará información
sobre las distintas opciones disponibles.
yo he puesto las
siguientes:
$ ./configure --disable-threads --disable-ipv6
-- Finalmente lo compilamos:
$ make
$ make install
$ make test
Configuración del archivo /etc/named.conf [Ir Arriba]
Es el archivo de configuración principal del DNS ya que contiene la ubicación y parámetros de los demás archivos de configuración. Dicho archivo está formado por dos tipos de secciones:
Opciones "options": Indica donde se encuentran otros archivos de configuración y otras opciones.
Zonas "zone": Pueden existir varias zonas por archivo, estas zonas definen los dominios y redes sobre las que se mantiene información.
A continuación os muestro un fichero de configuración del fichero /etc/named.conf.
options {
directory
"/var/named";
};
zone "domain.name" IN
{
type slave;
file "domain.zone";
masters
{ xxx.xxx.xxx.xxx; };
};
zone "other.domain.name"
IN {
type master;
file "other.zone";
allow-update
{ yyy.yyy.yyy.yyy; zzz.zzz.zzz.zzz; ...};
};
zone
"yyy.yyy.yyy.in-addr.arpa" IN {
type master;
file
"yyy.zone";
allow-update {none; };
};
La opción directory dentro de la sección options indica en que directorio estan los ficheros de la zona en la que vamos a trabajar.
La primera zona que observamos es secundaria de la zona domain.name, con lo qual esto implica que hará una copia de las zonas del servidor maestro en del fichero domain.zone. La copia implica que no podamos hacer ningún tipo de modificación en la zona copiada.
La segunda zona, sería nuestro servidor primario de la zona other.domain.name, en el qual se guardará en el fichero other.zone. Además se ha utilizado la directiva allow-update que recoge las IP's de los servidores secundarios que nos podrán pedir una copia de los ficheros de nuestra zona.
Finalmente en nuestra tercera zona, tendríamos guardado en el fichero yyy.zone la inversa, és decir la traducción de IP's a nombres DNS. Si no fijamos en la directiva allow-update observamos que pone el valor "none", lo cuál implicará que ningún servidor secundario pueda hacer una copia de esta zona.
Formato fichero de datos de las zonas [Ir Arriba]
Los ficherosde datos de un dominio estan formados por una serie de registros. Estos registros contienen diversa información sobre el dominio (SOA), servidores de nombres(NS), direcciones de máquinas(A),...
El fichero tiene el siguiente aspecto:
$TTL 43200
@ IN SOA
server.mydomain.name. user.server.mydomain.name. (
200583909: Serial
3600 :
Refresh (1 hora)
300 :
Retry (5 min)
17200 : Expire (2
days)
43200 ) : Minium TTL (12 hours)
;
@
IN NS server.mydomain.name.
pc1 IN A xxx.xxx.xxx.xxx
pc2 IN
A yyy.yyy.yyy.yyy
nombre1 IN CNAME pc1
nombre2 IN CNAME pc2
Si nos fijamos, en este fichero todos los nombres de dominios terminan con un punto ".", esto se hace para indicar que se trata de nombres absolutos.
Ahora vamos a estudiar los distintos registros que aparecen el en fichero anterior.
REGISTRO SOA: Contiene información sobre el dominio.
sever.mydomain.name.: Nos indica el servidor de nombres al cual pertenece la zona.
user.server.mydomain.name.: Indica el usuario responsable a administrar el servidor DNS. Además también hace referencia a su dirección de correo user@mydomain.name
Serial: Es el número de seria correspondiente a la última actualización. Este campo es utlizado por los servidores DNS secundarios, los cuales solamente actualizarán los datos de su zona si su número de série es menor que el del primario.
Refresh: Tiempo en que el seridor secundario debe preguntar al primario si ha habido cambios.
Retry: Periodo de tiempo que ha d'esperar un servidor secundario antes de reintentar la conexión con el servidor primario, suponiendo que el último intento haya fallado.
Expire: Máximo tiempo que ofrece servicio el servidor secundario, en caso de no poder contactar con el primario.
TTL: Tiempo máximo que se mantienen los datos del dominio en un servidor de caché antes de volver ha hacer una consulta al servidor autorizado.
REGISTRO A: Traducción de máquina a dirección IP.
REGISTRO NS: Relaciona un nombre de subdominio amb un servidor de nombres responsable de la zona. Este registro es el que nos permite de formar una jerarquia de nombres DNS. Además si lo utilizamos nos hemos de asegurar de haber puesto el correspondiente registro A para traducir el nombre del servidor a una dirección IP.
REGISTRO PTR: Traducción de dirección IP a máquina.
REGISTRO CNAME: Establecer alias de máquinas.
Nota: El punto final de los dominios es importante, porque impide que el servidor DNS intente concatenar otros nombres de dominio en el final.
Comandos útiles
named: Servidor de nombres.
named-checkconf: Comprueba la sintaxis del fichero de configuración (etc/named.conf).
named-checkzone: Comprueba la sintaxis de los ficheros de zonas.
host, nslookup: Nos permite hacer consultas directamente en el servidor DNS.