PDF de programación - Jails: virtualización light

Imágen de pdf Jails: virtualización light

Jails: virtualización lightgráfica de visualizaciones

Publicado el 14 de Enero del 2017
628 visualizaciones desde el 14 de Enero del 2017
13,3 MB
45 paginas
Creado hace 15a (24/10/2009)
Jails: virtualización light

Gabriel Astudi!o Muñoz
Encuentro Linux 2009

1

Resumen

Contexto de la charla.
Descripción del problema.
Soluciones existentes.
Jails.

Descripción, uso y configuración.

Demostración práctica.

2

Contexto

...

Sistema Operativo

3

Contexto

...

Sistema Operativo

4

5

Mi motivación:

“Toda herramienta existe

porque soluciona un

problema”

6

¿Cuál es el problema?

Un posible escenario es el siguiente:

IP_1

IP_2

IP_N

HW "1"

HW "2"

HW "N"

+ Conjuntos de Paquetes A

+ Conjuntos de Paquetes B

+ Conjuntos de Paquetes N

7

Obviamente, los

conjuntos de paquetes
son incompatibles entre sí

¿Cuál es el problema?

Un posible escenario es el siguiente:

IP_1

IP_2

IP_N

HW "1"

HW "2"

HW "N"

+ Conjuntos de Paquetes A

+ Conjuntos de Paquetes B

+ Conjuntos de Paquetes N

Cada máquina tiene
un costo asociado

8

¿Cuál es el problema?

Un posible escenario es el siguiente:

Y el dinero no
cae del cielo

IP_1

IP_2

IP_N

HW "1"

HW "2"

HW "N"

+ Conjuntos de Paquetes A

+ Conjuntos de Paquetes B

+ Conjuntos de Paquetes N

9

¿Cómo solucionarlo?

Una solución podría ser:

IP_1

IP_2

IP_N

HW "1"

HW "2"

HW "N"

+ Conjuntos de Paquetes A

Hardware

+ Conjuntos de Paquetes B

Virtualización

Máq. 1

Máq. N

+ Conjuntos de Paquetes N

Red LAN

10

¿Cómo solucionarlo?

IP_1

IP_2

IP_N

HW "1"

HW "2"

HW "N"

+ Conjuntos de Paquetes A

+ Conjuntos de Paquetes B

+ Conjuntos de Paquetes N

Virtualización

Hardware

Máq. 1

Máq. N

Red LAN

Nivel de SO

Paravirtualización

Solaris Containers
Virtuozzo
Linux-Vserver
Jails FreeBSD

Xen
User Mode Linux

Emulación

HW

VMware
QEMU
VirtualBox

11

Jails

(FreeBSD)

12

Jails

Herramiento nativa de FreeBSD
Virtualización a nivel de SO
Desde FreeBSD 4.0 (año 2000)
Son réplicas del sistema principal:

Independientes entre sí (Memoria, FS y Red)

Cada jaula se identifica por su:

Jail ID (JID)
IP
nombre
Ubicación dentro del FS del host

13

Estructura: Acceso a la red

Cada jaula tiene
asignada una IP.

Son IP virtuales de la
interfaz de red del
Servidor.

Servidor

FreeBSD

Jail 1

Jail N

Red LAN

14

Estructura: Acceso a la red

Cada jaula tiene
asignada una IP.

Son IP virtuales de la
interfaz de red del
Servidor.
También se pueden
asociar a interfaces
reales.

Servidor

FreeBSD

Jail 1

Jail N

Red LAN

15

Estructura: Sistema de archivos

Las jaulas son copias en
miniatura del sistema
base.
El procedimiento de
creación es similar a
actualizar el sistema
operativo.
Parecido a realizar un
“chroot” a cada jaula.

bin/

etc/

dev/

usr/

bin/

jails/

jail1/

jailN/

16

bin/

etc/

dev/

usr/

bin/

10.0.2.20/24

bin/

etc/

dev/

usr/

bin/

10.0.2.21/24

10.0.2.10/24

R

e

d



L

A

N

Limitaciones

jail 1
Procesos

jail

make buildkernel

jail

# mount ...

jail 2
Procesos

jail

# ifconfig em0 ...
# route add -net ...

jail

# tcpdump ...

jail

# hostname ...

17

¿y cómo se usan?

Por omisión, están los siguientes comandos:

jail
jls
jexec

“enjaula” un proceso y todos sus hijos.

# jail <ruta_jail> <nombre> <ip> <cmds>

18

¿y cómo se usan?

Por omisión, están los siguientes comandos:
jail
jls
jexec

Muestra un lista de las jaulas activas

19

¿y cómo se usan?

Por omisión, están los siguientes comandos:
jail
jls
jexec

determinada jaula

Permite ejecutar un comando dentro de una

#jexec [-u user |-U user] jid cmd

Servidor

FreeBSD

Jail 1

Jail N

Red LAN

20

Creación

Inicialización
Configuración

21

Método de creación

Manual de FreeBSD:

mkdir /usr/jails/jaula1
cd /usr/src
make buildworld
make installworld DESTDIR=/usr/jails/jaula1
make distribution DESTDIR=/usr/jails/jaula1

22

Método de creación

Manual de FreeBSD:

Directorio de la Jaula

mkdir /usr/jails/jaula1
cd /usr/src
make buildworld
make installworld DESTDIR=/usr/jails/jaula1
make distribution DESTDIR=/usr/jails/jaula1

23

Método de creación

Manual de FreeBSD:

Es necesario tener instalada las
fuentes del sistema (~500[MiB])

mkdir /usr/jails/jaula1
cd /usr/src
make buildworld
make installworld DESTDIR=/usr/jails/jaula1
make distribution DESTDIR=/usr/jails/jaula1

24

Método de creación

Manual de FreeBSD:

mkdir /usr/jails/jail1
cd /usr/src
make buildworld
make installworld DESTDIR=/usr/jails/jail1
make distribution DESTDIR=/usr/jails/jail1

Aprox. 2[horas]

Aprox. 5[min]

Aprox. 30[seg]

25

Método de creación

Jaula 1

bin/

bin/

/

etc/

etc/

Manual de FreeBSD:

dev/

dev/

usr/

bin/

jails/

proc/

jail1/

bin/

usr/

IP Alias

mkdir /usr/jails/jail1
cd /usr/src
make buildworld
make installworld DESTDIR=/usr/jails/jail1
make distribution DESTDIR=/usr/jails/jail1

26

Iniciar una jaula:
pasos previos
Antes de iniciar una
jaula, es necesario:

1) configurar una IP adicional
ifconfig em0 alias 192.168.56.20/24

2) Verificar que los servicios del
host escuchen en la IP principal.

27

Iniciar una jaula:
pasos previos
Antes de iniciar una jaula, es
necesario:

/

Jaula 1

bin/

etc/

bin/

etc/

dev/

usr/

bin/

jails/

jail1/

3) montar el FS dev y proc en el
directorio respectivo dentro de
la jaula

mount -t devfs devfs /usr/jails/jail1/dev

dev/

proc/

usr/

bin/

mount -t procfs procfs /usr/jails/jail1/proc

IP Alias

28

Iniciar una jaula

Iniciar por primera vez la jaula, según la sintaxis:

jail <ruta_jaula> <nombre_jaula> <ip_alias> <cmd>
jail /usr/jails/jail1 jaula_1 192.168.56.20 /bin/csh

/

Jaula 1

bin/

etc/

dev/

usr/

bin/

IP Alias

bin/

etc/

dev/

usr/

bin/

jails/

jail1/

29

Iniciar una jaula

Una vez iniciada, “jugar” un rato.

Después, hacer algo más o menos importante, como cambiar
la contraseña de root y crear una cuenta de administración.

Finalizar la jaula (logout, CTRL+D, etc)

30

Funcionará????

31

Antes de seguir

¿Qué es lo que se ha hecho?

Crear el sistema de arhivos
para la jaula, el cual va estar
“bajo chroot”.
Crear una conexión desde la
jaula hacia la red.
Modificar y crear las cuentas
de administración del nuevo
sistema.

32

Antes de seguir

¿Qué es lo que se ha hecho?
El devfs debe tener ciertas
restricciones para las jaulas.
Si son muchas jaulas, el método
de inicio mostrado no escala.
Lo relativo al devfs y al inicio de
la jaula (vía jail(8)) se puede
delegar al SO vía script de
inicio.

33

Antes de seguir

¿Qué falta?

Tener un sistema independiente
Que se inicie en tiempo de
boot, con las herramientas del
SO.
Que tenga los servicios básicos
de conectividad.
Aplicar reglas de seguridad al
devfs.

34

Pasos finales:
Modificación de /etc/rc.conf
Permitir inicio de las jaulas en el boot del sistema:
jail_enable="YES"
jail_list="jaula1”

jail_devfs_ruleset=”reglas_jaulas”

ifconfig_em0_alias0="inet 192.168.56.20 netmask 255.255.255.0"
jail_jaula1_rootdir="/user/jails/jaula1"
jail_jaula1_hostname="proteus"
jail_jaula1_ip="192.168.56.20"
jail_jaula1_devfs_enable="YES"
jail_jaula1_procfs_enable="YES"

Jaula 1

bin/

bin/

etc/

/

etc/

dev/

usr/

bin/

jails/

jail1/

dev/

usr/

bin/

IP Alias

35

Pasos finales:
Modificación de /etc/rc.conf
Permitir inicio de las jaulas en el boot del sistema:
jail_enable="YES"
jail_list="jaula1”

jail_devfs_ruleset=”reglas_jaulas”

Identificadores de
las Jaulas que se
inician en el boot.

ifconfig_em0_alias0="inet 192.168.56.20 netmask 255.255.255.0"
jail_jaula1_rootdir="/user/jails/jaula1"
jail_jaula1_hostname="proteus"
jail_jaula1_ip="10.0.2.20"
jail_jaula1_devfs_enable="YES"
jail_jaula1_procfs_enable="YES"

36

Pasos finales:
Modificación de /etc/rc.conf
Permitir inicio de las jaulas en el boot del sistema:
jail_enable="YES"
jail_list="jaula1”

jail_devfs_ruleset=”reglas_jaulas”

ifconfig_em0_alias0="inet 192.168.56.20 netmask 255.255.255.0"
jail_jaula1_rootdir="/user/jails/jaula1"
jail_jaula1_hostname="proteus"
jail_jaula1_ip="10.0.2.20"
jail_jaula1_devfs_enable="YES"
jail_jaula1_procfs_enable="YES"

Configuración de una

jaula

37

Pasos finales:
Modificación de /etc/rc.conf
Iniciar SSHD cuando la jaula se inicie:

sshd_enable="YES"

/

Jaula 1

bin/

etc/

dev/

usr/

bin/

IP Alias

bin/

etc/

dev/

usr/

bin/

jails/

jail1/

38

Por último, iniciar la jaula

Finalmente, iniciar la(s)
jaula(s) vía script de inicio
/etc/rc.d/jail start|stop [id1 id2 ...]

Comprobar que efectivamente la jaula esté “arriba”:

39

Funcionará????

40

Tareas posteriores

Hacer más jaulas...
Opción 1

make installworld DESTDIR=/usr/jails/otra_jaula
make distribution DESTDIR=/usr/jails/otra_jaula

Jaula totalmente nueva, tiempo aprox ~5[min]

Opción 2:

“Clonar” otra existente. tiempo aprox: “DEPENDE”

mkdir /jaula/destino
cd /jaula/origen && tar -cpf - . |tar -C /jaula/destino -xpf -

41

Tareas posteriores

Demostración práctica “clonación”
Copiar la estructura de una jaula.
Crear otro IP “alias”.
Modificar archivo /etc/rc.conf en el host principal.
Iniciar la nueva jaula.

42

Conclusiones

Jails es otra opción de virtualización.
Beneficios:

No requiere instalar softwares adicionales
Si sabe como administrar FreeBSD, sabe administrar jaulas.
Es simple y rápido. Facilita la delegación de administración.

Contras:

todo lo demás :)

43

Dónde buscar

http://www.freebsd.org
Ejemplos de uso:

ACM SIGCOMM Computer Communications Review,
Volume 33, Nº 3, Julio 2003
Departamento de Computación, UV. Contacto: Marco
Aravena ([email protected])
Departamento de Electrónica, USM. Contacto: Yo
([email protected])

44

Gracias por su atención.

45
  • Links de descarga
http://lwp-l.com/pdf1578

Comentarios de: Jails: virtualización light (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad