BULMA

Bulma se une a la protesta contra SOPA y PIPA

Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons   |   Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores
CONTENIDOS
. Jornadas de software libre
. Version para PDA
. Enlaces breves
. La asociacion
. Los mas leidos
. Autores [Actividad]
. Ultimos Comentarios
. Todos los titulares!
. Estadisticas
. Guia de estilo
. ¿Sugerencias?
. Wiki
. XML [Ayuda]
Listas de correo
. Archivos bulmailing
. Archivos BulmaGes
Radio libre :-)
. Des de la Xarxa (Archivos)
. Mallorca en Xarxa
Busquedas

+ Enlaces Linux
Ultimos kernels
(24/05/2013 03:15:33)
    
Google


En bulma.net
En internet
Màquines virtuals amb user-mode-linux (6231 lectures)
Por Carles Bayés
phalangana (http://)
Creado el 11/09/2004 18:18 modificado el 12/09/2004 21:25

Pagina2/2

Configuració de la xarxa

Ja tenim una màquina virtual corrent Linux 2.4.26 al nostre sistema, però no hi ha xarxa, és a dir, estem aïllats del món. I un Linux aïllat... No m'ho puc imaginar. Em fa mal només de pensar-hi!

Hi ha vàries maneres de proporcionar connectivitat a l'instància UML (podeu consultar-les a la secció de xarxa de la web del projecte). Una de les més senzilles és a través de la utilitat uml_net (UML s'encarrega de crear-te un dispositiu TAP i assignar-li una IP simplement passant-li un argument a la línia de comandes), però jo m'inclino per crear un dispositiu TAP al host i crear un bridge on hi afegiré aquest dispositiu (que es correspondrà amb eth0 de la instància UML) i l'interfície eth0 del host. D'aquesta manera la màquina virtual té accés directe a la xarxa local. No cal dir que necessiteu suport al host tant per bridging com per dispositius TUN/TAP.

Abans de tot això, però, cal donar permisos d'escriptura sobre el dispositiu /dev/net/tun a l'usuari que executarà UML (d'altra manera no tindria accés a la xarxa). Per fer-ho, crec que el millor és assignar al dispositiu un nou grup, donar-li permisos d'escriptura i anar afegint-hi tots els usuaris que hagin d'executar instàncies UML:

# addgroup umlnetwork
S'està afegint el grup umlnetwork (1001)...
Fet.
# chgrp umlnetwork /dev/net/tun
# adduser umluser umlnetwork
S'està afegint l'usuari umluser al grup umlnetwork...
Fet.
# chmod g+w /dev/net/tun

Ara hem d'executar els passos necessaris per fer tot el muntatge. Ho poso en forma d'script per simplicitat (l'script s'ha d'executar com a root i recordeu que heu de tenir instal·lades les uml-utilities i bridge-utils):

#!/bin/bash
# Inici de l'uml en mode bridge. Basat en els exemples de 
#http://user-mode-linux.sourceforge.net/networking.html.
# S'ha d'executar com a root.

#carreguem el mòdul tun
modprobe tun

#creem un dispositiu per a l'usuari
tunctl -d umltap0 2>/dev/null
tunctl -u umluser -t umltap0

#afegim el bridge
ifconfig br0 down 2>/dev/null
brctl delbr br0 2>/dev/null
brctl addbr br0
ifconfig eth0 0.0.0.0 promisc up
ifconfig umltap0 0.0.0.0 promisc up
ifconfig br0 192.168.0.5 netmask 255.255.255.0 up
brctl stp br0 off
brctl setfd br0 1
brctl sethello br0 1
brctl addif br0 eth0
brctl addif br0 umltap0
route add default gw 192.168.0.1

#arranquem la instància uml
su umluser -c './linux ubd0=root_fs ubd1=swap mem=32M eth0=tuntap,umltap0'

Un cop a dins de la màquina virtual cal configurar la xarxa:

(none):~# ifconfig eth0 192.168.0.100 up
(none):~# ifconfig
eth0      Link encap:Ethernet  HWaddr FE:FD:C0:A8:02:64
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:5

I amb això ja tenim la màquina connectada amb l'exterior:

(none):~# ping -c 1 192.168.0.5
PING 192.168.0.5 (192.168.0.5): 56 data bytes
64 bytes from 192.168.0.5: icmp_seq=0 ttl=64 time=1.0 ms

--- 192.168.0.5 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.0/1.0/1.0 ms

De totes maneres, per anar bé caldria introduir les entrades pertinents a /etc/network/interfaces de manera que quan arranquem la màquina virtual ja tinguem xarxa:

auto lo
iface lo inet loopback

iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        gateway 192.168.0.1

(Per anar encara més bé caldria posar les entrades adequades a /etc/resolv.conf, per a resolució de noms).

Si tot ha anat bé, ja hauríem de tenir un Linux plenament funcional i connectat a la xarxa. Ara és quan (després d'assignar contrasenya a root i crear un compte d'usuari "normal") hauríem d'actualitzar el sistema i començar a instal·lar-hi aplicacions o, com un servidor, passar-nos primer de tot a SARGE o SID.

Notes finals

Mode skas

Per raons de seguretat i rendiment, és recomanable aplicar el patch skas al kernel del host. Jo no ho he fet perquè encara no ha sortit el patch per la versió del kernel que faig servir ara mateix i perquè de moment no ho poso a producció, on sí que ho considero imprescindible. Per més informació consulteu la pàgina sobre skas.

Accés al host

Si voleu poder accedir al disc del host des de la màquina virtual, no necessiteu NFS ni FTP. Podeu fer-ho de manera molt còmoda per mitjà de hostfs, simplement muntant el sistema de fitxers com qualsevol altre:

(none):~# mkdir /mnt/host
(none):~# mount -t hostfs none /mnt/host
(none):~# ls /mnt/host
bin   cdrom  etc     home     initrd  lost+found  mnt  proc  root-n  sys  usr  vmlinuz
boot  dev    floppy  include  lib     man         opt  root  sbin    tmp  var
(none):~#

Evidentment, l'accés al sistema de fitxers del host es farà amb els privilegis que hi tingui l'usuari que executa UML. Malgrat tot, hi ha entorns en els que segurament no interessi que els usuaris de la màquina virtual accedeixin al host (per exemple, en entorns de hosting). En aquest cas, podem compilar el kernel UML sense suport per hostfs.

Com compartir sistemes de fitxers

Com a mesura per estalviar espai en disc, podeu compartir sistemes de fitxers entre diferents instàncies UML a través de COW (copy-on-write). El sistema de fitxers original serà de només lectura (si no, les instàncies UML entrarien en conflicte) i és la capa COW la que dóna accés de lectura-escriptura a cada una de les instàncies. Això ho fa guardant i mantenint els canvis en un dispositiu privat de cadascuna. Per entendre'ns: quan des d'una instància UML s'escriu al sistema de fitxers compartit, es guarden les dades en un dispositiu de la pròpia instància, mentre que quan l'accés és de lectura la informació es va a buscar als dos dispositius (al privat i, si no hi és, al compartit).

Informació de depuració

Si seguiu al peu de la lletra aquest article us trobareu amb un executable (./linux) extremadament voluminós ja que conté informació de debug. Per eliminar aquesta informació podeu executar la comanda:

~/uml$ strip linux

(Gràcies: ivaniclixx).

Enllaços


Paginas: <<Abreviatura Anterior  1  2 

Imprimir
Version para
imprimir

Imprimir
Version
PDF
Comentarios
Es posible que se hayan omitido algunos comentarios considerados poco constructivos
1.  Re: Màquines virtuals amb user-mode-linux (11/09/2004 19:55, #23246)
  Por: ivaniclixx
Un petit comentari (tot i que sento dir que no he llegit tot l'article X-D).
El binari executable obtingut amb la compilació per defecte sembla ser que té molta informació per "debug", aixi que el seu tamany és força gran (de 10 a 20 MB).
Per eliminar tot el que no ens interessi caldra fer un strip; l'ordre a executar serà tan senzilla com: strip linux.
Això ens deixarà l'executable totalment funcional però d'una mida considerablement menor (poc més d'uns 2 MB).

Això és tot, espero no haver-me equivocat en res ;)
Ah, i felicitats a phalangana pel seu article.
No es pot respondre
 
2.  Re: Màquines virtuals amb user-mode-linux (12/09/2004 13:34, #23255)
  Por: phalangana

Tens tota la raó. La mida original del fitxer en el meu cas és de 35Mb i sense la informació de debug baixa a 2,4 Mb (la millora no és gens menyspreable).

Gràcies pel comentari.

No es pot respondre
 
3.  Una duda (13/09/2004 18:13, #23267)
  Por: Anónimo
¿Qué ventajas aporta frente a un simple entorno chroot?

Lo digo porque crearte un chroot está "chupao", mientras que el tinglado de UML necesita obviamente de más historias.

O abordándolo de otra forma, ¿puede un proceso dentro de un chroot acceder a partes sensibles del sistema?.
No es pot respondre
 
4.  Re: Una duda (13/09/2004 21:53, #23272)
  Por: phalangana

En realidad son cosas distintas aunque a veces se usen con el mismo propósito (aislar al usuario en una zona para evitar que haga "daño" al sistema).

En un entorno chrooted no debes dar acceso de root al código que en él se ejecuta (ya sea explícitamente o vía binarios SUID que puedan ser explotables), ya que de lo contrario podría saltarse la protección y "escaparse" de su entorno, si bien es verdad que si está bien configurado no debe haber ningún problema. Si te interesa el tema te recomiendo un par de links donde lo cuentan mucho mejor:

http://www.bpfh.net /simes/computing/chroot-break.html

http:/ /www.linuxsecurity.com/feature_stories/feature_story-99.html

En general, además, si los binarios que ejecutas no están compilados estáticamente, el mantenimiento del sistema puede complicarse, puesto que tienes que incluir todas las librerías (o bibliotecas, como prefiráis) en el entorno chrooted, así como ficheros de configuración, logs, etc.

Con máquinas virtuales la cosa es distinta: Lo que tienes a todos los efectos es una máquina completa. Puedes dar a los usuarios la contraseña de root (de su instancia UML, claro está) y éstos pueden instalar todo lo que les plazca sin afectar al sistema "real" (al host), aunque todos sabemos que no hay sistema completamente seguro...

No es pot respondre
 
5.  Re: Una duda (13/09/2004 22:13, #23274)
  Por: Anónimo
Gracias por los links.
No es pot respondre
 
6.  Re: Màquines virtuals amb user-mode-linux (14/09/2004 21:09, #23287)
  Por: Baxas
Hola,

Me surge la siguiente idea, no sé si es posible. Para entornos thin client son muy interesantes pues se podria hacer que cada thin client se ejecute en una maquina virtual diferente y por lo tanto el usario pueda hacer lo que quiera con su "máquina".

¿Que opinais?
No es pot respondre
 
7.  Re: Màquines virtuals amb user-mode-linux (17/09/2004 10:42, #23313)
  Por: 10orio
Moltes gràcies per l'article... M'estava tornant boig amb el bug que comentes!!!!! :)
No es pot respondre
 
GRACIAS
Distribuciones Universal
Por el servidor
Dpto. de Matematicas e Informatica
Calificacion
***0
Vots: 12
Danos tu opinion:
**** Excelente
***0 Muy Bueno
**00 Bueno
*000 Regular
0000 Malo
Relacionados
. Máquinas virtuales con user-mode-linux
SECCIONES
Noticia
Breve
Truco
Enlace
Participa
Proyecto
Articulo
Webbulma
Manoletada :-)
Seguridad
Modificado: 19/9/2005 14:59:49 | Tiempo Total: 0.049 segs | Kernel: Linux - i686 - 2.6.26-2-686 | Last boot: too much time ago!!
Powered by Apache    MySQL    PHP    Gimp