Práctica 9 - Capa de red II#

El objetivo de esta práctica es descubrir la jerarquía de redes locales a través del protocolo ICMP. Para ello se utilizará la herramienta wireshark para realizar las capturas correspondientes a las transmisiones.

Evaluación#

Esta práctica es evaluable (0.5 puntos sobre los 3.0 puntos totales de las prácticas), por lo que deberás acceder al cuestionario correspondiente en Campus Virtual. El cuestionario se cerrará al acabar sesión. Cada respuesta errónea se penalizará con un 1/3 del valor asignado a cada pregunta.

Preparación#

Para la realización de la práctica es necesario que la conexión de red esté configurada correctamente:

  1. Se suponen conocidos aspectos ya vistos en prácticas anteriores, por ejemplo, el comando para conocer la propia IP y el manejo de Wireshark y Tshark.

  2. Prepara tu directorio de trabajo. Como siempre, en /home/alumno crea un directorio llamado p9. Puedes hacerlo con estos comandos:

    rm -rf p9
    mkdir p9
    cd p9
    pwd
    

    Debe devolver:

    /home/alumno/p9
    

traceroute#

Nota

Utiliza apt si necesitas instalar traceroute.

La utilidad traceroute de GNU/Linux proporciona información acerca de la ruta que toman los paquetes desde el host origen hasta alcanzar el host de destino. Para ello, utiliza el campo de la cabecera IP TTL (Time To Live), el cual se codifica como un contador de saltos (por defecto con valor 64) e indica el número máximo de saltos que un paquete puede dar en Internet antes de ser descartado. En cada salto el campo TTL se decrementa en una unidad, de manera que cuando este contador llega a 0 el paquete se descarta y el host que lo descarta informa al host origen enviando un mensaje ICMP con su IP y una estimación del tiempo Round-Trip delay Time (RTT).

El funcionamiento de traceroute es el siguiente: envía un paquete TTL=1 que será descartado en el primer salto. Dicho host devuelve su IP y su RTT. A continuación, envía un segundo paquete IP con TTL=2 que será descartado en el segundo salto, el cual devolverá la misma información. El proceso se repite sucesivamente con TTL=3, 4… hasta que el paquete alcanza su destino. Si no se devuelve respuesta de algún salto en un tiempo máximo de 5 segundos (por defecto), se muestra un asterisco *. Esto ocurre cuando firewalls u otros dispositivos de seguridad bloquean tráfico.

Pruébalo con:

traceroute -n 8.8.8.8

y obtendrás una salida similar a la siguiente:

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  172.24.212.2  0.686 ms  0.593 ms  0.683 ms
 2  172.16.160.42  1.463 ms  1.476 ms  1.349 ms
 3  * * *
 4  130.206.212.1  4.242 ms  4.210 ms  4.140 ms
 5  130.206.245.25  4.280 ms  5.958 ms  5.907 ms
 6  * * *
 7  74.125.242.161  4.093 ms 74.125.242.177  5.193 ms 74.125.242.161  4.012 ms
 8  74.125.253.197  5.144 ms 209.85.247.245  4.494 ms 142.250.213.127  4.107 ms
 9  8.8.8.8  4.076 ms  4.350 ms  4.154 ms

La primera columna se corresponde con el número de salto, la segunda proporciona el nombre de host y la IP del salto alcanzado, y las tres columnas siguientes se corresponden con tres valores RTT, que es el tiempo de ida y vuelta del paquete desde el host origen hasta ese punto. Hay tres valores porque traceroute, por defecto, manda tres datagramas de señalización diferentes. Si alguna de las tres pruebas RTT no devuelve respuesta, se muestra en su tiempo RTT un asterisco *. Los * * * indican, por tanto, que no se ha recibido ninguna respuesta a las pruebas RTT para ese salto en concreto.

traceroute permite, por tanto, determinar el ruta IP que puede seguir un paquete enviado desde su origen hasta su destino, así como el estado de la ruta en cada punto gracias a los valores de tiempo RTT que ofrece.

traceroute a google.es#

  1. Arranca wireshark e inicia el proceso de captura en la interfaz conectada a Internet.

  2. Ejecuta:

    sudo traceroute -n -I -N 1 -q 1 google.es
    

    Cuyas opciones son:

    • -n: evita que traceroute muestre el nombre del host de forma que sólo muestre las direcciones IP.

    • -I: fuerza a traceroute a utilizar ICMP.

    • -N: el número de datagramas de prueba que se envían silmultáneamente (por defecto es 16).

    • -q: el número de datagramas de prueba que se envían por salto (por defecto 3).

  3. Una vez terminado el comando anterior, para la captura. Deberías observar las peticiones ICMP con sus correspondientes mensajes de error de respuesta. Si quieres, salva la captura como google-es.pcapng.

  4. Con el filtro de visualización puesto a icmp, contesta a las preguntas del formulario asociadas a esta parte.

traceroute a microsoft.es#

  1. Realiza el mismo ejercicio que antes, pero ahora a microsoft.es. En este caso, ejecuta:

    sudo traceroute -n -I -N 1 -q 1 -m 10 microsoft.es
    

    La opción -m permite definir el valor máximo del campo TTL que se va a utilizar. En este caso, al llegar a 10 se abortará la ejecución.

  2. Contesta a las preguntas del formulario asociadas a esta parte.

mtr#

mtr es una herramienta que funciona sobre los mismos principios que traceroute pero está diseñada para medir la calidad de las rutas en cada punto.

  1. Instala mtr con:

    sudo apt install mtr-tiny
    
  2. Ejecuta el siguiente ejemplo:

    mtr -n -c 3 -r 8.8.8.8
    

    Que hará una prueba hacia 8.8.8.8, con las siguientes opciones:

    • -n: evita que muestre el nombre del host de forma que sólo muestre las direcciones IP.

    • -c: limita la prueba a 3 peticiones a cada punto de la ruta.

    • -r: muestra la salida al final del proceso en vez de entrar en modo interactivo.

  3. La salida de este comando muestra los siguientes valores por cada punto de la ruta:

    • Loss%: porcentaje de datagramas perdidos.

    • Snt: número de datagramas enviados.

    • Last: RTT del último datagrama en ms

    • Avg: media del RTT en ms.

    • Best: el mejor RTT registrado en ms.

    • Wrst: el peor RTT registrado en ms.

    • StDev: desviación estándar de los RTT.

    Nota

    Los datagramas perdidos ya se marcan como ???.

  4. Con la salida obtenida y todo lo aprendido hasta ahora, contesta a las preguntas asociadas.

ip route#

Con el comando ip route se pueden ver y manipular las rutas por las que los datagramas IP serán enviados cuando salen desde tu host.

Por ejemplo, ejecuta:

ip route

Y obtendrás una salida similar a la siguiente:

default via 192.168.1.1 dev ens3 proto dhcp metric 600
192.168.1.0/24 dev ens3 proto kernel scope link src 192.168.1.232 metric 600

Cada línea representa una ruta configurada en tu host:

  • La primera línea muestra la ruta por defecto. Esta ruta es la que tomarán los datagramas IP cuya dirección destino no esté incluída en ninguna de las otras reglas. En este caso, estos datagramas se retransmitirán al host 192.168.1.1 utilizando la interfaz ens3. Este host es la puerta de enlace o gateway y es la ruta que se utiliza para los datagramas que van a Internet.

  • La segunda línea será para aquellos datagramas cuya dirección destino está dentro de la red 192.168.1.0/24, en cuyo caso se enviará por la interfaz ens3 y será entrega directa (scope link), por lo que no hay que reenviarlo a ningún router intermedio. Esta es la ruta que tomarán los paquetes dirigidos a nuestra propia LAN.

Puedes comprobar la ruta que tomará un datagrama con una IP destino que proporciones al comando ip. Por ejemplo:

ip route get 8.8.8.8

Mostrará algo similar a:

8.8.8.8 via 192.168.1.1 dev ens3 src 192.168.1.232 uid 1000
    cache

Indicando que un datagrama IP con destino a 8.8.8.8 se reenviará a 192.168.1.1.

Rutas#

Antes de ejecutar los comandos, lee todo el ejercicio al completo ya que te será de gran ayuda para entender mejor las preguntas.

  1. Ejecuta:

    ip route
    
  2. Responde a las preguntas asociadas del cuestionario.

Cambio de rutas#

Antes de cada paso, lee todo el ejercicio al completo.

  1. Vamos a eliminar la ruta al gateway. Ejecuta:

    sudo ip route del default
    
  2. Ahora lo vamos a sustituir por otro:

    sudo ip route add default via 172.24.212.48
    
  3. Contesta a las preguntas de esta parte del cuestionario.

    Peligro

    Es posible que experimentes problemas de conexión al formulario en este momento. Si es así y no puedes contestar a las preguntas, puedes anotar tus respuestas, continuar al paso siguiente y contestarlas una vez hayas completado dicho paso.

  4. Una vez contestado, vuelve a poner la configuración inicial con el siguiente comando:

    sudo ip route replace default via <IP-original-gateway>
    

Finalización#

Finalmente, borra el directorio generado /home/alumno/p9 con:

rm -rf /home/alumno/p9