Laboratorio de Administración y Gestión de Redes y Sistemas
Grado en Ingeniería Telemática, 2023-2024
Escuela de Ingeniería de Fuenlabrada
Universidad Rey Juan Carlos
20 de septiembre. Insertado un nuevo apartado 1.1.5.
28 de octubre. Práctica 1.22. Cambiada la ubicación del directorio cal
La memoria de estas prácticas debes escribirla en un fichero en formato markdown. El fichero estará en tu cuenta del laboratorio. El dia del examen, recogeremos automáticamente tus prácticas.
Es imprescindible que respetes al pie de la letra los nombres de los ficheros especificados en el guión. Una letra mal puesta equivale a una práctica no presentada (o un examen no presentado). Si bien dispondrás de un script que verificará que has usado los nombres correctos
Redacta la memoria describiendo escuetamente todo lo que haces. Esta memoria te será muy útil para preparar el examen práctico (recuerda que podrás llevarla al examen).
No merece la pena que te preocupes de tener una redacción muy cuidada: copia y pega órdenes y resultados, describe telegráficamente lo que haces. Vete preparando la memoria a la vez que trabajas, no lo dejes para el final.
Cuando un paso del guión te pida una orden de shell o similar, es recomendable que primero ejecutes la orden y luego copies y pegues en la memoria. Si resulta algún texto, pégalo también.
Cuando el guión pida que escribas o edites un fichero, basta con que lo modifiques en su sitio. No es necesario que copies y pegues en la memoria.
Ahora prepararás el directorio de la práctica 1 y el fichero de texto para la memoria de la esta práctica.
Entra en tu cuenta del laboratorio Linux de la ETSIT. Crea el directorio ~/lagrs
. Aquí guardarás la mayoría de tu trabajo de prácticas en la asignatura
Ponle permisos rwx------
Debes mantenerlo así todo el curso. Recuerda que debes ser autor del 100%
de tus prácticas y no permitir que ningún compañero tuyo tenga acceso a ningún fragmento.
Crea el directorio
~/lagrs/practica01
Crea el fichero
~/lagrs/practica01.md
Observa que el nombre de este fichero no es
~/lagrs/practica01/practica01.md # ¡Este no es el nombre correcto!
Por el momento déjalo vacío.
Crea un directorio
~/lagrs/images
para las imágenes de tus memorias de prácticas (aunque tal vez tus ficheros no tengan imágenes)
Seguiremos este convenio en todas las prácticas, un directorio para cada práctica y un fichero de texto plano para cada práctica, fichero que cuelga de ~/lagrs
El objetivo de esta práctica es que sepas usar al menos las órdenes elementales de vi. Si no te gusta este editor, podrás usar algún otro editor sencillo en modo texto. Pero para poder instalar un editor nuevo, necesitas usar vi.
Usando vi, crea el fichero ~/lagrs/practica01/ejemplo.md
y escribe en él 4 titulares de cualquier periódico de hoy. Escribe 3 o 4 faltas de ortografía, intencionadamente. Guárdalo.
Vuelva a abrirlo y corrige las faltas.
Ahora empezarás a usar el fichero de la memoria de prácticas. Escribe la memoria de este apartado y de todos los apartados siguientes de esta práctica en el fichero que creaste en el apartado 1.1. ~/lagrs/practica01.md
Es necesario que manejes con soltura funciones al menos intermedias de algún editor de texto sin gráficos. La recomendación es vi/vim, pero también puedes elegir uno más sencillo.
Lee las transparencias sobre editores de texto. Arranca al menos una vez los editores en modo texto presentados (vim, mcedit, joe y nano). Elige uno, para usar en esta asignatura. ¿Cuál has elegido? ¿por qué?. Puedes cambiar de opinión mas adelante, pero en tal caso, indícalo (recuerda que estas prácticas las recogeremos el día del examen).
Es muy conveniente conocer atajos de teclado. Es mucho más eficaz memorizar, por ejemplo, 2 al día durante 5 días que intentar retener 10 atajos 1 día. Aprende unos cuantos de esta forma, al menos media docena, e indícalo aquí. Ejemplo:
2022.09.24
Elijo vi porque es el más potente. Practico el copy-paste con yy p
2022.09.28
Me coloco en una palabra y pulso asterisco para buscar esa misma palabra
en el texto. n minúscula para repetir la búsqueda hacia adelante y N mayúscula
para buscar hacia atrás.
2022.09.30
Practico ma, mb, mc para poner las marcas a, b y c en un texto. Vuelvo
a las marcas con 'a 'b 'c
Prepara un documento llamado
~/lagrs/practica01/test_markdown.md
Escribe en él un texto de prueba con diferentes secciones, negritas, cursivas, enlaces, imágenes, listas de varios tipos, código fuente y alguna tabla.
Usa pandoc
para limpiar el fichero.
Usa pandoc
para generar una versión en html usando alguna de las plantillas css que vimos en clase.
Guarda dos o tres contraseñas, de prueba o reales, usando
gpg
LibreOffice
KeePassx. O alguna herramienta similar como Bitwarden.
Usa recordatorios de contraseña en todos los casos, en un fichero de texto aparte. Guarda los ficheros donde quieras, describe brevemente en la memoria los pasos que has seguido
Usa ssss para descomponer una contraseña en 6 trozos, de forma que baste con 4 para restaurarlos. Recomponla.
En este ejercicio probarás Vagrant, lanzando una máquina virtual de VirtualBox. Si quieres hacer esta práctica en tu ordenador de casa, tendrás que instalar Vagrant y VirtualBox si no lo tenías ya.
Si estás en el laboratorio, configura VirtualBox para usar /var/tmp/tulogin
como carpeta predeterminada de máquinas
Crea un project directory de Vagrant en el directorio ~/lagrs/vbox01
de tu pc (de casa o del laboratorio)
Prepara una máquina Ubuntu 22.04 LTS Jammy Jellyfish
Lanza la máquina y entra por ssh, usando vagrant.
Comprueba que el project directory del host está montado dentro de la máquina virtual en /vagrant
Para ello, edita un fichero en este directorio desde el guest o el host, guárdalo y vuelve a editarlo desde la otra máquina (el host si antes usaste el guest y viceversa).
Apaga la máquina desde vagrant, sin destruirla.
Si hiciste la práctica en casa o en tu portátil, copia el directorio ~/lagrs/vbox01
de tu pc de al directorio ~/lagrs
de tu cuenta del laboratorio. De esta forma, el directorio ~/lagrs/vbox01
de ambas máquinas será idéntico.
En este ejercicio practicarás con los usuarios y grupos de linux.
Vuelve a entrar en la máquina virtual del apartado anterior.
Crea un nuevo usuario, con el mismo nombre que tu usuario en el laboratorio.
Abre una sesión de este usuario (con la orden su
).
Este usuario no tendrá privilegios para ejecutar sudo, pero intenta lanzar alguna orden y observa qué pasa.
Haz que este usuario sí pueda ejecutar sudo. Pruébalo.
Con este usuario, crea dos nuevos grupos con el nombre que quieras. Mete al usuario en estos grupos. Comprueba que están incluidos.
Prueba la orden newgrp
, observa su efecto.
Configura tu cuenta del laboratorio para entrar desde cualquier máquina hasta cualquier máquina, sin escribir contraseña.
Configura la máquina virtual vbox01 para poder abrir una sesión del usuario que creaste en el apartado 1.8, desde tu cuenta del laboratorio, sin escribir contraseña.
Prueba el uso de tar y bz2 para comprimir y descomprimir ficheros, tal y como hemos visto en las primeras páginas de la presentación Administración de Servicios y Aplicaciones
Ahora practicarás con el troceado de ficheros. Supongamos que quieres mover la máquina que acabas de crear a un host distinto. No es un fichero excesivamente grande pero sí tiene cierto tamaño, puede ser conveniente trocearlo. Es lo que practicarás aquí.
Desde el interfaz gráfico de VirtualBox, exporta la máquina virtual vbox01. Usa el fomato ova. Llévalo al directorio auxiliar que prefieras.
En ese directorio auxiliar, crea un fichero README.txt. En este fichero escribe el hash MD5 del fichero .ova.
Comprime este directorio con el .ova y el .txt en un fichero .tgz
. Ponle el nombre que te parezca adecuado.
Divídelo en trozos, del tamaño que te parezca adecuado.
Destruye la máquina virtual en VirtualBox (como prefieras, desde Vagrant o desde el GUI)
Borra el .ova, conservando el fichero de texto con el hash.
Borra el tgz. (En otras palabras, borra todo menos los trozos y el hash)
Reconstruye el tgz a partir de los trozos.
Extrae los ficheros, comprueba que el hash es correcto.
Importa el .ova desde el GUI de VirtualBox, comprueba que funciona correctamente.
Elige los directorios que quieras en las máquinas que quieras (una local, otra remota). Debes poder acceder desde la local a la remota sin escribir contraseña. Usando rsync:
Clona un directorio local en uno remoto.
Clona un directorio remoto en uno local.
Consulta la página de manual, elige tres opciones y comprueba que se comportan como deben.
Ahora practicarás el uso de FreeFileSync para simular que sincronizas tu pc de casa con el laboratorio. Empieza creando en tu pc las carpetas ~/simula_labo/lagrs
y ~/simula_casa/lagrs
. Vamos a imaginar que
La carpeta ~/simula_casa/lagrs
es la carpeta lagrs
de tu ordenador de casa.
La carpeta ~/simula_labo/lagrs
es la carpeta lagrs
de tu cuenta en el laboratorio.
Una vez que lo tengas todo preparado, ya puedes hacer esta práctica:
Prepara un fichero ~/simula_labo/lagrs/prueba.txt
. Escribe cualquier texto.
Simula que vas a casa y allí añades una línea más. (por ejemplo ahora estoy en casa). Simula que vuelves al laboratorio y que vuelves de nuevo a casa. Recuerda que cada vez que estás en casa, tienes que sincronizar al principio y al final de la sesión.
Operando de forma análoga al ejercicio anterior, y con los mismos ficheros, simula un conflicto de sincronización. Observa los mensajes de error de FreeFileSync.
Resuelve el conflicto. Comprueba que FreeFileSync ya no muestra errores.
Prepara en tu PC de casa un directorio con nombre lagrs, en el directorio que prefieras (mis documentos, escritorio...) y sincroniza allí tu cuenta lagrs del laboratorio. Mantenlo sincronizado todo el curso. Te será util como copia de seguridad y para trabajar indistintamente en ambos entornos. Recuerda que eres responsable de custodiar tus prácticas: tu directorio del laboratorio podría perderse. (Sería raro pero no imposible, el servicio ofrecido es de tipo best effort).
En otras palabras: si haces mal esta práctica, si no mantienes durante todo el curso una copia de seguridad de tu trabajo, podrías suspender la asignatura.
Prepara un ordenador en tu casa de forma que puedas abrir una sesión de ssh (y por tanto de scp y de sftp) desde cualquier lugar de internet. Para ello
Abre el puerto 22 de tu router para redirigirlo al puerto 22 del ordenador de casa donde quieras entrar.
Abre una cuenta gratuita en noip.com
. Instala en tu ordenador de casa el cliente de noip.com.
Recibirás cada mes un e-mail pidiendo que confirmes que sigues interesado en mantener el dominio. Confírmalo, al menos hasta que apruebes la asignatura.
Observa los ficheros de inicio de la shell de tu cuenta del laboratorio. Créalos si no los tienes. ¿Cuándo se ejecuta .bashrc
? ¿Solamente en las shell de login? ¿Solamente en las shell que no son de login? ¿O en ambos tipos de shell? ¿Por qué?
Comprueba que los diferentes tipos de ficheros que se tienen que ejecutar en la invocación de la shell (interactivo y de login, interactivo no de login, no interactivo) se comportan como cabe esperar. Usa trazas como
echo prueba blabla
o
echo prueba blabla >> /tmp/mi_traza.txt
Prepara tu cuenta del laboratorio para que el .bash_profile
invoque al .bashrc
(si es que no está así ya). Es recomendable que también lo hagas en tu pc de casa.
Usando la máquina virtual, comprueba qué sucede cuando, desde la shell, cambiamos de usuario mediante la orden su
. ¿Qué ficheros se ejecutan? ¿Pasamos a tener una shell de login o no?
Define en .bashrc
un alias que pueda usarse para un ataque o una broma. Haz una demostración.
En este apartado instalarás Docker en una máquina Linux
Instala el paquete docker.io en la máquina virtual vbox01
Comprueba que la instalación de docker es correcta, lanzando un contenedor de tipo holamundo basada en debian.
Haz una prueba de tipo holamundo basada en ubuntu.
En este apartado empezarás a usar los contenedores en la máquina virtual vbox01. Mientras el enunciado no especifique lo contrario, usa imágenes basadas en Ubuntu 22.04.
Crea un contenedor interactivo. No le pongas nombre. Ejecuta alguna orden básica de la shell. Indica alguna orden básica que esté disponible y alguna otra que no.
No detengas el contenedor. Crea otro contenedor interactivo, poniéndole el nombre xxxxc01, donde xxxx son las primeras 4 letras de tu nombre de usuario en el laboratorio. Para jperez, sería jperc01.
En un nuevo terminal, usa las ordenes de docker listar contenedores e imágenes. Explica lo que estás viendo.
Termina la ejecución de los contedores y observa el estado de las imágenes y de los contenedores detenidos.
Comprueba que el sistema de ficheros dentro del contenedor no es persistente. Esto es: escribe algún fichero, apaga el contenedor, vuelva a entrar y observa que ha desaparecido.
Crea una cuenta en docker hub.
Prepara la imagen test/banner
descrita en las transparencias, pero llámala tulogin/banner
siendo tulogin tu nombre de usuario en docker hub.
Lanza un contenedor con esa imagen.
Modifica la imagen para que una vez lanzada, no solo muestre el banner sino que abra una shell
Lanza un contenedor con la imagen para comprobar que puedes ejecutar la shell.
Sube la imagen a docker hub.
En este apartado prepararás una imagen sencilla de un contenedor, dentro de la máquina virtual vbox01. Se llamará <TULOGIN>/cal, y lo único que hará será invocar a la orden de shell cal
para mostrar el calendario del mes actual y concluir.
Vamos a establecer los siguientes convenios, que mantendremos el resto de las prácticas:
Usaremos ubuntu:22.04 como distribución base
Si la imagen se llama cal
, y tu login en el laboratorio es jperez
, los distintos contenedores que ejecutarás a partir de ella se llamarán jpercal01
, jpercal02
, etc
Esto es: las primeras 4 letras de tu nombre de usuario, el nombre de la imagen y un número de dos dígitos.
Todo lo necesario para construir y lanzar esta imagen estará en el directorio del laboratorio.
~/lagrs/vbox01/cal
Naturalmente, cuando ejecutes la máquina virtual, este mismo directorio estará en
/vagrant/cal
El fichero ~/lagrs/vbox01/cal/construye.sh
será un script para construir la imagen <TULOGIN>/cal
El fichero ~/lagrs/vbox01/cal/lanza_jpercal01.sh
será un script para lanzar la imagen jpercal01
.
El fichero ~/lagrs/vbox01/cal/lanza_jpercal02.sh
será un script para lanzar la imagen jpercal02
, y así sucesivamente (si quisiéramos lanzar más contenedores)
Observa que los scripts lanza_jpercal01.sh
lanza_jpercal02.sh
incluye en su nombre los nombres de los contenedores, porque varios contenedores podrán compartir la misma imagen inicial.
Observa que el script construye.sh
no incluye el nombre de la imagen, porque dentro del directorio ~/lagrs/cal/
solo habrá ficheros relativos a la imagen <TULGIN>/cal
El directorio ~/lagrs/vbox01/cal/context
contendrá el contexto para esta imagen. Por tanto, los ficheros Dockerfile y entrypoint.sh estarán, respectivamente, ~/lagrs/vbox01/cal/context/Dockerfile
y ~/lagrs/vbox01/cal/context/entrypoint.sh
La siguiente tabla contiene todos los ficheros que usarás, con el nombre visto desde los hierros (el puesto del laboratorio) y el nombre visto desde dentro de la máquina vbox01
~/lagrs/vbox01/cal /vagrant/cal
~/lagrs/vbox01/cal/construye.sh /vagrant/cal/construye.sh
~/lagrs/vbox01/cal/lanza_jpercal01.sh /vagrant/cal/lanza_jpercal01.sh
~/lagrs/vbox01/cal/lanza_jpercal02.sh /vagrant/cal/lanza_jpercal02.sh
~/lagrs/vbox01/cal/context /vagrant/cal/context
~/lagrs/vbox01/cal/context/Dockerfile /vagrant/cal/context/Dockerfile
~/lagrs/vbox01/cal/context/entrypoint.sh /vagrant/cal/context/entrypoint.sh
Atendiendo a estos convenios,
Prepara la imagen del contenedor solicitado. La utilidad cal está en el paquete bsdmainutils.
Prepara el script lanza_jpercal01.sh
y lánzalo.
Prepara el script lanza_jpercal02.sh
y lánzalo.
Ejecuta docker ps -a
y docker images
, y observa que, naturalmente, se puede comprobar que ambos contenedores están basados en la misma imagen.
Como sabes, la máquina vbox01 que lanzamos con Vagrant la consideramos de usar y tirar. No guardaremos dentro ningún fichero valioso, en cualquier momento podrás perderla si te sientas en puesto diferente del laboratorio, si entras en remoto al laboratorio a un puesto diferente o si el administrador del laboratorio borra el directorio /var/tmp/tulogin
por falta de espacio. Esta pérdida no supondrá mayor inconveniente porque con Vagrant podrás preparar otra igual con mucha facilidad.
La máquina vbox01 es casi una máquina ubuntu tal cual, a la que en las prácticas 1.7 y 1.8 le hiciste algunos retoques a mano. En esta práctica, la configuración la haremos de forma automática, editando el fichero Vagrantfile
. Prepara el fichero ~/lagrs/vbox01/Vagrantfile
para que:
El nombre de la máquina virtual visto desde el provider sea vbox01.
El nombre de host, esto es, el nombre de la máquina virtual visto desde dentro de la misma máquina virtual sea también vbox01.
La máquina tenga instalado docker.
La máquina tenga un usuario con el mismo nombre que tu login en el laboratorio.
Este usuario pueda lanzar docker.
Para comprobar que este ejercicio funciona correctamente, elimina (vagrant destroy) tu máquina actual, vuelve a crearla y comprueba que la configuración es correcta y que tu usuario puede lanzar un contenedor de prueba.
Ahora prepararás una imagen de un contenedor que hará un montaje de tipo bind. Este contenedor se ejecutará dentro de la máquina virtual vbox01, como todos los demás que preparemos en esta asignatura, sin necesidad de que el enunciado lo diga explícitamente.
Siguiendo el criterio establecido en el apartado anterior, y suponiendo que tu usuario sea jperez
El directorio del contenedor, visto desde el laboratorio, será ~/lagrs/vbox01/bind/
Como sabes, dentro de vbox01 este directorio estará montado en
/vagrant/bind/
El directorio contexto, ~/lagrs/vbox01/bind/context
El contenido del directorio contexto:
~/lagrs/vbox01/bind/context/Dockerfile
~/lagrs/vbox01/bind/context/entrypoint.sh
El script de creación de la imagen, ~/lagrs/vbox01/bind/construye.sh
El script de lanzamiento del contenedor, ~/lagrs/vbox01/bind/lanza_jperbind01.sh
Funcionamiento del contenedor:
El contenedor tendrá instalado tu editor de texto preferido.
El contenedor ejecutará una shell.
El contenedor montará el directorio /tmp/test
de vbox01 en el directorio /tmp/test
del contenedor
Prueba del contenedor:
Lanza el contenedor y escribe en el directorio montado un fichero con nombre hola_jperez
Comprueba que ese directorio es persistente. Esto es, sal del contenedor, vuelve a lanzarlo y observa que el fichero hola_jperez
sigue en su sitio.
Accede a este mismo fichero desde vbox01. Comprueba sus permisos. Edita el fichero con un texto cualquiera. Comprueba que puedes ver el contenido tanto en vbox01 como en el contenedor.
Ahora prepararás una imagen de un contenedor donde habrá un usuario que montará en el contendor su home del host (la máquina vbox01)
Recuerda que en vbox01 tienes un usuario con el mismo nombre que tu usuario del laboratorio. Este será el usuario con el que trabajarás, no el usuario vagrant
Siguiendo el criterio establecido en el apartado anterior, y suponiendo que tu usuario sea jperez
El directorio del contenedor, visto desde el laboratorio, será ~/lagrs/vbox01/userbind/
Como sabes, dentro de vbox01 este directorio estará montado en
/vagrant/userbind/
El directorio contexto, ~/lagrs/vbox01/userbind/context
El contenido del directorio contexto:
~/lagrs/vbox01/userbind/context/Dockerfile
~/lagrs/vbox01/userbind/context/entrypoint.sh
El script de creación de la imagen, ~/lagrs/vbox01/userbind/construye.sh
El script de lanzamiento del contenedor, ~/lagrs/vbox01/userbind/lanza_jperuserbind01.sh
Funcionamiento del contenedor:
El contenedor tendrá un usuario, con un nombre igual a tu nombre de usuario en vbox01
El contenedor ejecutará una shell.
El contenedor tendrá instalado tu editor de texto preferido.
El contenedor montará el directorio home de tu usuario en vbox01 en el directorio /home/jperez
del contenedor
Prueba del contenedor:
Lanza el contenedor y escribe en el directorio montado un fichero vacío con nombre hola_jperez
Comprueba que ese directorio es persistente. Esto es, sal del contenedor, vuelve a lanzarlo y observa que el fichero hola_jperez
sigue en su sitio.
En este apartado instalarás sshd en un contenedor y probarás la red bridge de Docker.
Los contenedores estarán basados en Ubuntu 22.04.
El nombre de la imagen que crearás será <TULOGIN>/remoto
Como prácticas anteriores, al nombre de cada contenedor le añadirás como prefijo las primeras 4 letras de tu usuario, y como sufijo, un número de dos dígitos.
Lanzarás dos contenedores con esta imagen.
Por tanto, los nombres de los ficheros necesarios serán:
~/lagrs/vbox01/remoto/context/Dockerfile
~/lagrs/vbox01/remoto/context/entrypoint.sh
~/lagrs/vbox01/remoto/construye.sh
~/lagrs/vbox01/remoto/lanza_jperremoto01.sh
~/lagrs/vbox01/remoto/lanza_jperremoto02.sh
Prepara la imagen de forma que el contenedor que la ejecute tenga lanzado el demonio servidor de ssh.
Dentro del contenedor debe ser posible ejecutar ifconfig y ping. Por tanto tendrás que instalar estas aplicaciones en la imagen. Para ello tendrás que averiguar el nombre de los paquetes Ubuntu necesarios. Lo más sencillo es googlear un poco.
El contenedor tendrá un usuario, con el mismo nombre que tu usuario en el laboratorio y con privilegios para ejecutar sudo.
Una vez que estén listas las imágenes, lanza ambos contenedores y, de forma interactiva, para cada uno de ellos
Averigua su dirección IP.
Haz ping a tu propio contenedor.
Usando netstat, comprueba que el servidor sshd está funcionando. Pero no instales netstat en la imagen, instálalo solo en este contenedor en particular para esta prueba concreta (esto es, de forma interactiva).
Entra por ssh en tu contenedor.
Comprueba que puedes hacer ping al otro contenedor.
Abre una sesión en el otro contendor.
Haz una prueba básica de sshfs. Si tienes aquí tu portátil, monta tu home del laboratorio en el directorio que prefieras de tu ordenador. Si no, monta tu home del laboratorio en el directorio /tmp/labo
de la máquina vbox01.
En este ejercicio prepararás un contenedor docker, configurado en español, con un usuario del mismo nombre que tu cuenta del laboratorio, capaz de montar un directorio remoto, usando sshfs.
La imagen se llamará jperez/cssh (reemplazando, como siempre, jperez por tu nombre de usuario en el labortorio)
El contenedor lanzado a partir de esta imagen se llamarán jpercssh01
Todos los ficheros necesarios estarán en el directorio ~/lagrs/vbox01/cssh
de tu cuenta del laboratario
Los scritps se llamarán
~/lagrs/vbox01/cssh/construye.sh
~/lagrs/vbox01/cssh/lanza_jpercssh01.sh
(donde jper representa las primeras 4 letras de tu login)
El directorio contexto será
~/lagrs/vbox01/cssh/context
La imagen se creará con los ficheros
~/lagrs/vbox01/cssh/context/Dockerfile
~/lagrs/vbox01/cssh/context/entrypoint.sh
Para ello:
Prepara la imagen con los paquetes necesarios, la configuración en español y un usuario.
Lanza el contenedor con las opciones necesarias para usar sshfs.
Empieza probando sshfs desde el usuario root del contenedor:
Monta el directorios /tmp
de una máquina cualquiera de las que estén disponibles en el laboratorio (consulta el parte de guerra). Por ejemplo f-l2108-pc05
en el directorios /tmp/pc05
del contenedor. (Esto es, el directorio local será /tmp/pcNN
, siendo NN el número del puesto)
Comprueba que el resultado es el esperado: entra por ssh en esa máquina, edita algún fichero en el directorio /tmp/
, comprueba que puedes editar el mismo fichero en el directorio montado en tu máquina local.
Ahora repite el paso anterior pero con tu usuario del contenedor, no con el usuario root.
En este apartado prepararás un contenedor preparado para hacer ping y ssh a las máquinas del laboratorio, usando solo el nombre de host, no el FQDN (Fully Qualified Domain Name).
Esta imagen se llamará <TULOGIN>/chosts
(contenedor hosts), estará basada en Ubuntu 22.04 y configurado en español.
Siguiendo el convenio descrito en el apartado anterior:
Los contenedores lanzados a partir de esta imagen se llamarán jperchosts01, jperchosts02, etc
Todos los ficheros necesarios estarán en ~/lagrs/chosts
Los scritps se llamarán
~/lagrs/vbox01/chosts/construye.sh
~/lagrs/vbox01/chosts/lanza_jperchosts01.sh
~/lagrs/vbox01/chosts/lanza_jperchosts02.sh
(donde jper representa las primeras 4 letras de tu login)
El directorio contexto será
~/lagrs/vbox01/chosts/context
La imagen se creará con los ficheros
~/lagrs/vbox01/chosts/context/Dockerfile
~/lagrs/vbox01/chosts/context/entrypoint.sh
Para conseguir que los contenedores conozcan las direcciones IP de las máquinas del laboratorio, tendrás que añadir al fichero /etc/hosts
de cada imagen las entradas correspondientes al laboratorio, que encontrarás en el fichero /etc/hosts
de cualquier puesto.
Para ello
Prepara, en el directorio contexto, un fichero delta_hosts
que contenga las entradas necesarias.
Haz que este fichero aparezca en el directorio /tmp/
de la imagen.
Haz que cada vez que se inicie la imagen, se añadan estas entradas al /etc/hosts
del contenedor.
(En docker no es posible borrar ni reemplazar el fichero /etc/hosts
de una imagen, pero sí puedes modificarlo añadiendo entradas)
Haz que desde los contenedores se pueda hacer ifconfig, ping y ssh. Para ello necesitarás los paquetes ubuntu adecuados, averigua su nombre consultando Google o ChatGPT.
Puedes instalar algún paquete adicional si quieres, con tal de que no resulte una imagen mucho más pesada.
Comprueba que una vez lanzado el contenedor, puedes hacer ping o entrar por ssh a los puestos del laboratorio que lo soporten, sin necesidad de escribir el FQDN, esto es, sin añadir al nombre el dominio aulas.gsyc.urjc.es.
Ten en cuenta que:
Solo algunas máquinas del laboratorio acepta conexión por ssh.
El cortafuegos del laboratorio no permite el tráfico de paquetes ICMP (lo que incluye el ping) desde fuera de su subred. Por tanto, podrás ver que se ejecuta la orden ping y que se envía la petición a la dirección IP adecuada, pero no verás respuesta.