INSTITUTO TECNOLOGICO SUPERIOR DE LIBRES INGENIERIA EN SISTEMAS COMPUTACIONALES DOMAIN NAME SYSTEM--DNS INSTALACION Y CONFIGURACION DE UN SERVIDOR DNS EN PLATAFORMA LINUX (DEBIAN) IZQUIERDO GONZALEZ ARTURO. PEREZ GUTIERREZ DIDIER. SANCHEZ TORRES FERNANDO. LOPEZ LOPEZ ARTURO 20/07/2008 Índice 1 DOMAIN NAME SISTEM. 3 1.1 COMPONENTES. 4 1.1.1 ENTENDIENDO LAS PARTES DE UN DOMINIO. 4 1.2 SERVIDORES DNS. 5 1.3 TIPOS DE REGISTRO DNS. 6 2 BIND 8 2.1 EJEMPLO DE CONFIGURACION. 9 2.1.1 INSTALACION DE BIND. 9 2.1.2 CONFIGURACION DE LOS ARCHIVOS DE BIND. 9 2.1.3 COMPROBANDO EL SERVIDOR DE NOMBRES DNS. 12 2.1.4 COMPROBANDO EL SERVIDOR WEB. 14 2 1. - DNS Domain Name System El Domain Name System (DNS) es una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio. La asignación de nombres a direcciones IP es ciertamente la función más conocida de los protocolos DNS. Por ejemplo, si la dirección IP del sitio FTP de prox.ve es 200.64.128.4, la mayoría de la gente llega a este equipo especificando ftp.prox.ve y no la dirección IP. Además de ser más fácil de recordar, el nombre es más fiable. La dirección numérica podría cambiar por muchas razones, sin que tenga que cambiar el nombre. Inicialmente, el DNS nació de la necesidad de recordar fácilmente los nombres de todos los servidores conectados a Internet. En un inicio, SRI (ahora SRI International) alojaba un archivo llamado HOSTS que contenía todos los nombres de dominio conocidos (técnicamente, este archivo aún existe - la mayoría de los sistemas operativos actuales todavía pueden ser configurados para revisar su archivo hosts). El crecimiento explosivo de la red causó que el sistema de nombres centralizado en el archivo HOSTS no resultara práctico y en 1983, Paul Mockapetris publicó los RFCs 882 y 883 definiendo lo que hoy en día ha evolucionado el DNS moderno. 3 1.1.- Componentes Para la operación práctica del sistema DNS se utilizan tres componentes principales: Los Clientes DNS: Un programa cliente DNS que se ejecuta en la computadora del usuario y que genera peticiones DNS de resolución de nombres a un servidor DNS (Por ejemplo: ¿Qué dirección IP corresponde a nombre.dominio?); Los Servidores DNS: Que contestan las peticiones de los clientes. Los servidores recursivos tienen la capacidad de reenviar la petición a otro servidor si no disponen de la dirección solicitada; Y las Zonas de autoridad, porciones del espacio de nombres de dominio que almacenan los datos. Cada zona de autoridad abarca al menos un dominio y posiblemente sus subdominios, si estos últimos no son delegados a otras zonas de autoridad. El Domain Name System (DNS) es una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. 1.1.1.- Entendiendo las partes de un nombre de dominio Un nombre de dominio usualmente consiste en dos o más partes (técnicamente etiquetas), separadas por puntos cuando se las escribe en forma de texto. Por ejemplo, www.mahomedalid.org o es.Wikipedia.org A la etiqueta ubicada más a la derecha se le llama dominio de nivel superior (inglés < Top Level Domain). Como org en www.mahomedalid.org ó es.Wikipedia.org Cada etiqueta a la izquierda especifica una subdivisión o subdominio. Nótese que "subdominio" expresa dependencia relativa, no dependencia absoluta. En teoría, esta subdivisión puede tener hasta 127 niveles, y cada etiqueta contener hasta 63 caracteres, pero restringido a que la longitud total del nombre del dominio no exceda los 255 caracteres, aunque en la práctica los dominios son casi siempre mucho más cortos. 4 Finalmente, la parte más a la izquierda del dominio suele expresar el nombre de la máquina (en inglés hostname). El resto del nombre de dominio simplemente especifica la manera de crear una ruta lógica a la información requerida. Por ejemplo, el dominio es.Wikipedia.org tendría el nombre de la máquina "es", aunque en este caso no se refiere a una máquina física en particular. El DNS consiste en un conjunto jerárquico de servidores DNS. Cada dominio o subdominio tiene una o más zonas de autoridad que publican la información acerca del dominio y los nombres de servicios de cualquier dominio incluido. La jerarquía de las zonas de autoridad coincide con la jerarquía de los dominios. Al inicio de esa jerarquía se encuentra los servidores raíz: los servidores que responden cuando se busca resolver un dominio de primer y segundo nivel... 1.2.- Tipos de servidores DNS Bind • PowerDNS • MaraDNS • djbdns • pdnsd • MyDNS • DNS (Windows 2000/2003) Tipos de resolución de nombres de dominio Existen dos tipos de consultas que un cliente puede hacer a un servidor DNS: Iterativa Recursiva En las consultas recursivas el servidor repite el mismo proceso básico (consultar a un servidor remoto y seguir cualquier referencia) hasta que obtiene la respuesta a la pregunta. Las consultas iterativas, o resolución iterativa, consisten en la mejor respuesta que el servidor de nombres pueda dar. El servidor de nombres consulta sus datos locales (incluyendo su caché) buscando los datos solicitados. Cuando existe más de un servidor autoritario para una zona, BIND utiliza el menor valor en la métrica RTT (round-trip time) para seleccionar el servidor. El RTT es una medida para determinar cuánto tarda un servidor en responder una consulta. El proceso de resolución normal se da de la siguiente manera: 5 1. El servidor A recibe una consulta recursiva desde el cliente DNS. 2. El servidor A envía una consulta iterativa a B. 3. El servidor B refiere a A otro servidor de nombres, incluyendo a C. 4. 5. 6. 7. 8. 9. El servidor A envía una consulta iterativa a C. El servidor C refiere a A otro servidor de nombres, incluyendo a D. El servidor A envía una consulta iterativa a D. El servidor D responde. El servidor A regresa la respuesta al resolver. El resolver entrega lta al programa que solicitó la información. 1.3.- Tipos de registros DNS A = Address – (Dirección) Este registro se usa para traducir nombres de hosts a direcciones IP. CNAME = Canonical Name – (Nombre Canónico) Se usa para crear nombres de hosts adicionales, o alias, para los hosts de un dominio. Es usado cuando se estan corriendo multiples servicios (como ftp y web server) en un servidor con una sola direccion ip. Cada servicio tiene su propia entrada de DNS (como ftp.ejemplo.com. y www.ejemplo.com.). esto también es usado cuando corres múltiples servidores http, con diferente nombres, sobre el mismo host. NS = Name Server – (Servidor de Nombres) Define la asociación que existe entre un nombre de dominio y los servidores de nombres que almacenan la información de dicho dominio. Cada dominio se puede asociar a una cantidad cualquiera de servidores de nombres. MX (registro) = Mail Exchange – (Registro de Intercambio de Correo) Asocia un nombre de dominio a una lista de servidores de intercambio de correo para ese dominio. PTR = Pointer – (Indicador) También conocido como 'registro inverso', funciona a la inversa del registro A, traduciendo IPs en nombres de dominio. SOA = Start of authority – (Autoridad de la zona) Proporciona información sobre la zona. 6 HINFO = Host INFOrmation – (Información del sistema informático) Descripción del host, permite que la gente conozca el tipo de máquina y sistema operativo al que corresponde un dominio. TXT = TeXT - ( Información textual) Permite a los dominios identificarse de modos arbitrarios. LOC = LOCalización - Permite indicar las coordenadas del dominio. WKS - Generalización del registro MX para indicar los servicios que ofrece el dominio. Obsoleto en favor de SRV. SRV = SeRVicios - Permite indicar los servicios que ofrece el dominio. RFC 2782 SPF = Sender Policy Framework - Ayuda a combatir el Spam. En este record se especifica cual o cuales hosts están autorizados a enviar correo desde el dominio dado. El servidor que recibe consulta el SPF para comparar la IP desde la cual le llega, con los datos de este registro. 7 2.- BIND (Berkeley Internet Name Domain, anteriormente: Berkeley Internet Name Daemon) es el servidor de DNS más comúnmente usado en Internet, especialmente en sistemas Unix, en los cuales es un standard de facto. Es patrocinado por la Internet Systems Consortium. BIND fue creado originalmente por cuatro estudiantes de grado en la University of California, Berkeley y liberado por primera vez en el 4.3BSD. Paul Vixie comenzó a mantenerlo en 1988 mientras trabajaba para la DEC. Una nueva versión de BIND (BIND 9) fue escrita desde cero en parte para superar las dificultades arquitectónicas presentes anteriormente para auditar el código en las primeras versiones de BIND, y también para incorporar DNSSEC (DNS Security Extensions). BIND 9 incluye entre otras características importantes: TSIG, notificacíon DNS, nsupdate, IPv6, rndc flush, vistas, procesamiento en paralelo, y una arquitectura mejorada en cuanto a portabilidad. Es comúnmente usado en sistemas Linux. 8 2.1.- Ejemplo de configuración 2.1.1.- Instalación de BIND Para instalar BIND simplemente abrimos la consola (Aplicaciones/Accessorios/Terminal) y escribimos el siguiente comando: sudo apt-get install bind9 2.1.2.- Configuración de los archivos de BIND Los archivos de configuración que tendremos que modificar en el servidor DNS son los siguientes: /etc/bind/named.conf /etc/bind/named.conf.options /etc/bind/named.conf.local /etc/bind/db.aulaESI.com /etc/bind/db.192.168.1 En el resto de ordenadores de la red, sólo habrá que modificar el archivo /etc/resolv.conf. El archivo named.conf en realidad no es necesario que lo modifiquemos. Este archivo almacena la configuración de las diferentes zonas generadas por defecto en el momento de la instalación. Para modificar el archivo /etc/bind/named.conf.local podemos utilizar cualquier editor de textos, como gedit o vi. Para crear este fichero con gedit abriremos el terminal y escribiremos: sudo gedit /etc/bind/named.conf.local Una vez abierto tendremos que poner lo siguiente (lo que hay tras el carácter # son comentarios). #Esta es la definición de la zona. Cambia aulaESI.com por tu nombre de dominio zone “aulaESI.com” { 9 type master; file “/etc/bind/db.aulaESI.com”; }; #Aquí definimos la zona de resolución inversa. Cambia 1.168.192 por la dirección de tu red zone “1.168.192.in-addr.arpa” { type master; file “/etc/bind/db.192.168.1″; }; A continuación modificamos el fichero /etc/bind/named.conf.options. En este fichero especificaremos aquellos servidores DNS de Internet que resolverán los nombres de dominio que nuestro servidor DNS local no pueda resolver. Será necesario especificarlos para que los ordenadores de nuestra red salgan a Internet. Options { directory “/var/cache/bind”; forwarders { 80.58.0.33; 62.42.230.24; }; }; Tendremos que cambiar las IP 80.58.0.33 y 62.42.230.24 por los servidores DNS de nuestro ISP. Los servidores DNS de ONO son: 62.42.230.24 y 62.42.63.52. Los servidores DNS de telefónica son: 80.58.61.250 y 80.58.61.254, aunque también tienen muchos más (80.58.0.33, 80.58.32.97, etc.) Después tendremos que crear el fichero de definición de zona /etc/bind/db.aulaESI.com. En este fichero es donde pondremos todos los nombres de máquinas y direcciones IP que conocerá nuestro servidor DNS. $TTL 604800 //Cambia aulaESI.com por el nombre de tu dominio //Cambia servidor por el nombre de tu servidor de nombres aulaESI.com. IN SOA aulaESI.com. servidor.aulaESI.com. ( //Las siguientes líneas no es necesario que las modifiquemos 2006081401 28800 3600 604800 38400) //Cambia las siguientes líneas si es necesario //aulaESI.com por el nombre de tu dominio //servidor por el nombre de tu servidor de nombres 10 aulaESI.com. IN NS servidor.aulaESI.com. //Cambia los nombres máquinas y direcciones IP por las de tu red servidor IN A 192.168.1.1 servidor2 IN A 192.168.1.2 pc03 IN A 192.168.1.3 pc04 IN A 192.168.1.4 pc05 IN A 192.168.1.5 pc05 IN A 192.168.1.6 //Así para el resto de equipos de la red //Lo siguiente es un alias. Para que desde el navegador podamos poner //www.aulaESI.com en lugar de servidor.aulaESI.com www IN CNAME servidor ftp in CNAME servidor2 A continuación creamos el archivo de zona /etc/bind/1.168.192 con el siguiente contenido: de resolución inversa //Cambia aulaESI.com por el nombre de tu dominio //Cambia servidor por el nombre de tu servidor de nombres. @ IN SOA servidor.aulaESI.com. (2006081401; 28800; 3600; 604800; 38400) //Cambia aulaESI.com por el nombre de tu dominio //Cambia servidor por el nombre de tu servidor de nombres de dominio //El número que aparece delante de IN PTR es el último octeto de la dirección IP //de la máquina //192.168.1.1 para servidor, 192.168.1.2 para servidor2, 192.168.1.3 para pc03…. //Cambia las direcciones IP y nombres por los de tu red IN NS servidor.aulaESI.com. 1 IN PTR servidor.aulaESI.com. 2 IN PTR servidor2.aulaESI.com. 3 IN PTR pc03.aulaESI.com. 4 IN PTR pc04.aulaESI.com. 5 IN PTR pc05.aulaESI.com. 6 IN PTR pc06.aulaESI.com. Cuando hayamos creado cada uno de los archivos tendremos que reiniciar BIND con el siguiente comando: sudo /etc/init.d/bind9 restart En cada uno de los ordenadores de la red habrá que modificar el fichero /etc/resolv.conf. Este fichero tendŕa el siguiente contenido: 11 //Cambia 192.168.1.1 por la IP de tu servidor de nombres //Cambia aulaESI.com por el nombre de tu dominio nameserver 192.168.1.1 search aulaESI.com A partir de la versión 9 de BIND se incluyen dos herramientas software para chequear la sintaxis y semántica de los archivos que describen las zonas y el archivo de configuración principal named.conf. Dichas herramientas son: named-checkzone y named-checkconf. Una vez configurado el servidor DNS, si se quiere hacer una comprobación sintáctica del archivo de configuración named.conf hay que ejecutar: named-checkconf La salida muestra los errores que genera. Si no genera salida, está todo correcto. En el caso de los archivos de zona hay que ejecutar: named-checkzone aulaESI.com /etc/bind/db.aulaESI.com (cambiando aulaESI.com por el nombre de tu dominio) Este comando genera la siguiente salida si todo está correcto: zone aulaESI.com/IN: loaded serial 1 OK 2.1.3.- Comprobando el servidor de nombres DNS Una vez hayamos reiniciado el servidor DNS (sudo /etc/init.d/bind9 restart) debemos comprobar que éste funciona correctamente. Para comprobar que el servidor de nombres resuelve nombres de dominio correctamente podemos utilizar la orden host. La orden host permite hacer búsquedas en el DNS. Se utiliza para convertir nombres en direcciones IP y viceversa. Algunas de sus opciones son las siguientes: -t <tipo>: indica el tipo de registro a devolver. Puede ser A, ANY, PTR, NS, etcétera. -R <n>: permite modificar el número de intentos que se hacen para obtener la respuesta, ya que por defecto es uno. -l: lista toda la información del dominio. Para comprobar que nuestro servidor funciona correctamente, ejecutamos la siguiente orden desde cualquier servidor del dominio: host servidor.aulaESI.com (tendrás que cambiar servidor por el nombre de tu servidor y aulaESI.com por el nombre de tu dominio). 12 Otra de las herramientas de las que disponemos para hacer consultas sobre un servidor DNS es dig (domain information groper). Se utiliza para detectar problemas de configuración en el servidor DNS. Su sintaxis es la siguiente: dig <@servidor> [opciones] [nombre] [tipo] Donde: @servidor es el nombre o la dirección IP del servidor a consultar. nombre es el nombre de dominio donde se hace la consulta tipo es el tipo de registro por el que se consulta (ANY, NS, SOA…). Si no se indica, se asume A Un ejemplo del uso de esta orden sería la siguiente: dig aulaESI.com 13 2.1.4.- Comprobando el servidor web Ya he comentado que en este dominio (aulaESI.com) el servidor DNS también hace también de servidor web. Para que el servidor haga las funciones de servidor web, tendremos que instalar apache. Para ello abrimos el terminal y escribimos: sudo apt-get install apache2 Una vez instalado, creamos un fichero HTML de prueba en el directorio /var/www. Podemos crear, por ejemplo, un fichero llamado prueba.htm que muestre el texto “Página web de prueba almacenada en el servidor”. Cuando lo hayamos creado, desde cualquier ordenador del dominio abrimos el navegador y escribimos www.aulaESI.com/prueba.htm. De esta manera comprobaremos si el servidor DNS funciona correctamente y es capaz de resolver nombres de dominio y además está haciendo las funciones de servidor web. 14