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

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:
En este documento pdf
En el subdirectorio docs del lab.
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 lstarty 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 buildPero 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.shPara 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/sharedComo 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_katharaSugerencia: 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_katharaNo 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).