Departamento Académico de Informática Lab: Wireshark - DNS 1 Ingº Manuel Peñaloza Figueroa Dime y lo olvidaré. Muéstrame y lo recordaré. Involúcrame y lo entenderé Proverbio chino 1. OBJETIVOS: 1.1 Investigar el comportamiento de DNS en detalle. 2. BASE TEORICA COMPLENTARIA Wireshark Lab: DNS Como descrito en la Sección 2.5 del libro de texto, el Sistema de Nombres de Dominio (DNS) traduce nombres_de_host a direcciones IP, cumpliendo un rol crítico en la infraestructura de Internet. En este lab, se echará una mirada mas estrecha al lado cliente de DNS. Recordar que el rol del cliente en el DNS es relativamente simple un cliente envía un query a su servidor DNS local, y recibe una respuesta de regreso. Como se muestra en las Figuras 2.21 y 2.22 en el libro de texto, mucho puede ocurrir "bajo las portadas", invisible a los clientes DNS, a medida que los servidores DNS jerárquicos se comunican el uno al otro para resolver ó recursivamente ó iterativamente el query del cliente DNS. Desde el punto de vista del cliente DNS, sin embargo, el protocolo es muy simple una consulta (query) se formula al servidor DNS local y una respuesta se recibe desde ese servidor. 1 Adaptado de: Wireshark Labs: Versión: 2.0, 2007 J.F. Kurose, K.W. Ross.
Antes de comenzar este lab, probablemente se deseará revisar DNS con leer la Sección 2.5 del texto. En particular, se puede desear revisar el material sobre servidores DNS locales, caching en DNS, registros y mensajes DNS, y el campo TYPE en el registro DNS. 3. DESARROLLO DE LA PRACTICA 1. (traer una copia impresa de la guía del laboratorio) 2. nslookup En este lab, se hará uso extensivo de la herramienta nslookup, la cual está disponible en la mayor parte de las plataformas Linux/Unix y Microsoft de hoy en día. Para ejecutar nslookup en Linux / Unix, justamente se tipea el comando nslookup en la línea de comandos. Para ejecutarlo en Windows, abrir el Prompt de Comandos y ejecutar nslookup en la línea de comandos. En ella está la operación más básica, la herramienta nslookup permite al host ejecutando la herramienta consultar a cualquier servidor DNS especificado por un registro DNS. El servidor DNS consultado puede ser un servidor DNS raíz, un servidor DNS top-leveldomain, un servidor DNS autoritativo, ó un servidor DNS intermediario (ver el libro de texto para definiciones de estos términos). Para realizar esta tarea, nslookup envía un query DNS a un servidor DNS especificado, recibe una réplica DNS desde el mismo servidor DNS, y displaya el resultado. La pantalla de captura de arriba muestra los resultados de 3 comandos nslookup independientes (visualizado en el Prompt de Comandos de Windows). En este ejemplo, el host cliente está localizado en el campus de la UNSAAC, donde el servidor DNS local 2 Leunam
predeterminado es ns.unsaac.edu.pe. Cuando se ejecuta nslookup, si ningún servidor DNS es especificado, entonces nslookup envía el query al servidor DNS predeterminado, el cual en este caso es ns.unsaac.edu.pe. Considere el primer comando: nslookup www.mit.edu En palabras, este comando está diciendo "Por favor enviar la dirección IP para el host www.mit.edu". Como se muestra en la pantalla de captura, la respuesta desde este comando provee 2 piezas de información: (1) el nombre y la dirección IP del servidor DNS que provee la respuesta; y (2) la respuesta misma, la cual es el nombre del host y la dirección IP de www.mit.edu. Si bien, la respuesta vino del servidor DNS local en la UNSAAC, es muy posible que este servidor DNS local iterativamente contactó varios otros servidores DNS para obtener la respuesta, como se describe en la Sección 2.5 del libro de texto. Ahora considerar el segundo comando: nslookup type=ns mit.edu En este ejemplo, se ha suministrado la opción "-type=ns" y el dominio "mit.edu". Esto provoca a nslookup a enviar un query por un registro de tipo NS al servidor DNS local predeterminado. En palabras, el query está diciendo "Por favor enviar los nombres de host del DNS autoritativo para mit.edu". (Cuando la opción type no es usada, nslookup usa el predeterminado (para tipos de registro), la cual es para consultar por registros de tipo A; ver Sección 2.5.3 en el texto). La respuesta, mostrada en la pantalla de captura de arriba, primero indica el servidor DNS que está proveyendo la respuesta (el cual es el servidor DNS local predeterminado) junto con 3 servidores de nombres del MIT. Cada uno de estos servidores es en efecto un servidor DNS autoritativo para los hosts en el campus del MIT. Sin embargo, nslookup también indica que la respuesta es "noautoritativa", lo que significa que esta respuesta vino del caché de algún servidor en vez de un servidor DNS autoritativo del MIT. Finalmente, la respuesta también incluye las direcciones IP de los servidores DNS autoritativos en el MIT. (Aún cuando el query type- NS generado por nslookup explícitamente no preguntó por la dirección IP, el servidor DNS local retornó estos "gratis" y nslookup displaya el resultado). Nota: opcionalmente, si el comando de arriba no trabajase, escribir el comando de la siguiente manera: nslookup type=ns mit.edu 200.48.225.130 Ahora finalmente considerar el tercer comando: nslookup www.aiit.or.kr bitsy.mit.edu En este ejemplo, se indica que se desea enviar el query al servidor DNS bitsy.mit.edu antes que al servidor DNS predeterminado (ns.unsaac.edu.pe). Así, la transacción del query y de la réplica toma lugar directamente entre el host que hace la consulta y bitsy.mit.edu. En este ejemplo, el servidor DNS bitsy.mit.edu provee la dirección IP del host www.aiit.or.kr, el cual es un servidor web en el "Advanced Institute of Information Technology" (en Corea). La sintaxis general de los comandos nslookup es: 3 Leunam
nslookup opcion1 opcion2 host-a-encontrar servidor-dns En general, nslookup puede ser ejecutado con 0, 1, 2 ó mas opciones. Y como se ha visto en los ejemplos de arriba, el servidor DNS también es opcional; si no es suministrado, el query se envía al servidor DNS local predeterminado. Ahora que se ha proporcionado una visión general de nslookup, es momento de probar que uno mismo lo conduzca. Hacer lo siguiente (y escribir los resultados): 1. Ejecutar nslookup para obtener la dirección IP de un servidor Web en Asia. 2. Ejecutar nslookup para determinar los servidores DNS autoritativos para una universidad en Europa. 3. Ejecutar nslookup a fin de que 1 de los servidores DNS obtenidos en la Pregunta 2 sea consultado por los servidores de correo de Yahoo mail. 3. ipconfig ipconfig (para Windows) e ifconfig (para Linux/Unix) están entre los utilitarios pequeños más útiles en un host, especialmente para depurar cuestiones de red. Aquí solamente se describirá ipconfig, aunque el ifconfig de Linux/Unix es muy similar. ipconfig puede ser usado para mostrar la información de TCP/IP real, incluyendo la dirección IP, las direcciones de los servidores DNS, el tipo del adaptador y así sucesivamente. Por ejemplo, si se desea ver toda esta información acerca de un host, simplemente entrar: ipconfig /all 4 Leunam
en el Prompt de Comandos, como se muestra en la siguiente pantalla de captura: ipconfig también es muy útil para gestionar la información DNS almacenada en un host. En la Sección 2.5 se aprendió que un host puede poner en caché los registros DNS que recientemente obtuvo. Para ver estos registros en caché, después del prompt C:\> proporcionar el siguiente comando: ipconfig /displaydns Cada entrada muestra el Time to Live (TTL) restante en segundos. Para borrar el caché entrar lo siguiente: ipconfig /flushdns Flushing el caché DNS borra todas las entradas y recarga las entradas desde el archivo de hosts. 4. Trazando DNS con Wireshark Ahora que se es familiar con nslookup e ipconfig, se está listo para dar atención a algún "negocio serio". Primero capturar los paquetes DNS que son generados por la actividad del Web surfing ordinario. Usar ipconfig para vaciar el caché DNS en el host. Abrir un navegador y vaciar el caché del browser. (Con Internet Explorer, ir al menú Herramientas y seleccionar Opciones de Internet; entonces en la pestaña General seleccionar Eliminar Archivos). Abrir Wireshark y entrar ip.addr == dirección_ip_de_la_pc dentro del filtro, donde se obtiene la dirección_ip_de_la_pc (la dirección IP para la computadora en el cual se ejecuta Wireshark) con ipconfig. Este filtro remueve todos los 5 Leunam
paquetes que ni se originan ni son destino al host. Arrancar la captura de paquetes en Wireshark. Con el navegador, visitar la página Web: http://www.ietf.org Parar la captura de paquetes. Responder las siguientes preguntas: 4. Localizar los mensajes DNS de query y de respuesta. Son ellos enviados sobre UDP ó TCP? 5. Cuál es el puerto de destino para el mensaje de consulta (query) DNS? Cuál es el puerto fuente del mensaje de respuesta DNS? 6. A qué dirección IP se envía el mensaje query DNS? Usar ipconfig para determinar la dirección IP del servidor DNS local. Son estas 2 direcciones IP las mismas? 7. Examinar el mensaje de consulta (query) DNS. Qué Type de consulta DNS es? El mensaje query tiene algunas respuestas? 8. Examinar el mensaje de respuesta DNS. Cuántas respuestas son proporcionadas? Qué contienen cada una de estas respuestas? 9. Considerar el subsecuente paquete TCP SYN enviado por el host. La dirección IP de destino del paquete SYN corresponde a alguna de las direcciones IP proporcionadas en el mensaje de respuesta DNS? 6 Leunam
10. Esta página web contiene imágenes. Antes de recuperar cada imagen, el host emite nuevas consultas DNS? Ahora a jugar con nslookup. Iniciar la captura de paquetes. Hacer un nslookup sobre www.mit.edu Parar la captura de paquetes Se debería obtener una traza que parece algo como lo siguiente: Se ve a partir de la pantalla de captura de arriba que nslookup de hecho envió 3 consultas (queries) DNS y recibió 3 respuestas DNS. Para el propósito de esta asignación, al responder a las siguientes preguntas, ignorar los 2 primeros conjuntos de consultas/respuestas, ya que ellos son específicos para nslookup y no son normalmente generados por las aplicaciones estándar de Internet. Se debería más bien enfocarse en los últimos mensajes de consulta (query) y de respuesta. 7 Leunam
11. Cuál es el puerto de destino para el mensaje query DNS? Cuál es el puerto fuente del mensaje de respuesta DNS? 12. A que dirección IP es el mensaje query DNS enviado? Es esta la dirección IP del servidor DNS local predeterminado? 13. Examinar el mensaje de consulta (query) DNS. Qué Type de consulta (query) DNS es? El mensaje de query contiene algunas respuestas? 14. Examinar el mensaje de respuesta DNS. Cuantas respuestas son proporcionadas? Qué contienen cada una de estas respuestas? 15. Proporcionar una pantalla de captura. 8 Leunam
Ahora repetir el experimento previo, pero a cambio emitir el comando: nslookup -type=ns mit.edu Responder las siguientes preguntas (examinar los 2 últimos mensajes): 16. A que dirección IP es enviado el mensaje de consulta (query) DNS? Es esta la dirección IP del servidor DNS local predeterminado? 17. Examinar el mensaje de consulta (query) DNS. Qué Type de query DNS es? El mensaje de query contiene algunas respuestas? 18. Examinar el mensaje de respuesta DNS. Qué servidores de nombre del MIT proporcionan el mensaje de respuesta? Este mensaje de respuesta también proporciona la dirección IP del los servidores de nombre del MIT? 19. Proporcionar una pantalla de captura. 9 Leunam
Ahora repetir el experimento previo, pero en su lugar emitir el comando: nslookup www.aiit.or.kr bitsy.mit.edu Responder las siguientes preguntas (examinar los 2 últimos mensajes): 20. A que dirección IP es enviado el mensaje de consulta (query) DNS? Es esta la dirección IP del servidor DNS local predeterminado? Si no, A que dirección IP corresponde? 21. Examinar el mensaje de consulta (query) DNS. Qué Type de query DNS es? El mensaje de consulta (query) contiene algunas respuestas? 22. Examinar el mensaje de respuesta DNS. Cuántas respuestas son proporcionadas? Qué contiene cada una de estas respuestas? 23. Proporcionar una pantalla de captura. 4. BIBLIOGRAFÍA: Adaptado de: Wireshark Labs Version: 2.0 2007 J.F. Kurose, K.W. Ross. 5. ANEXOS: 10 Leunam