Practica 3: Protocolos IP e ICMP - Obijuan/URJC-Gsyc-2018-Arquitectura-Internet GitHub Wiki
- 1. Análisis de la cabecera IP
- 2. Análisis de la fragmentación en IP
- 3. Configuración de tablas de encaminamiento con route
- 4. Configuración de tablas de encaminamiento mediante ficheros de configuración
- Apéndice: Introducción al análisis del escenario en NETGUI
En esta práctica se aprende a configurar las tablas de encaminamiento de las máquinas utilizando dos métodos distintos: interactivamente mediante el uso del mandato route
y estáticamente utilizando ficheros de configuración.
IMPORTANTE: Toma nota de todo lo que hagas en un cuaderno de laboratorio, ya sea en papel o en electrónico. En él debería constar, para cada apartado de esta y de la siguientes prácticas, los pasos que has tenido que ir dando para obtener los resultados pedidos, los comandos que has empleado, las respuestas a las preguntas que se realizan en el enunciado, y cualquier otra información que consideres oportuna para dejar constancia de lo que vas aprendiendo en cada práctica. Este cuaderno de laboratorio te será muy útil para repasar lo aprendido.
- Guión de la práctica en PDF: guion.pdf (opcional) (es lo mismo de esta wiki)
Ficheros que debes descargar para realizar la práctica:
- Captura 1: P3-cap1.cap
- Captura 2: P3-cap2.cap
- Escenario de red: P3-escenario.zip
- Información adicional: tabla-encaminamiento.pdf. Tabla de encaminamiento, arp, ping y traceroute
Carga en Wireshark el fichero de captura P3-cap1.cap
Selecciona el primer paquete y despliega los campos de la cabecera IP, en la zona donde se muestran los detalles de los protocolos para el paquete que está seleccionado.
Responde a las siguientes preguntas:
-
¿Cuál es la dirección IP origen y la dirección IP destino del paquete?
-
¿Crees que las máquinas que se están comunicando son vecinas y se están comunicando directamente o crees que lo hacen a través de uno o más routers? Piensa en los argumentos y evidencias que pueden justificar tu respuesta
-
Indica el valor del campo TTL para este paquete
-
Indica cuál es la longitud total del campo de datos de este datagrama.
Ahora selecciona el segundo paquete de la secuencia mostrada en el archivo de captura
-
¿Cuál es el valor del campo TTL en este caso?
-
Sabiendo que la captura de tráfico se ha realizado en la máquina destinataria del paquete, y que inicialmente el paquete lo envió la máquina origen con TTL=128, indica cuántos routers intermedios ha atravesado dicho paquete
-
Indica cuál es la longitud total del campo de datos de este datagrama
-
¿Qué protocolo de nivel superior a IP debe recibir, en la máquina de destino el mensaje de datos encapsulado dentro del datagrama?
Carga en wireshark el fichero P3-cap2.cap
Responde a las siguientes preguntas:
-
¿Crees que IP está aplicando fragmentación en alguno de los datagramas mostrados en la captura? Piensa en argumentos y evidencias que puedan justicar tu respuesta
-
¿Cuántos datagramas IP completos se pueden encontrar en esta captura? En caso de que se haya aplicado fragmentación sobre alguno de ellos, indica los siguientes datos para cada datagrama fragmentado:
- a) Identificador del datagrama.
- b) Número total de fragmentos en que ha sido dividido.
- c) Número de secuencia de captura en wireshark (panel superior, primera columna a la izquierda) del fragmento que ha permitido reconstruir por completo el datagrama
- d) ¿Cuál es el primer fragmento? Indica su número de secuencia de captura en Wireshark. ¿Por qué sabemos que lo es?
- e) ¿Cuál es el último fragmento? Indica su número de secuencia de captura en Wireshark. ¿Por qué sabemos que lo es?
- Estima cuál es el tamaño de la MTU de la capa por debajo de IP que está provocando que se realice fragmentación (si es que en verdad se produce fragmentación). Comprueba, para los fragmentos de datagramas que encuentres en la captura, el valor del campo offset de fragmentación. Verifica que los valores permiten reconstruir el datagrama original
Lanza ahora NetGUI y abre el escenario P3-escenario. Te aparecerá la siguiente red:
Este escenario realiza una configuración asignando direcciones IP a todas las interfaces de las máquinas, excepto a pc2. Esta configuración inicial está almacenada en el fichero /etc/network/interfaces de cada una de las máquinas, tal y como se ha visto en la práctica anterior
Arranca únicamente las siguientes máquinas: pc2, pc5, r2 y r3. Esto es lo que te aparecerá:
Teniendo en cuenta que sólo están estas máquinas arrancadas, responde a las siguientes cuestiones:
-
Escribe en pc2 la orden
ping 127.0.0.1
. ¿Obtienes mensajes de respuesta? ¿Quién está enviando esos mensajes de respuesta? Con la ordenroute
puedes consultar la tabla de encaminamiento. Comprueba la tabla de encaminamiento de pc2 para ayudarte a entender lo que está pasando -
Modifica el fichero /etc/network/interfaces de pc2 para que pc2 tenga una dirección IP acorde a la subred a la que está conectado. (Nota: Deberás consultar previamente la máscara de la subred que tienen las otras máquinas conectadas a la misma subred que pc2 y que estén arrancadas en ese momento). Reinicia la red en pc2 para que se aplique la configuración que has escrito en el fichero /etc/network/interfaces
-
Comprueba con
route
cómo en pc2, tras asignar la dirección IP a su interfaz de red, se ha añadido automáticamente una nueva entrada en la tabla de encaminamiento. Con esta tabla de encaminamiento en pc2, ¿a qué otras direcciones IP crees que podrá pc2 enviar datagramas IP? -
Dado que el resto de las máquinas tienen ya configurada una dirección IP, deberías poder suponer cuál es el contenido de su tabla de encaminamiento:
- ¿Cuál crees que será la tabla de encaminamiento de pc5?. Compruébalo consultando su tabla. Con esta tabla de encaminamiento, ¿a que otras direcciones IP crees que pc5 podrá enviar datagramas IP?
- ¿Cuál crees que será la tabla de encaminamiento de r3?. Compruébalo consultando su tabla. Con esta tabla de encaminamiento, ¿crees que r3 puede enviar datagramas IP a pc2 y pc5? ¿Y a pc9?
- ¿Cuál crees que será la tabla de encaminamiento de r2?. Compruébalo consultando su tabla. Con esta tabla de encaminamiento, ¿crees que r2 puede enviar datagramas IP a pc2 y pc5?. ¿Y a pc7?
-
Haz
ping
desde pc2 a pc5 y hazping
desde pc5 a la dirección de r3(eth0). Ten en cuenta que no puedes utilizar los nombres pc2, pc5, etc en el comando ping, sino que debes usar las direcciones IP correspondientes. ¿Funcionan estos comandos ping? ¿Qué entradas de las tablas de encaminamiento se consultan en cada caso? -
Haz un
ping
de pc2 a la dirección de r3(eth1). ¿Funciona este ping? ¿Por qué? -
Añade una ruta con el comando
route
en pc2 para que los datagramas IP que no sean para su propia subred los envíe a traves del router r3 a otras direcciones (según corresponda en cada caso). Comprueba después que la nueva configuración ha funcionado en r3 -
Haz ahora
ping
de pc2 a r2(eth2). ¿Funciona este ping? ¿Qué entradas de las tablas de encaminamiento se consultan? -
Haz
ping
de pc1 a pc8. ¿Por qué no funciona este ping? -
En función del contenido actual de las tablas de encaminamiento de las máquinas y del router, explica qué máquinas de la red no podrán comunicarse con el resto, en la situación actual
-
Añade las rutas que consideres necesarias utilizando el comando
route
para que funcione un ping de pc2 a pc5 y de pc2 a pc8. Ten en cuenta que podrás utilizar rutas de máquinas, rutas de subred o ruta por defecto -
Indica si crees que con la configuración que has realizado funcionará un ping de pc8 a pc2 y de pc9 a pc2. Compruébalo
Arranca el resto de las máquinas y routers de la red y obtendrás un diagrama similar a este:
Ten en cuenta que en pc1 ya tendrás configurada una dirección IP. Mantén esta configuración
-
En base a la información que observas en las diferentes interfaces que muestra el esquema, indica la dirección de red y la máscara que se podría asignar para identificar a la red completa de la figura (es decir, que englobe a todas las subredes individuales que se muestran)
-
¿Cuántas subredes distintas observas en la figura? Escribe la dirección IP que identifica a cada una de estas subredes junto con su máscara
-
Reinicia las máquinas pc2, r2 y r3
-
Consulta las tablas de encaminamiento en todas las máquinas y routers. Comprobarás que las rutas que configuraste en el apartado anterior han desaparecido. Los pcs y ruters sólo tienen ruta a las subredes a las que están directamente conectados. Por tanto sólo se podrán comunicar con sus máquinas vecinas en cada subred
-
Con la configuración actual, indica qué máquinas se pueden comunicar entre sí, especificando sus direcciones IP (anota toda esta información en el cuaderno de bitácora para repasarla luego y comprenderla)
-
Modifica el fichero /etc/network/interfaces en los ordenadores y en los rúters de la red de forma que funcionen las siguientes rutas. Podrás utilizar rutas de máquina, de subred o rutas por defecto:
- a) Conectividad entre pc1 y pc3 en los dos sentidos, a través de las siguientes rutas:
- pc1 ➜ r1 ➜ pc3
- pc3 ➜ r1 ➜ pc1
- Ejecuta en pc1 la orden
ping -c 3 <dirIPpc3>
para comprobar si hay conectividad entre las máquinas. Para verificar que el camino es el descrito previamente, deberás ejecutarroute
en pc1 y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc3. Esta entrada debería indicar que el siguiente salto es r1. A continuación en r1 deberás ejecutarroute
y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc3. Esta entrada debería indicar que r1 no necesita ningún rúter adicional para alcanzar pc3 - De forma análoga deberás consultar las tablas de encaminamiento en el sentido inverso: pc3 ➜ r1 ➜ pc1
- b) Conectividad entre pc3 y pc5 en los dos sentidos, a través de las siguientes rutas:
- pc3 ➜ r2 ➜ pc5
- pc5 ➜ r2 ➜ pc3
- Ejecuta en pc3 la orden
ping -c 3 <dirIPpc5>
para comprobar si hay conectividad entre las máquinas. Para verificar que el camino es el descrito previamente, deberás ejecutarroute
en pc3 y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc5. Esta entrada debería indicar que el siguiente salto es r2. A continuación en r2 deberás ejecutarroute
y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc5. Esta entrada debería indicar que r2 no necesita ningún rúter adicional para alcanzar pc5 - De forma análoga deberás consultar las tablas de encaminamiento en el sentido inverso: pc5 ➜ r2 ➜ pc3
- c) Conectividad entre pc1 y pc7 en los dos sentidos, a través de las siguientes rutas:
- pc1 ➜ r1 ➜ r2 ➜ pc7
- pc7 ➜ r2 ➜ r1 ➜ pc1
- Ejecuta en pc1 la orden
ping -c 3 <dirIPpc7>
para comprobar si hay conectividad entre las máquinas. Para verificar que el camino es el descrito previamente, deberás ejecutarroute
en pc1 y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc7. Esta entrada debería indicar que el siguiente salto es r1. Después, deberás ejecutarroute
en r1 y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc7. Esta entrada debería indica que el siguiente salto es r2. A continuación en r2 deberás ejecutarroute
y observar qué entrada de la tabla de encaminamiento se utiliza cuando se desea alcanzar pc7. Esta entrada debería indicar que r2 no necesita ningún rúter adicional para alcanzar pc7 - De forma análoga deberás consultar las tablas de encaminamiento en el sentido inverso: pc7 ➜ r2 ➜ r1 ➜ pc1
-
Ejecuta en pc1 un
traceroute
hacia pc3 y en pc3 untraceroute
hacia pc1, para comprobar que las rutas son las especificadas -
Ejecuta en pc3 un
traceroute
hacia pc5 y en pc5 uno hacia pc3 para comprobar que las rutas son las especificadas -
Ejecuta en pc1 un
traceroute
hacia pc7 y en pc7 uno hacia pc1 para comprobar que las rutas son las especificadas. En este últimotraceroute
observarás que aparecen unos *. ¿A qué crees que se debe?
Antes de comenzar a realizar los siguientes ejercicios asegúrate de que las rutas entre las máquinas son las especificadas en el apartado anterior, y que se pueden comunicar correctamente entre sí
-
Lanza
tcpdump
, almacenando los paquetes capturados en ficheros diferentes, capturando tráfico en las siguientes interfaces: r1(eth0), r2(eth0), r3(eth1) y pc5(eth0) -
Ejecuta en pc1 un
ping
a pc5 que envíe sólo 2 paquetes (ping -c 2 <máquinaDestino>
) -
Interrumpe las 4 capturas en todas las máquinas (ejecutando en cada ventana de terminal Ctrl+C)
-
En un terminal de la máquina real lanza la aplicación wireshark 4 veces, una para cada fichero de captura creado en el punto anterior, de forma que se puedan ver simultáneamente las distintas capturas. Observa en las capturas cómo los datagramas IP que se envían y reciben con la orden
ping
contienen un mensaje de ICMP. Comprueba en estos datagramas los siguientes datos de las cabeceras IP e ICMP:
- Dirección IP origen
- Dirección IP destino
- TTL en la cabecera IP
- Tipo de Protocolo en la cabecera IP
- tipo y Código en la cabecera ICMP
- Consultando las capturas, responde a las siguientes cuestiones:
- a) ¿En qué se distinguen los mensajes "de ida" del
ping
de los mensajes "de vuelta"? - b) ¿En qué capturas se pueden ver los mensajes "de ida" del ping? ¿Y los mensajes de vuelta? ¿Por qué?
- c) Comprueba los valores del campo TTL de la cabecera IP de todos los datagramas de todas las capturas y explica dichos valores
-
Arranca de nuevo
tcpdump
en las mismas máquinas e interfaces que lo has hecho anteriormente pero guardando las capturas en otros ficheros diferentes: en r1(eth0), en r2(eth0), en r3(eth1) y en pc5(eth0) -
Ejecuta en pc1 la orden
traceroute
a pc3 -
Cuando la orden anterior haya terminado, interrumpe las capturas ( Ctrl+C )
-
A la vista del resultado que se ha obtenido en pc1: ¿qué saltos intermedios ha atravesado un paquete para llegar de pc1 a pc5?
-
Abre con wireshark los nuevos ficheros de captura que has obtenido. Identifica en los ficheros de capturas los siguientes paquetes:
- Los 3 mensajes enviados por pc1 con TTL=1
- Los 3 ICMP de TTL excedido enviados por r1
- Los 3 mensajes enviados por pc1 con TTL=2
- Los 3 ICMP de TTL excedido enviados por r2
- Los 3 mensajes enviados por pc1 con TTL=3
- Los 3 ICMP de puerto inalcanzable enviados como respuesta por pc5
- Consultando las capturas, responde a las siguientes cuestiones:
- a) ¿Por qué ruta van viajando los mensajes enviados por pc1 con TTL creciente?
- b) ¿Por qué ruta viajan los ICMP enviados por r1? ¿Qué dirección IP usa r1 como IP de origen al enviar esos ICMP?
- c) ¿Por qué ruta viajan los ICMP enviados por r2? ¿Qué dirección IP usa r2 como IP de origen al enviar esos ICMP?
- d) ¿Por qué ruta viajan los ICMP enviados por pc5?
Descarga el fichero p3-escenario.zip que contiene un escenario de red. Descomprímelo. Se creará la carpeta P3-escenario. En ella se encuentran los ficheros del escenario
Entre los ficheros del escenario se incluye el script reset-lab
, que devuelve el escenario a su estado inicial cuando se ejecuta. Para ejecutar el script hay que estar en la carpeta del escenario, y desde allí escribir en una ventana de terminal de la máquina real:
./reset-lab
Si se desea simplemente devolver algunas máquinas a su estado inicial, pero no todas, es dcir, si por ejemplo se dea devolver al estado inicial sólo pc1 y r1, se escribirá:
./reset-lab pc1 r1
Tras descomprimir el escenario este se encuentra en su estado inicial, por lo que no es necesario ejecutar reset-lab
al principio
NOTA: Para realizar esta práctica tendrás que consultar la documentación adicional sobre los comandos para
modicar la tabla de encaminamiento, y sobre los comandos ping
y traceroute