Home UC3M
Home IT
Home / Docencia / I. Tec. Telecom. (Telemática, Sistemas de Telecom.) / Aplicaciones Avanzadas en Telemática

Aplicaciones Avanzadas en Telemática


Curso 2007/2008


Administración de DNS



  Introducción

En esta práctica debes desempeñar el papel de administrador del servicio de DNS de una empresa ficticia. DNS (Domain Name System) es una base de datos distribuida y jerárquica que almacena información acerca de nombres de dominio, como por ejemplo:

  • Dirección IP asociada a un nombre de dominio.
  • Servidores de correo electrónico asociados a un nombre de dominio.
  • Nombre de dominio asociado a una dirección IP.
  • Nombre de dominio de servidores de nombres asociados a un nombre de dominio.

Como administrador, debes desempeñar diversas tareas relacionadas con el servicio de DNS, que se te irán planteando en cada uno de los ejercicios propuestos.

Es recomendable que antes de la primera sesión de prácticas comprendas el funcionamiento básico de DNS. Para ello, puedes leer el capítulo 1 de BIND 9 Administrator Reference Manual, o los capítulos introductorios de alguno de los libros mencionados en las referencias.

Software:

La aplicación más utilizada hoy en día como servidor de nombres en Internet es bind, desarrollada por el Internet Software Consortium (ISC) y distribuida con licencia de código libre. En este proyecto utilizaremos la versión BIND Version 9.3.2P2 en entorno Linux.

Planificación estimada:

La planificación estimada de ejercicios para cada sesión de prácticas es la siguiente:

  1. Sesión 1: ejercicios 1, 2 y 3.
  2. Sesión 2: ejercicios 4 y 5.
  3. Sesión 3: ejercicios 6 y 7.

Referencias:

Las siguientes referencias pueden resultarte útiles para el desarrollo de este proyecto:

  1. Proyecto BIND.
  2. BIND 9 Administrator Reference Manual.
  3. RFCs del IETF.
  4. Páginas de manual de BIND.
  5. DNS and BIND cookbook. Cricket Liu. O'Really , 2002. ISBN 0596004109.
  6. DNS and BIND (4ª ed.) Paul Albitz. O'Reilly , 2001. ISBN 0596001584.
  7. The concise guide to DNS and BIND. Nicolai Langfeldt. Que, 2000. ISBN 0789722739. Disponible electrónicamente a través de la biblioteca.
  8. DNS for Rocket Scientists (Zytrax Communications).

Los recursos 2 y 4 están integrados en el código fuente de BIND (debes compilarlo para generar una copia en formato HTML). El código fuente de BIND integra también una selección de RFCs relacionados con DNS. Los recursos 5 y 6 están disponibles en la biblioteca. El recurso 7 es accesible en formato electrónico desde la web de la biblioteca.

Go Up
  Ejercicio 1: Compilación de BIND

Aunque en las distribuciones de Linux es habitual que se distribuya BIND ya compilado en un paquete, en este ejercicio debes descargar el código fuente y compilarlo tú mismo. Para ello, debes seguir los siguientes pasos:

  1. Obtén una copia del código fuente. Normalmente, se descargaría del sitio Web oficial de Bind, aunque en este caso te resultará más práctico descargarlo desde la Web de la asignatura: bind-9.4.1-P1.tar.gz.
  2. Descomprímelo en el directorio /tmp de tu máquina. Comprueba previamente que tengas al menos 110 MB libres en este directorio. Utiliza para ello el comando df --human /var (en las máquinas del laboratorio /tmp es un enlace a un directorio en la partición montada como /var). Si no dispones de dicho espacio, avisa a tu profesor de prácticas.
  3. Crea un directorio en tu cuenta para instalar los ficheros de bind. Por ejemplo, $HOME/aat/bind. Crea en él un subdirectorio llamado bin.
  4. Entra en el directorio base del código fuente descomprimido.
  5. Ejecuta ./configure para adaptar las opciones de compilación a tu entorno.
  6. Si el paso anterior funcionó correctamente, ejecuta make para compilar. Esta operación puede tardar unos minutos.
  7. En este punto, el administrador puede ejecutar make install para instalar la aplicación. Sin embargo, en el laboratorio no dispones de permisos de superusuario. Por ello, simplemente debes copiar al directorio bin que has creado anteriormente los siguientes ficheros ejecutables:
    1. bin/named/named
    2. bin/check/named-checkzone
    3. bin/check/named-checkconf
  8. Elimina el directorio de código fuente que has creado en /tmp, para librar espacio. Este paso es muy importante, porque si no lo haces tu máquina podría no funcionar correctamente por falta de espacio libre en disco.
Go Up
  Ejercicio 2: El comando dig

El objetivo de este apartado es que quien no esté cursando o haya cursado la asignatura Aplicaciones Telemáticas se familiarice con la herramienta dig y con el servicio de DNS. dig es un cliente de DNS que te permite realizar cualquier tipo de consulta. Gracias a la cantidad de información que presenta a la salida, tanto de la consulta como de la respuesta, resulta muy útil para rastrear errores en sistemas de DNS. Examina su página de manual para obtener una descripción completa de esta herramienta.

Apartado 1: funcionamiento básico

Utiliza dig para obtener la siguiente información:

  • La dirección IP de la máquina www.it.uc3m.es.
  • El nombre y dirección IP de servidores de nombres autoritarios (primarios y secundarios) para las zonas lab.it.uc3m.es, it.uc3m.es y uc3m.es.

Apartado 2: consultas no recursivas

Por defecto dig realiza consultas recursivas. Cuando un servidor de nombres recibe una consulta recursiva para un determinado nombre de dominio:

  1. Si tiene la respuesta, la devuelve (caso base de la recursión).
  2. Si no tiene la respuesta (invocación recursiva):
    1. Examina los registros NS para los cuales es un servidor autoritario y aquellos que tiene en caché, y elige el más adecuado para el nombre de dominio de la solicitud.
    2. Realiza la misma consulta recursiva al servidor de DNS elegido.
    3. Devuelve la respuesta devuelta por el servidor de DNS elegido.

Sin embargo, cuando la consulta es no recursiva y el servidor no tiene la respuesta, en vez de realizar una nueva consulta devuelve directamente los registros NS más cercanos al nombre de dominio solicitado, de entre todos los que posee. Para agilizar el proceso, devuelve también los registros A correspondientes a los servidores. Es el cliente en este caso el que debe realizar la misma consulta a uno de estos servidores.

Averigua la dirección IP de la máquina ftp.cerias.purdue.edu utilizando únicamente consultas no recursivas. Consulta la página de manual de dig para averiguar qué opción debes utilizar para hacer consultas no recursivas. Para obtener el resultado debes seguir el siguiente proceso:

  1. Consulta a tu servidor de DNS por defecto. Debe devolverte uno o más registros de tipo NS y A con las direcciones de servidores de DNS que pueden tener la respuesta. Si te devuelve directamente un registro A para el nombre de dominio solicitado, es que está en caché de tu servidor o que realizaste una consulta recursiva. En ambos casos debes probar con otro nombre de dominio, ya que el resultado tardará mucho tiempo en desaparecer de la caché.
  2. Elige uno de los servidores anteriores, y realízale la misma consulta. Para seleccionar el servidor al cual realizas la consulta puedes utilizar la opción @1.2.3.4 (sustituye esto último por la dirección IP del servidor). Debe devolverte la respuesta o una nueva lista de servidores de DNS.
  3. Mientras no te devuelva la respuesta, elige un servidor de DNS de entre los de la nueva respuesta, y vuelve al paso 2.

Apartado 3: listado de los servidores raíz

Utiliza dig para obtener un listado de todos los servidores autoritarios para la zona raíz. Recuerda que la zona raíz se representa como ".".

Go Up
  Ejercicio 3: Instalación de un servidor primario

El objetivo de este ejercicio es obtener un nombre de dominio para tu empresa ficticia y configurar un servidor de DNS primario para la zona asociada a dicho dominio. Tu nombre de dominio tendrá la forma miempresa.aat. Bajo este dominio, puedes definir máquinas como, por ejemplo, www.miempresa.aat.

Apartado 1: obtención de un nombre de dominio

En esta práctica trabajaremos en un dominio ficticio aat, para evitar cualquier tipo de interferencias con el sistema de DNS normal. El servidor primario de DNS para las zonas ficticias raíz (.) y aat estará en la máquina con dirección IP 163.117.139.81. Habrá al menos un servidor secundario, cuya dirección puedes obtener realizando la consulta adecuada al servidor primario. El profesor de prácticas administra estos servidores.

Para obtener un nombre de dominio debes ponerte en contacto con el profesor de prácticas. Debes indicarle el nombre de dominio que deseas, el nombre de la máquina en la cual instalarás tu servidor de nombres, y su dirección IP. Ten en cuenta que debes mantener en dicha máquina tu servidor de nombres en todas las sesiones de prácticas, para conservar la misma dirección IP.

Apartado 2: configuración básica del servidor

La configuración del servidor de bind (named) se realiza en el fichero named.conf. Puedes consultar ficheros ejemplo así como su sintaxis en el Manual de Referencia del Administrador de bind.

Escribe el fichero de configuraciónnamed.conf con la configuración necesaria para tu zona. Ten en cuenta lo siguiente:

  • Para evitar interferencias con el servicio normal de DNS, debes ejecutar el servidor en el puerto 10053. Puedes especificar esta opción mediante el atributo port del campo options del fichero de configuración de bind.
  • Debes indicar un directorio base para que bind obtenga el resto los ficheros asociados a las zonas que configures.
  • Debes indicar a bind que utilice /tmp/named.pid para escribir su PID. Esto se debe a que por defecto escribe en el fichero /var/run/named.pid, pero tu cuenta no tiene permisos para escribir en dicho fichero. Utiliza para ello la opción pid-file.
  • Debes declarar que el servidor actuará como primario para la zona DNS que se te ha asignado.
  • named tiene incorporada una lista de servidores raíz de DNS. Sin embargo, nosotros trabajaremos con un dominio raíz ficticio. Por ello, debes proporcionarle a tu servidor las direcciones de los servidores raíz ficticios. Puedes hacerlo de la siguiente forma:
    1. Obtén un fichero con la lista de servidores raíz. Puedes utilizar el propio comando dig para ello: "dig @163.117.139.81 -p 10053 NS . >root.hints".
    2. Declara una entrada para la zona raíz en tu fichero de configuración, de tipo hint. Consulta el ejemplo del Manual de Referencia del Administrador.
  • No es necesario que declares la zona de resolución inversa, ya que para ello sería necesario que contases con un rango de direcciones IP asignadas para tu dominio.

Apartado 3: fichero de datos de la zona

Un servidor primario para una zona necesita un fichero que contenga todos los registros de recurso asociados a dicha zona. Los datos de cada zona se introducen en un fichero de texto, cuyo nombre se especifica en named.conf. En DNS for Rocket Scientists (Chapter 8. DNS Resource Records) puedes encontrar información útil acerca de cómo definir tu fichero de zona.

Escribe el fichero con los datos asociados a la zona correspondiente a tu dominio. Ten en cuenta lo siguiente:

  • Debes introducir un registro NS y A para tu propio servidor de DNS.
  • Para poder probarlo posteriormente, debes introducir RRs de tipo A para varias máquinas. Asóciales IPs de otras máquinas del laboratorio.
  • Dado que la infraestructura es experimental y muy cambiante, debes escoger un tiempo de vida muy pequeño para los registros (no más de 1 ó 2 minutos). La existencia de registros viejos en caché te dificultaría mucho la corrección de errores.

Importante:

  • El fichero de datos de la zona tiene un número entero que controla su versión. Cada vez que cambies algo en este fichero debes incrementar este número. De lo contrario, el servidor no se dará cuenta de los cambios y utilizará los datos viejos.
  • bind no es capaz de detectar cambios en los ficheros de datos mientras está en ejecución. Cada vez que cambies el fichero de datos de la zona, debes parar y rearrancar el servidor, o enviarle la señal SIGHUP con el comando kill.

Apartado 4: ejecución y prueba del servidor

Una vez que has preparado todos los ficheros de configuración y datos, puedes ejecutar el servidor (ejecutable named). No olvides, siempre que lo ejecutes, especificar el nombre del fichero de configuración (opción -c) y ejecutarlo como proceso en primer plano (opción -f).

Comprueba con dig que tu servidor funciona correctamente:

  1. Realiza consultas a tu servidor para obtener registros NS y A de tu propia zona.
  2. Realiza consultas a tu servidor para obtener registros NS y A de otras zonas (raíz, aat o zonas de compañeros que tengan correctamente configurado su servidor).
  3. Realiza consultas al servidor raíz de registros de tu zona.

Si falla alguna de las pruebas anteriores, debes averiguar dónde puede estar el fallo. Si está en tu propio servidor, debes corregirlo. Si está en otro servidor, debes comunicárselo a su administrador para que lo solucione.

Go Up
  Ejercicio 4: Configuración de un servidor secundario

El funcionamiento de la mayoría de servicios de Internet depende del sistema de DNS. Cuando dicho sistema falla, el resto de los servicios se ven afectados gravemente. Por ello, y para realizar balance de carga, suele haber al menos dos servidores de DNS independientes para cada zona. De esta forma, aunque uno de ellos falle, se puede seguir proporcionando el servicio.

El hecho de tener servidores replicados en distintas máquinas obligaría a duplicar el fichero de zona. Esto dificultaría la actualización de los ficheros de zona, ya que el administrador tendría que actualizar la información en más de una máquina. DNS proporciona un mecanismo para evitar esto: la separación entre servidores primarios/secundarios.

  • Un servidor primario almacena la base de datos maestra (la editada por el administrador) en un fichero local. Nada impide que haya más de un servidor primario para una zona, pero no es lo habitual.
  • Un servidor secundario no posee una copia maestra de la base de datos, sino que la descarga periódicamente de un servidor primario para su zona. Esta descarga se realiza automáticamente. Además, se puede configurar un servidor primario para que notifique a los secundarios cada vez que se produzca algún cambio en la base de datos de la zona (en terminología DNS esto se conoce como notify). Este mecanismo permite una propagación muy rápida de las actualizaciones.

Un servidor de DNS puede servir más de una zona, e incluso actuar como servidor primario para unas zonas y secundario para otras.

Apartado 1

Configura un servidor secundario para tu zona. Dado que sólo cuentas con una máquina, debes colaborar con otro grupo. Por una parte, debes configurar tu servidor para que actúe como secundario para la zona del otro grupo. Por otra parte, el otro grupo configurará el suyo para que actúe como secundario de tu zona. Utiliza la función notify. Reconfigura los distintos temporizadores del fichero de zona que regulan el funcionamiento de los servidores secundarios.

No olvides indicar al administrador del dominio inmediatamente superior al tuyo (el profesor de prácticas) la existencia de un nuevo servidor para tu zona, para que lo incluya como registro NS en la zona aat. De esta forma, el resto del sistema de DNS conocerá a tu nuevo servidor.

Comprueba que el sistema funciona correctamente.

Apartado 2

Comprueba que el sistema de DNS funciona correctamente cuando uno de tus dos servidores no funciona. Para ello, debes parar uno de tus servidores y realizar consultas a otros servidores acerca de registros de tu zona. Recuerda que los servidores pueden tener almacenados resultados en la caché durante el tiempo que tú hayas configurado.

¿Qué ocurre cuando ninguno de tus servidores funciona?

Go Up
  Ejercicio 5: Delegación de un subdominio

El administrador de un dominio tiene potestad para crear y delegar los subdominios que crea oportunos. En este ejercicio debes delegar un subdominio por debajo de tu dominio.

Apartado 1

Solicita a otro grupo que te delegue un subdominio de su dominio. Configura tu propio servidor para que actúe como primario para la zona correspondiente al subdominio que te han delegado. Añade varios recursos de tipo A al subdominio.

Atiende la solicitud de delegación que te hará el otro grupo, y configura adecuadamente tu servidor.

Apartado 2

Comprueba que el sistema funciona correctamente, incluyendo los nuevos subdominios.

Go Up
  Ejercicio 6: Administración mediante el comando rndc

El comando rndc (remote name daemon control) permite al administrador controlar el funcionamiento del servidor de nombres remotamente. Encontrarás información acerca del funcionamiento de este comando en su página de manual y en el Manual de Referencia del Administrador de BIND. Puedes obtener rndc aquí.

Configura tu servidor de nombres para que permita el acceso remoto mediante rndc, utilizando una clave en modo de secreto compartido para realizar la autenticación. Para generar la clave necesitas hacer uso del comando dnssec-keygen, que puedes descargar aquí.

Averigua qué operaciones permite realizar el comando rndc, y comprueba que funcionen correctamente.

Go Up
  Ejercicio 7: DNS dinámico

DNS proporciona un protocolo que permite a un cliente realizar actualizaciones remotas en la base de datos de una zona. Dicho protocolo se conoce con el nombre de DNS dinámico.

Apartado 1: creación de una zona dinámica

Crea una nuevo subdominio de tu dominio. Tu servidor habitual debe ser primario para este nuevo subdominio. Configura el subdominio para que se pueda administrar con DNS dinámico (sólo desde la misma máquina en que tienes el servidor).

Apartado 2: el comando nsupdate

El comando nsupdate es un cliente que implementa el protocolo DNS dinámico. Utiliza este comando para añadir y eliminar registros de recurso a tu nuevo subdominio. Comprueba, utilizando dig, que todas las actualizaciones que haces tengan efecto.

Apartado 3: comunicación segura utilizando TSIG

El servidor que has configurado anteriormente puede ser atacado por cualquiera que tenga acceso a la máquina en la que tienes tu servidor, dado que el control de acceso se basa en la dirección IP del origen de datos. Configura el servidor para mejorar su seguridad utilizando TSIG. Comprueba que funciona correctamente.

Go Up

Localización | Personal | Docencia | Investigación | Novedades | Intranet
inicio | mapa del web | contacta

Last Revision: 1