Vous êtes sur la page 1sur 13

Práctica

2

FUNDAMENTOS DE REDES DE COMPUTADORES

Curso 2010/2011

Práctica 2:

Estudio de los protocolos DHCP y DNS

Introducción

En esta práctica vamos a trabajar con algunas herramientas que nos pueden ayudar a entender cómo funciona una red y lo que está pasando en ella, y que nos permitirán analizar posibles problemas. Además, podremos ver en vivo distintos protocolos, su funcionamiento, la estructura de sus mensajes, y el intercambio de peticiones y respuestas entre los clientes y los servidores.

En primer lugar vamos a trabajar con dos comandos que suelen venir incluidos en diferentes Sistemas Operativos, como son ipconfig y nslookup. El primero es una utilidad de línea de comandos que muestra la configuración de red actual de un ordenador local (dirección IP, máscara de red, puerta de enlace asignada a la tarjeta de red, etc.), así como también permite controlar el servicio Windows que actúa como cliente DHCP. En Linux, este comando se denomina ifconfig.

El

siguiente comando (nslookup) nos muestra el funcionamiento de peticiones y respuestas

al

servidor DNS. Este comando, además de permitirnos conocer cuál es nuestro servidor

DNS, nos permitirá solicitar información de nombres de dominio. Sus distintas opciones nos ayudarán a conocer la información a distintos niveles de detalle.

A continuación trabajaremos con un analizador de red, también conocidos vulgarmente

como “sniffers”. En concreto vamos a trabajar con WireShark (anteriormente conocido como Ethereal), que es uno de los más populares de entre la amplia oferta que hay, tanto comerciales como de libre distribución. Otros analizadores de red, que no veremos en estas

prácticas, son tcpdump, NetXRay, libpcap, snoop, Novell LANalyzer, Microsoft Network Monitor, iptrace… la oferta, como se ha comentado, es muy amplia.

Utilización de ipconfig

Como se ha comentado, ipconfig permite obtener la configuración de red del computador local. A continuación se muestran algunas opciones del comando ipconfig en Windows:

muestran algunas opciones del comando ipconfig en Windows: En primer lugar, vamos a obtener los datos

En primer lugar, vamos a obtener los datos actuales de nuestro ordenador. Para ello, en la línea de comandos escribiremos simplemente ipconfig:

D:\ ipconfig

La respuesta obtenida debe ser algo similar a esto:

Configuración IP de Windows

Adaptador Ethernet Conexión de área local

:

Sufijo de conexión específica DNS : upv.es

Dirección Máscara de subred Puerta de enlace predeterminada

: 158.42.180.1 : 255.255.254.0 : 158.42.181.250

Obsérvese que hemos obtenido cuatro datos: el nombre de dominio por defecto del servidor DNS y las direcciones IP de nuestra máquina, de la máscara de subred y de la puerta de enlace. Sin embargo, podemos obtener muchos más datos relacionados con la configuración de red en nuestra máquina. Escriba en la línea de comandos ipconfig /all.

D:\ ipconfig /all

Como se puede observar, se obtiene toda la información de la configuración de red de nuestra máquina.

1: ¿Cuándo se ha obtenido la concesión de la dirección IP? ¿Cuándo caduca?

2: Ejecuta ahora ipconfig /release y después ejecuta ipconfig /all. ¿Cuál ha sido el efecto de ejecutar ipconfig /release? ¿Con qué mensaje(s) y estado(s) DHCP se corresponde?

3: Ejecuta ahora ipconfig /renew y después ejecuta ipconfig /all. ¿Cuál ha sido el efecto de ejecutar ipconfig /renew? ¿Con qué mensaje(s) y estado(s) DHCP se corresponde?

Utilización de nslookup

nslookup es un programa que nos permite lanzar consultas al servidor DNS, con el objetivo principal de conocer la dirección IP que corresponde a un nombre de dominio. Para utilizar nslookup arrancaremos los equipos del laboratorio con sistema operativo Linux. A continuación abriremos una ventana de comandos.

En primer lugar, podemos hacer una consulta sencilla al servidor de nombres de dominio. Para ello en la línea de comandos escribiremos nslookup www.google.com:

fureco@rdcXX:~> nslookup www.google.com

La respuesta obtenida debe ser algo similar a esto:

Server:

158.42.249.8

Address:

158.42.249.8#53

Non-authoritative answer:

www.google.com canonical name = www.google.akadns.net. Name: www.google.akadns.net Address: 64.233.161.99 Name: www.google.akadns.net Address: 64.233.161.104

Obsérvese que hemos obtenido la dirección IP del servidor DNS utilizado para la búsqueda,

y que la respuesta nos ofrece, también, el nombre canónico y las direcciones IP. En este caso se incluyen más de una dirección IP.

4: ¿Son equivalentes las direcciones IP? Compruébalo ejecutando un navegador y poniendo en la línea de direcciones http://www.google.com. A continuación cierra el navegador, ábrelo de nuevo y pon en la línea de direcciones http://64.233.161.99 (o la primera de las direcciones que hayas obtenido). Haz la misma prueba con todas las direcciones obtenidas. ¿Cuál crees que es el motivo de que haya más de una dirección IP?

5: ¿Qué quiere decir el #53 que aparece junto a la dirección del servidor DNS? ¿Cuál es el puerto estándar utilizado por el protocolo DNS?

A continuación vamos a ejecutar el programa sin parámetros, con lo que podremos ejecutar

distintos comandos y consultas de modo interactivo:

fureco@rdcXX:~> nslookup

Nos aparece un prompt donde introducir comandos o hacer consultas. Vamos a indicarle

que nos muestre la información de depuración. Para ello utilizamos la opción set debug y

a continuación haremos una consulta. Vamos a intentarlo con www.celestica.com. La respuesta debe ser algo similar a esto:

> set debug

> www.celestica.com

Server:

158.42.249.8

Address:

158.42.249.8#53

------------

QUESTIONS:

www.celestica.com, type = A, class = IN ANSWERS:

-> www.celestica.com canonical name = celestica.com. -> celestica.com internet address = 32.96.234.99 AUTHORITY RECORDS:

-> celestica.com nameserver = mtldns.qu.ca.prserv.net. -> celestica.com nameserver = tordns.on.ca.prserv.net. ADDITIONAL RECORDS:

-> mtldns.qu.ca.prserv.net

internet address = 205.233.29.137 -> tordns.on.ca.prserv.net

internet address = 205.233.28.137

------------

Non-authoritative answer:

www.celestica.com

celestica.com

Address: 32.96.234.99

>

Name:

canonical name = celestica.com.

Obsérvense las distintas informaciones que se obtienen: tipo de los registros, respuestas, códigos de retorno, etc. Los AUTHORITY RECORDS indican los servidores DNS autorizados para resolver esa consulta.

6: Observa que se han obtenido dos respuestas. ¿Sabes de qué tipo es cada una? ¿La respuesta obtenida viene de la cache?

Hagamos otra prueba. Vamos a preguntar por un nombre de dominio que no exista:

www.noexiste.fr. El resultado debe ser algo así:

> www.noexiste.fr Server:

Address:

158.42.249.8

158.42.249.8#53

------------

QUESTIONS:

www.noexiste.fr, type = A, class = IN

ANSWERS:

AUTHORITY RECORDS:

fr origin = ns1.nic.fr mail addr = nic.nic.fr serial = 2004110900 refresh = 10800 retry = 1800 expire = 3600000 minimum = 5400 ADDITIONAL RECORDS:

->

------------

** server can't find www.noexiste.fr: NXDOMAIN

>

Vemos que la respuesta del dominio de nivel superior “fr” es negativa.

Haced la prueba con www.google.com y comparadla con la primera que obtuvimos. Haced más pruebas, por ejemplo, con www.upv.es, www.hotmail.com, etc.

7: A partir de la respuesta obtenida de www.hotmail.com, ¿qué conclusiones puedes obtener? ¿Qué tipo de servidor es?

8: ¿Cuántos servidores autorizados tiene la web de la UPV? ¿La respuesta para www.upv.es viene de la cache? ¿Por qué?

Nota: nslookup también se puede ejecutar en Windows XP. Funciona de forma similar y ofrece informaciones parecidas. Además dispone de ayuda en el entorno interactivo (comando “help”), que puede ser útil para afinar las informaciones que se quieren obtener.

Analizando la red: WireShark

Los analizadores de protocolos o de red, también llamados sniffers son herramientas de gran ayuda para los administradores de redes de computadores, ya que permiten analizar muchos factores del comportamiento de las mismas. Este tipo de programas permiten recoger una copia de los paquetes que circulan por la red y visualizarla. Los más avanzados poseen interfaz gráfica, que muestra los campos de los protocolos de comunicación de los distintos niveles para su posterior análisis. De esta forma se facilita la detección de problemas, así como la depuración del software de red durante su fase de elaboración. Por ejemplo, un administrador de red que detecte que las prestaciones de la red son bajas puede utilizar un analizador para detectar qué segmentos de la red, protocolos y máquinas están generando más tráfico, y de esa forma llevar a cabo las acciones necesarias.

También, cuando se configura un cortafuegos se pueden utilizar los resultados de un analizador de red para detectar si su comportamiento se ajusta o no a la política de seguridad deseada.

Finalmente, los analizadores de protocolos nos permiten ver de forma práctica los protocolos de comunicación ya presentados en las clases de teoría, así como las relaciones entre los protocolos de distinto nivel. Esta posibilidad nos va a ser especialmente útil en esta práctica y la siguiente, permitiendo ver en vivo los distintos protocolos y su interacción, y a la vez aprender a manejar este tipo de herramientas.

¿Por qué WireShark? Se trata de un producto muy popular y gratuito. Puede descargarse desde http://www.wireshark.org/download.html, y se encuentra disponible tanto para sistemas Windows como Unix, siendo muy versátil, ya que permite no sólo decodificar tráfico de una red, sino filtrarlo y analizarlo de forma gráfica. Se pueden hacer capturas y guardarlas en fichero para analizarlas posteriormente. Además, permite leer también ficheros de datos recogidos con otros analizadores de protocolos.

Podemos trabajar con WireShark tanto en Linux como en Windows XP. El aspecto habitual

del programa es el que se muestra en la figura de la página siguiente. WireShark comprende tres ventanas o áreas principales:

1. La ventana superior es la lista de los paquetes. Muestra una breve descripción de cada paquete capturado. Pulsando en alguno de los paquetes de la lista podemos controlar lo que se visualiza en las dos ventanas restantes.

2. La ventana intermedia muestra con mayor detalle el paquete seleccionado en la primera ventana. Indica los protocolos empleados en los distintos niveles de la arquitectura, así como los valores de cada uno de los campos de cada protocolo.

3. Por último, la ventana inferior muestra el valor de los datos del paquete seleccionado en la ventana superior, en hexadecimal y en ASCII, y marca en negro los datos seleccionados en la ventana intermedia.

Inicialmente las ventanas aparecen vacías, ya que no hay ninguna captura. Para comenzar a trabajar, podemos utilizar la opción File Open para abrir una captura ya existente, o bien utilizar la opción Capture Start para iniciar una nueva captura de lo que sucede actualmente en la red.

una nueva captura de lo que sucede actualmente en la red. Dado que la red de

Dado que la red de la UPV es muy grande, continuamente se está generando y recibiendo mucho tráfico que, aunque nos servirá para ver la diversidad de protocolos y sus campos, puede hacer que tengamos muchos paquetes que carezcan de interés para las pruebas que vamos a realizar. Para minimizar este problema, es conveniente limitar en lo posible el tiempo de las capturas.

Uso de WireShark para estudiar el protocolo DNS

Vamos a empezar con una captura sencilla. Para ello vamos a seguir los siguientes pasos (se recomienda utilizar Windows):

Abrir el navegador.

Abrir el WhireShark.

Ponemos en marcha la captura con el WhireShark, primero eligiendo el interfaz

correspondiente mediante Capture Interfaces y a continuación poniendo en marcha la captura con la opción Capture Start. Volver al navegador y conectaros a la página www.celestica.com.

Una vez descargada la página web de www.celestica.com volver al WhireShark y detener la captura.

Como podéis observar, esta primera captura tendrá una gran cantidad de paquetes de diferentes protocolos, entre otros, los mensajes intercambiados con el servidor DNS utilizando el protocolo DNS. Para poder estudiar únicamente los paquetes que nos interesan, tenemos distintas opciones. Una de ellas es la opción Edit Find Packet, que nos permite buscar según determinadas condiciones, como puede ser buscar un protocolo concreto o valores en campos concretos dentro del paquete.

La segunda opción es el filtrado, que podemos encontrar pulsando el botón Filter en la parte superior de la pantalla. Nos permite filtrar protocolos o valores en campos dentro de los protocolos. La diferencia entre esta segunda opción y la primera es que la primera busca paquetes concretos y los selecciona, pero sin ocultar los demás, mientras que el filtrado oculta los paquetes que no cumplen las condiciones indicadas en el filtro.

Vamos a filtrar la captura para quedarnos solamente con los paquetes DNS. Para ello, en el campo Filter introducir la expresión udp.port == 53 y apretar Apply. Como podéis observar, sólo quedan aquellos paquetes del protocolo DNS.

9: ¿Coincide el destinatario de este mensaje con el servidor DNS que obtuvimos en las pruebas que hicimos con nslookup?

Dado que ya conocemos este protocolo, podemos utilizar la ventana intermedia de WireShark para distinguir los campos del mensaje. Observamos que aparecen distintos niveles de información, correspondientes a la pila de protocolos TCP/IP. Si en la ventana intermedia pulsamos el botón derecho del ratón y seleccionamos Collapse All vemos los distintos niveles, desde el nivel físico, en la primera línea, hasta el nivel de aplicación, en la inferior. Además, si seleccionamos cada una de las líneas (sin expandirlas, de momento) en la parte inferior veremos remarcada la parte correspondiente a cada protocolo. Si ahora expandimos cualquiera de las líneas, obtendremos los detalles de ese protocolo.

Seleccionar y expandir todos los datos correspondientes al protocolo DNS e identificad cada uno de los campos. El primer paquete es la consulta al servidor. El siguiente debe ser la respuesta.

10: ¿Qué servicio utiliza DNS? ¿TCP o UDP? ¿A qué puerto se está enviando la petición? ¿Con qué lo relacionas?

11: Comparad los campos de la respuesta con lo que obtuvimos con nslookup. ¿En qué se parecen? ¿En qué se diferencian?

12: Buscad la primera consulta y su respuesta. En esta respuesta, identificad la pregunta, la respuesta (una o varias), los servidores autorizados y la información adicional.

Fijémonos ahora en los protocolos de las capas inferiores. Podemos observar que cada protocolo añade una cabecera. Seleccionando cada uno de ellos en la ventana central se resalta la parte correspondiente en la ventana inferior. El protocolo DNS utiliza un servicio no orientado a conexión, es decir, utiliza UDP como protocolo de la capa de transporte. Expandid en la ventana central la línea correspondiente al protocolo UDP y observad sus campos. Por debajo de UDP trabaja el protocolo de la capa de red, IP. Expandid la línea correspondiente. Podéis observar los campos de este protocolo.

el protocolo de la capa de red, IP. Expandid la línea correspondiente. Podéis observar los campos

13: ¿Podéis identificar las direcciones fuente y destino? ¿Qué relación hay entre los valores que aparecen en la ventana intermedia y los bytes que se resaltan en la pantalla inferior? ¿Qué tipo de direcciones son?

Por debajo de la capa de red tenemos la capa de acceso al medio físico. Expandid la línea correspondiente al protocolo Ethernet. Observad los campos. Expandid también la primera línea, la cual da información acerca de los datos de la trama recibida.

da información acerca de los datos de la trama recibida. 14 : ¿Podéis identificar las direcciones

14: ¿Podéis identificar las direcciones fuente y destino en el protocolo Ethernet? ¿Qué tipo de direcciones son?

Uso de WireShark para estudiar el protocolo DHCP

En este apartado vamos a estudiar el protocolo DHCP mediante el WireShark. Para ello, vamos a utilizar el comando ipconfig que hemos utilizado en la primera parte de la práctica. Seguid los siguientes pasos:

Abrir una consola de comandos y teclear ipconfig /release, pero no apretéis la tecla intro. Poner en marcha una captura con el WireShark. Volver a la consola de comandos y apretar el intro. Ejecutar ipconfig /renew. Una vez finalizado este último comando, detener la captura.

Como podéis observar, y al igual que pasaba con el DNS, WireShark muestra una gran cantidad de paquetes de diferentes protocolos. Vamos a filtrarlos para mostrar solamente los paquetes DHCP. En el campo Filter introducir udp.port == 67 y apretar Apply.

15: ¿Qué servicio utiliza DHCP? ¿TCP o UDP? ¿A qué puerto se está enviando la petición? ¿Con qué lo relacionas?

16: Identificad los distintos mensajes DHCP que se han capturado, y a qué estado corresponde cada uno.

17: Identificad los distintos servidores que nos ofrecen direcciones IP y el tiempo de arrendamiento de cada uno de ellos. ¿Cuál crees que es la razón por la que existen varios servidores DHCP dentro de la red de la UPV?

18: Justificad el envío de los diferentes mensajes DHCPACK. ¿Por qué se envían? ¿Quién es el destinatario? ¿Y el remitente?

19: Una vez obtenida la dirección IP, identifica el resto de información que nos ofrece el protocolo DHCP: dirección del router, máscara de red en uso (máscara de subred), servidor de nombres de dominio.

20: Sea el formato del mensaje DHCP visto en clase y que se muestra en la siguiente figura. Busca un mensaje de petición y otro de respuesta y rellena las tablas de las páginas siguientes.

Formato mensaje DHCP:

OP

OP

HTYPE

HTYPE

HLEN

HLEN

HOPS

HOPS

 

ID DE TRANSACCION

ID DE TRANSACCION

 

SEGUNDOS

SEGUNDOS

BANDERAS

BANDERAS

 

DIRECCION IP DEL CLIENTE

DIRECCION IP DEL CLIENTE

 
 

SU DIRECCION IP

SU DIRECCION IP

 
 

DIRECCION IP DEL SERVIDOR

DIRECCION IP DEL SERVIDOR

 
 

DIRECCION IP DEL ROUTER

DIRECCION IP DEL ROUTER

 

DIRECCION DE HARDWARE DE CLIENTE (16 OCTETOS)

DIRECCION DE HARDWARE DE CLIENTE (16 OCTETOS)

 

.

.

.

.

.

.

 

NOMBRE DE SERVIDOR (64 OCTETOS)

NOMBRE DE SERVIDOR (64 OCTETOS)

 
 

.

.

.

.

.

.

NOMBRE DEL ARCHIVO DE ARRANQUE (128 OCTETOS)

NOMBRE DEL ARCHIVO DE ARRANQUE (128 OCTETOS)

 

.

.

.

.

.

.

 

OPCIONES (VARIABLE)

OPCIONES (VARIABLE)

 
 

.

.

.

.

.

.

Mensaje DHCP de Petición:

OP: 1 Solicitud

OP: 1 Solicitud

HTYPE:

HTYPE:

HLEN:

HLEN:

HOPS:

HOPS:

ID DE TRANSACCION:

ID DE TRANSACCION:

SEGUNDOS:

SEGUNDOS:

BANDERAS:

BANDERAS:

DIRECCION IP DEL CLIENTE:

DIRECCION IP DEL CLIENTE:

 

SU DIRECCION IP:

SU DIRECCION IP:

DIRECCION IP DEL SERVIDOR:

DIRECCION IP DEL SERVIDOR:

 

DIRECCION IP DEL ROUTER:

DIRECCION IP DEL ROUTER:

 

DIRECCION DE HARDWARE DE CLIENTE (16 OCTETOS):

DIRECCION DE HARDWARE DE CLIENTE (16 OCTETOS):

 

NOMBRE DE SERVIDOR (64 OCTETOS):

NOMBRE DE SERVIDOR (64 OCTETOS):

 

NOMBRE DEL ARCHIVO DE ARRANQUE (128 OCTETOS):

NOMBRE DEL ARCHIVO DE ARRANQUE (128 OCTETOS):

 

OPCIONES (VARIABLE):

OPCIONES (VARIABLE):

Mensaje DHCP de Respuesta:

OP: 2 Réplica

OP: 2 Réplica

HTYPE:

HTYPE:

HLEN:

HLEN:

HOPS:

HOPS:

ID DE TRANSACCION:

ID DE TRANSACCION:

SEGUNDOS:

SEGUNDOS:

BANDERAS:

BANDERAS:

DIRECCION IP DEL CLIENTE:

DIRECCION IP DEL CLIENTE:

 

SU DIRECCION IP:

SU DIRECCION IP:

DIRECCION IP DEL SERVIDOR:

DIRECCION IP DEL SERVIDOR:

 

DIRECCION IP DEL ROUTER:

DIRECCION IP DEL ROUTER:

 

DIRECCION DE HARDWARE DE CLIENTE (16 OCTETOS):

DIRECCION DE HARDWARE DE CLIENTE (16 OCTETOS):

 

NOMBRE DE SERVIDOR (64 OCTETOS):

NOMBRE DE SERVIDOR (64 OCTETOS):

 

NOMBRE DEL ARCHIVO DE ARRANQUE (128 OCTETOS):

NOMBRE DEL ARCHIVO DE ARRANQUE (128 OCTETOS):

 

OPCIONES (VARIABLE):

OPCIONES (VARIABLE):