7  Práctica 01. Preparativos con Kathará y PDRouter

7.1 Directorios de tu cuenta

Si has completado correctamente lo relativo a tu cuenta en github, siguiendo la invitación que te habrá enviado el profesor, tendrás en tu home el directorio pst2 con los subdirectorios pdrouter y lab01.

Esto es, los ficheros:

  • ~/pst2/pdrouter
  • ~/pst2/lab01

Compruébalo. El home (~) ha de ser es exactamente eso, el home. No el escritorio ni la carpeta descargas ni ninguna otra. Si no tienes aquí los directorios, puedes moverlos.

También puedes trabajar en tu propio ordenador, en los mismos directorios.

7.2 Documentación básica sobre Kathará

Repasa con cuidado el documento uso básico de Kathará y asegúrate de haberlo entendido bien.

7.3 Descripción de lab01

lab01

7.3.1 Direcciones IP

hub1  pc1 (200.0.0.10)
      pc4 (200.0.0.40)
      r1:eth0 (200.0.0.1)
      r3:eth0 (200.0.0.3)

hub2  r1:eth1 (201.0.0.1)
      r2:eth0 (201.0.0.2)

hub3  r2:eth1 (202.0.0.2)
      r3:eth1 (202.0.0.3)
      pc2 (202.0.0.20)

hub4  r2:eth2 (203.0.0.2)
      pc3 (203.0.0.30)

7.3.2 Rutas

Rutas estáticas configuradas en /etc/network/interfaces de cada router:

Router Red destino Via Interfaz
r1 202.0.0.0/24 201.0.0.2 eth1
r1 203.0.0.0/24 201.0.0.2 eth1
r2 200.0.0.0/24 201.0.0.1 eth0
r2 202.0.0.0/16 201.0.0.1 eth0
r2 default 202.0.0.3 eth1
r3 201.0.0.0/24 200.0.0.1 eth0
r3 203.0.0.0/24 202.0.0.2 eth1
r3 default 202.0.0.2 eth1

Encontrarás esta misma información:

7.4 Scripts para iniciar y parar Kathará

Por lo dicho en Sección 2.2, será conveniente que en vez de lanzar Kathará con los comandos kathara lstart y kathara lstop, uses dos scripts que añadan los permisos necesarios antes de lanzarlo y los quiten después de pararlo.

Observa que tienes un script ~/pst2/lab01/arranca_kathara.sh con este contenido

chmod o+x ~
kathara lstart

y un script ~/pst2/lab01/para_kathara.sh con

kathara lclean
chmod 700 ~ 

7.5 Instalación de PDRouter en el lab

  • El fichero lab01 contiene casi todo lo necesario para el funcionamiento del laboratorio.

  • Para que todo funcione es necesario además PDRouter. Tendrás que compilarlo y llevarlo a lab01/shared.

Como sabes, para compilar un programa en Rust normalmente bastaría con hacer

cargo build

Pero esto genera un binario que depende de la biblioteca glibc del sistema, y los contenedores Docker de Kathará no incluyen esta librería. Para resolver este problema, generaremos un ejectuble enlazado estáticamente con musl.

musl es una implementación ligera de la biblioteca estándar de C para sistemas Linux, alternativa a glibc. Es exactamente lo que necesitamos. Está especialmente orientada a generar ejecutables pequeños y puede utilizarse para crear binarios enlazados estáticamente, reduciendo su dependencia de las bibliotecas del sistema donde se ejecuten.

En el laboratorio de la EIF no podemos usar las herramientas habituales para compilar de esta forma, así que lo haremos dentro de un contenedor Docker preconfigurado para esta tarea.

Para compilar PDRouter con musl en este contenedor, ejecuta

cd ~/pst2/pdrouter 
./compila_contenedor.sh

Para copiar el ejecutable de PDRouter a la carpeta shared de lab01, de forma que todos los hosts del lab la tengan disponible en /shared, ejecuta

cp ~/pst2/pdrouter/target/x86_64-unknown-linux-musl/debug/router  ~/pst2/lab01/shared

Como compilar y llevar a shared lo vas a realizar a menudo, es conveniente que lo guardes en un script de shell. P.e. en ~/pst2/bin/deploy.sh. Recuerda ponerle permisos de ejecución.

7.6 Puesta en marcha de PDRouter

  • Lanza el laboratorio Kathará. Desde el terminal:

    cd ~/pst1/lab01
    ./arranca_kathara
  • Sugerencia: usa un escritorio de Ubuntu solo para Kathará. Ordena los terminales en el escritorio para localizarlos fácilmente. Por ejemplo, routers en la parte superior del escritorio y hosts en la inferior. De izquierda a derecha.

  • Entra el el directorio /shared de uno de los router y observa el contenido del fichero lanza_pdrouter.sh.

  • Ejecuta lanza_pdrouter.sh en todos los routers del lab.

  • Comprueba que puedes hacer ping entre dos o tres hosts.

  • Ejecuta los test de integración de PDRouter, como indica el docaumento uso básico de Kathará.

  • Detén Kathará.

    ./para_kathara

    No olvides nunca este paso, de lo contrario tu directorio quedará abierto.

7.7 Personalización de PDRouter

Modifica el código fuente de PDRouter para que el mensaje de bienvenida no sea

Router listo. Escribe ‘help’ para ver los comandos disponibles.

Sino

PDRouter versión de Juan García listo. Escribe ‘help’ para ver los comandos disponibles.

Reemplazando Juan García por tu nombre.

Usa el comando grep para saber qué fichero tienes que modificar.

  • grep "hola mundo" *

    Busca la cadena hola mundo en todos los ficheros del directorio actual. Considera que mayúsculas y minúsculas son diferentes (case sensitive).

  • grep -i "hola mundo" *

    Busca la cadena hola mundo en todos los ficheros del directorio actual. Considera que mayúsculas y minúsculas son iguales (case insensitive).

  • grep -iR "hola mundo" *

    Busca la cadena hola mundo en todos los ficheros del directorio actual y en sus subdirectorios. Considera que mayúsculas y minúsculas son iguales (case insensitive).