Redes de Datos - Laboratorio - Instructivo Laboratorio 2 Introducción al DNS (Domain Name System) Instrucciones generales Para poder realizar exitosamente la práctica, deberá cumplir las siguientes etapas: Previo al laboratorio Estudiar la información contenida en este instructivo. Se recomienda consultar las referencias sugeridas u otras de su preferencia. Al comienzo del laboratorio se realizará un cuestionario sobre los temas tratados en este instructivo. Se recomienda realizar los ejercicios sugeridos al final del instructivo. Imprimir y leer el procedimiento de la práctica incluido en el Informe. Se recomienda imprimir una página por faz. Traer el instructivo de Wireshark utilizado en las prácticas anteriores para facilitar el uso del mismo. Traer un disquete/memoria USB para poder guardar resultados. Durante el laboratorio Seguir el procedimiento indicado en el Informe y completarlo en forma grupal. El Informe deberá ser entregado al finalizar la práctica. NO SE ACEPTA ENTREGA DE INFORMES EN OTRO MOMENTO. Después del laboratorio Agradecemos que nos envíe sus aportes al foro específico creado en la página web del curso. Objetivos Estudio del protocolo DNS de resolución de nombres de dominio usando el analizador de protocolos Wireshark. Al finalizar la práctica el estudiante será capaz de: Describir la estructura del sistema de nombres de dominio (DNS), su utilidad, y su funcionamiento Entender las secuencias básicas de diálogo que aparecen al hacer una consulta DNS Manejar comandos para hacer consultas DNS Describir los diferentes tipos de registro que aparecen en la configuración de un servidor DNS (A, CNAME, SOA, etc.) Redes de Datos 2016 – Instructivo Laboratorio 2 Página 1 de 8 Preparación 1. El sistema DNS Usuarios y programas se refieren a las máquinas por nombres compuestos por caracteres alfanuméricos. Estos nombres deben convertirse a direcciones IP para poder establecer conexiones en la red. En una red TCP/IP las direcciones IP son los identificadores de los equipos en la red. La dirección IP está formada por 4 bytes (32 bits) que suelen escribirse en notación decimal separados por puntos (dotted decimal notation), por ejemplo 164.73.38.2, correspondiente a la máquina ampere.fing.edu.uy. El sistema de nombres de dominio (DNS, Domain Name System) provee una ordenación jerárquica de nombres, implementada como una base de datos distribuida, para identificar recursos en la red y obtener datos acerca de ellos, en particular sus números IP (direcciones) correspondientes. Dominio DNS El espacio de nombres se encuentra dividido en dominios. En el DNS, un dominio es un conjunto de etiquetas agrupadas bajo un nombre jerárquico común. Estas etiquetas apuntan a registros de diversos tipos; el registro más corriente es el correspondiente a un nombre de máquina, que apunta a una dirección de capa de red (dirección IP). Cada dominio tiene un servidor primario de dominio DNS capaz de brindar información respecto a esas etiquetas (y posiblemente otros servidores secundarios). El servidor DNS maneja la información relativa a todas estas etiquetas de su dominio, y contiene también referencias a servidores DNS de otros dominios. El sistema jerárquico de nombres de dominio El conjunto de nombres de dominio tiene estructura de árbol, con la raíz (root) indicada como un punto ".". Un dominio tal como fing.edu.uy. se interpreta como una rama del árbol donde "." es la raíz, "uy" es un primer nivel, "edu" el segundo y "fing" el último. Si se omite el punto final, la dirección se interpreta como relativa. El comportamiento de los servidores de nombres en este caso puede ser el de agregar un nombre de dominio (el propio), o el punto final si el nombre está completo y por lo tanto lo refiere al dominio raíz. Cada nodo en el árbol es etiquetado con un nombre simple, el cual puede tener hasta 63 caracteres de longitud. Un nombre completo de cualquier nodo en el árbol es la secuencia de etiquetas separadas por “.” las cuales se encuentran en el camino del nodo hasta la raíz. Un nombre de dominio no puede superar 255 caracteres. Bajo el nodo raíz los dominios se dividen en dos grandes categorías: genéricos y de país. Algunos dominios genéricos son com (empresas comerciales), mil (instituciones militares de USA), org (instituciones sin fines de lucro) y edu (instituciones educativas). Los dominios de países son códigos de 2 letras definidos en la norma ISO 3166 (uy para Uruguay, ar para Argentina, uk para el Reino Unido, etc.). La creación de un nuevo dominio requiere autorización de la autoridad del dominio bajo el cual se va a crear. Una vez creado, el responsable del dominio recibe autoridad delegada sobre ese dominio, pudiendo definir en él las etiquetas necesarias, o aún subdominios a los que puede a su vez delegar autoridad. El conjunto de nombres manejados por un dominio constituye una zona de autoridad. Por ejemplo, si se desea crear el dominio ls.iie.fing.edu.uy. para el laboratorio, se necesita autorización de quienes administran iie.fing.edu.uy. (el IIE). Sin embargo, no se necesita autorización de fing.edu.uy. (la adm. de red de FING) ni de edu.uy. (el SECIU) (Esto es solo un ejemplo, no se corresponde con la realidad). Esto es así porque la autoridad se va delegando a los respectivos subdominios, haciendo distribuida la administración de la base de datos, y por consiguiente, más flexible y escalable. Los dominios de países pueden o no definir subdominios análogos a los genéricos para sus propios países, o aún adoptarlos parcialmente. Uruguay sigue la convención de nombres genéricos bajo uy, aunque usa gub en lugar de gov por razones de idioma, por ejemplo. En la figura se esquematiza esta jerarquía. Redes de Datos 2016 – Instructivo Laboratorio 2 Página 2 de 8 Registros de DNS Un registro en el DNS asocia un valor a un nombre de dominio La estructura genérica de un registro de DNS consiste en cinco campos: (Nombre, TTL, Clase, Tipo, Valor) Nombre: Nombre del dominio al que se está asociando el registro TTL: Time to Live es el tiempo en segundos durante el cual el registro debe ser considerado válido. Es un indicador de qué tan estable es el registro. Tipo: Tipo de registro al que hace referencia. Clase: Normalmente clase IN (Internet Information), existen otras clases pero son raramente utilizadas. Valor: Puede ser un número, otro nombre de dominio o un string, depende de la semántica del tipo de registro. Ejemplo: www.ls.iie.fing.edu.uy. 86400 IN A Redes de Datos 2016 – Instructivo Laboratorio 2 172.16.0.250 Página 3 de 8 Tipos de registro DNS El servidor DNS de un dominio contiene toda la información administrativa necesaria para responder consultas sobre las entidades de ese dominio, sobre el cual tiene autoridad. El cuadro resume los diferentes tipos de registro manejados por un servidor DNS. Tipo Significado Valores Uso SOA Inicio de autoridad Parámetros de zona Nombre del servidor primario de dominio, tiempos de vida, correo del administrador A Dirección IP Entero 32 bits expresado en notación decimal con punto Mapea un nombre hacia una dirección IP MX Manejo de correo Prioridad, dominio que acepta correo Nombre de máquina u otro dominio que recibe correo para este dominio. NS Servidor de Nombres Nombre de máquina Nombre de una máquina servidor de nombres para este dominio CNAME Nombre canónico Nombre de máquina Permite crear un alias al nombre de máquina PTR Puntero Nombre asociado a una dirección IP Mapea dirección IP hacia nombre de máquina HINFO Descripción de máquina CPU, OS Características del procesador, sistema operativo, etc., en texto. TXT Texto Texto no interpretado Para colocar información a criterio del administrador AAAA Dirección IPv6 Entero 128 bits expresado Mapea un nombre hacia una en notación hexadecimal con dirección IP versión 6 “:”puntos Consultas al DNS Cuando una máquina local necesita conocer un registro asociado a un nombre de dominio (por ejemplo el número IP de una máquina destino) y sólo dispone del nombre, ésta realiza una consulta a un servidor DNS. Existen dos modalidades, según el servidor contactado: recursiva y no recursiva. Consulta recursiva: consultado un servidor DNS, éste se encarga de todas las averiguaciones ulteriores y devuelve la dirección pedida. Consulta no recursiva (iterativa): consultado un servidor DNS, éste contesta sólo lo referente a su dominio, indicando a qué servidor debe consultar el cliente por información más específica. En los diagramas se muestran los mensajes intercambiados, en ambos casos, cuando un navegador intenta obtener la dirección IP correspondiente al sitio www.nsk.com.uy. Una vez obtenida esta dirección IP estoy en condiciones de establecer una conexión TCP para descargar una página. La característica de servidor que acepta consultas recursivas o no recursivas puede aparecer en cualquier servidor de los involucrados. Redes de Datos 2016 – Instructivo Laboratorio 2 Página 4 de 8 Observación: El servidor DNS local (fing) y los servidores de los dominios “uy” y “com.uy” están permitiendo consultas recursivas, mientras el servidor “root” no está permitiendo la consulta recursiva. La consulta a un servicio DNS intenta siempre ser recursiva: ¿para qué voy a buscar yo si alguien lo puede hacer por mi? Si el servidor interrogado responde recursivamente va a devolver el resultado pedido en la pregunta. Si no responde recursivamente devolverá el registro NS (y probablemente la dirección IP) de otros servidores DNS a quienes preguntar para seguir avanzando en la consulta. Redes de Datos 2016 – Instructivo Laboratorio 2 Página 5 de 8 Observación: Solamente el servidor DNS local (“fing”) está permitiendo consultas recursivas, el resto solo responde no recursivamente. Esto último no quita que se intente realizar todas las consultas recursivas por parte del servidor de DNS local “fing”, y que éste no tenga éxito y termine por “iterar” para obtener el resultado. En general toda PC, puesto de trabajo o host se configura con un servidor local de DNS que le permite realizar consultas recursivas. Una consulta iterativa se caracteriza por el hecho de que para poder obtener el resultado final, se necesita realizar varias consultas intermedias. En el peor de los casos es cuando tengo que recorrer toda la rama del árbol hasta llegar a los servidores de nombres autoritativos del dominio deseado. En cada paso siempre se consulta por el registro que se está buscando, la respuesta es o bien el registro solicitado o la información de los servidores de nombres autoritativos en donde continuar la búsqueda. Caché Los servidores de nombres recursivos poseen un "caché" o memoria local donde guardan los resultados obtenidos por un cierto tiempo. Una vez hecha una consulta por un cliente, es muy probable la reiteración de esa misma consulta para comunicaciones sucesivas; si se ha guardado el resultado de la primer consulta, las siguientes las contesta el servidor local en forma inmediata leyendo el caché. Cada registro obtenido por el servidor de nombres trae asociado un tiempo de validez (campo TTL), pasado el cual se descarta del caché. Un servidor DNS que contesta desde el caché se denomina "no autoritativo", no tiene autoridad sobre la zona de la consulta, sólo tiene guardada alguna información relativa a esa zona; esta información puede estar desactualizada si se realizó un cambio en la zona consultada con posterioridad a la primer consulta que ingresó el registro en el caché, y con anterioridad al vencimiento del registro original. Como los cambios no son muy frecuentes, el caché ahorra tiempo y ancho de banda. Al realizar una consulta, no solo se guarda el resultado de la consulta original, sino todos los registros intermedios que se hayan obtenido en el proceso El servidor autoritativo es quien tiene la información más actualizada sobre el o los dominios que tenga delegados. Redes de Datos 2016 – Instructivo Laboratorio 2 Página 6 de 8 Consulta inversa o consulta reversa El servicio DNS también puede resolver la consulta inversa, cuando se dispone del número IP y se desea saber si corresponde a un nombre en el espacio de nombres del DNS (puede no corresponder a ninguno, existen muchas direcciones IP sin nombre asignado). Para resolver la consulta inversa existe un dominio especial, in-addr.arpa., cuyos subdominios son las direcciones IP con los números invertidos. Por ejemplo, para resolver el nombre asociado a la dirección IP 164.73.38.43, el servidor DNS intenta resolver la etiqueta 43.38.73.164.in-addr.arpa., devolviendo el nombre tacuabe.fing.edu.uy. Lo que hace es buscar en el DNS un registro de tipo PTR asociado al nombre 43.38.73.164.in-addr.arpa. Debe notarse que en la resolución de este otro problema se usa el mismo árbol, entrando por otra rama y buscando otro tipo de recurso, pero la infraestructura es la misma. Esto se conoce como DNS inverso o DNS reverso. Delegación de autoridad La delegación es la forma que tiene el dominio (un nodo) de registrar a quien hay que preguntar sobre determinada parte de su descendencia (nodos hijos). Es como realmente se termina haciendo distribuida la base de nombre de dominios. En la delegación básicamente intervienen dos registros, el NS y el A. La delegación de autoridad para administrar una zona se obtiene de la autoridad encargada de administrar la zona de nivel inmediatamente superior. Por ejemplo, para administrar la zona fing.edu.uy es preciso obtener la autorización de SECIU, encargada de administrar la zona edu.uy. La administración de los inversos o reversos, se solicita a las instituciones encargadas de asignar las direcciones IP. En la actualidad existen cinco instituciones (más una sexta encargada de coordinar) que asignan direcciones IP de acuerdo a la ubicación geográfica del solicitante. Para el caso de América Latina es LACNIC, ARIN para América del Norte, RIPE para Europa, AFRINIC para África y APNIC para Asia y Pacífico Norte. Estos organismos son los encargados de administrar las porciones del árbol de reversos correspondientes a las direcciones IP que asignan, delegando a los ISP (“Internet Service Providers” o Proveedores de conectividad a Internet) o empresas, los reversos correspondientes a los rangos de direcciones IPs que les asignaron. Dado que la obtención de direcciones IP requiere justificación de los fines para los cuales se piensan utilizar, muchas empresas arriendan rangos de direcciones IP a otras empresas (generalmente ISP). Para este último caso la delegación de reversos pasa a ser entre empresas. Por ejemplo, la Universidad de la República a través del SeCIU (Servicio Central de Informática de la Universidad) obtuvo el rango de direcciones IP del 164.73.0.0 al 164.73.255.255 (164.73.0.0/16) y por lo tanto le fue delegada la administración de la rama 73.164.in-addr.arpa. SeCIU asignó a la Facultad de Ingeniería (FING) entre otros el rango 164.73.38.0 a 164.73.38.255 y por tanto le delegó la administración de la rama 38.73.164.in-addr.arpa, dentro de las cuales estarán las etiquetas 0.38.73.164.in-addr.arpa., ..., 255.38.73.164.in-addr.arpa. Redes de Datos 2016 – Instructivo Laboratorio 2 Página 7 de 8 Servidor Recursivo, Servidor No Recursivo Un servidor se dice recursivo cuando frente a consulta recursiva por parte de un cliente sale a buscar las respuestas y entrega los resultados al cliente. Un servidor se dice no recursivo, responde a una pregunta recursiva con la mejor repuesta que posea. Es decir, si preguntan por un registro sobre el cual es autoritativo, responde la pregunta; si preguntan sobre un registro sobre el cual no es autoritativo da la mejor respuesta que posea. Esta mejor respuesta podría ser “andá a consultar a los root servers” o en caso que él tenga una delegación realizada, decir “el servidor de nombre autoritativo de ese dominio es tal servidor”. 2. Comandos Los sistemas operativos Unix disponen de varios comandos para consultar directamente un servidor DNS. Dos de ellos son el host y el dig; el nslookup es similar a host, pero con la ventaja de que también es un comando nativo de Microsoft Windows. Investigue las páginas de manual (man) de estos tres comandos. 3. Referencias Tanenbaum, Andrew. "Computer networks", 4a. edición, Prentice-Hall, 2003, 3a. edición. Prentice-Hall, 1996. Super Man Pages. Páginas "man" de unix en línea (http://linuxcommand.org/superman_pages.php). Instructivo de WireShark (Ethereal), material de esta práctica, en EVA 4. Ejercicios Sugeridos ● ● ● Analice cuál es la función de los root servers en el sistema DNS. Analice por cuáles registros se consulta y qué registros se responden en cada uno de los pasos de los ejemplos de consultas recursiva y no recursivas. Analice los filtros de Wireshark útiles para filtrar consultas DNS entre dos equipos. 5. Procedimiento y Conclusiones En el informe. 6. Para conocer más DNS Resources Directory http://www.dns.net/dnsrd/ Servidor de Nombres para UNIX BIND http://www.isc.org/products/BIND/ 7. Evaluación del laboratorio Agradecemos que nos envíe sus aportes al foro específico creado en la página web del curso. Redes de Datos - Curso 2016 - Página del curso: http://eva.universidad.edu.uy/course/view.php? id=545 Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - UDELAR, CURE - Rocha, Uruguay. Redes de Datos 2016 – Instructivo Laboratorio 2 Página 8 de 8