Benvingudes i benvinguts al portal Linkat

La Linkat és la distribució educativa de GNU/Linux que ha iniciat i ofereix el Departament d'Ensenyament a la comunitat educativa. Es tracta d'un projecte de programari lliure que permet als centres educatius, però també a tota la societat, tenir accés de forma legal, gratuïta i amb suport tècnic professional, a un conjunt molt ampli d'aplicacions: educatives, d'ofimàtica, d'Internet, multimèdia...

VirtualBox en mode bridge  Final

  • Per configurar virtualbox amb modo bridge he fet:
    M'he baixat la versió no opensource de la pàgina de virtualbox: http://www.virtualbox.org/wiki/Downloads i escullo la opció binaries acabo baixant la versió  VirtualBox-1.6.2_31466_sles10.1-1.i586.rpm

    Per si de cas tinc instal.lades les fonts del nucli
    També instal.lo el fitxer bridge-utils

    Instal.lo l'esmentat fitxer VirtualBox-1.6.2_31466_sles10.1-1.i586.rpm

    Creo un grup vboxusers i faig que els usuris que vulguin instal.lar màquines virtuals hi pertanyin

    Faig que el fitxer /dev/net/tun tingui els permisos 660 i pertanyi a root i grup principal vboxusers

    Per executar virtualbox ens cal des de consola executar VirtualBox
    També se m'ha creat una entrada en el menú a: Aplicacions-->Sistema-->Emulador-->sun xVM VirtualBox

    Dins de /etc/sysconfig/network i tinc el següent fitxer:
    ifcfg-br0 amb el contingut
    STARTMODE='auto'
    BOOTPROTO='static'
    IPADDR='192.168.1.33/24'
    BROADCAST=''
    USERCONTROL='no'
    BRIDGE='yes'
    BRIDGE_PORTS='eth0'
    BRIDGE_AGEINGTIME='20'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_HELLOTIME='2'
    BRIDGE_MAXAGE='20'
    BRIDGE_PATHCOSTS='3'
    BRIDGE_PORTPRIORITIES=
    BRIDGE_PRIORITY=
    BRIDGE_STP='on'

    Aquest serà el pont entre la interface eth0 i la interface virtual de la nostra màquina
    el fitxer ifcfg-eth0 té
    BOOTPROTO=static
    IPADDR=0.0.0.0
    BROADCAST=
    STARTMODE='auto'
    NAME='el que tenies a la teva màquina'
    PREFIXLEN=
    ETHTOOL_OPTIONS=
    MTU=
    NETWORK=
    REMOTE_IPADDR=
    USERCONTROL=yes
    NETMASK=255.255.255.0


    Executes /etc/init.d/network restart ( rcnetwork restart) i has creat el pont br0 ( se li podia haver posat un altre nom)
    Al haver instal.lat virtualbox tens les utilitats VBoxAddIF i VBoxDeleteIF

    Crearem ara la interfície virtual per la nostra màquina que segons diu el manual ha de tenir un nom del tipus vbox0, vbox1 etc; jo he escollit vbox0

    Per tant ens cal fer VBoxAddIF vbox0 nom_usuari br0; aquí nom_usuari és l'usuari que executarà la màquina virtual
    dins de /etc/virtualbox/interfaces és crea una entrada amb les dades vbox0 nom_usuari br0

    Quan definim la nostra màquina virtual a l'apartat de Paràmetres-->xarxa i adjuntat a, escollirem interfície de xarxa de l'amfitrió (n'hi ha d'altres com NAT o xarxa interna etc)

    A nom de la interfície hi posarem vbox0

    Si per qualsevol motiu es volgués treure aquesta interfície virtual vbox0 fariem VBoxDeleteIF vbox0

    Torno a executar /etc/init.d/network restart i ja tinc el bridge muntat

    Problema: Al reiniciar l'ordinador perdo la connexió i per tornar-la a recuperar em cal executar com a root les comandes
    VBoxDelete vbox0
    VBoxAddIF vbox0 nom_usuari br0
    rcnetwork restart

    No se com es pot fer per conservar la interfícicie virtual vbox0
  • Em contesto a mi mateix
    Us comento la meva petita experiència en la configuració del modo bridge per virualbox
    En primer lloc instal·leu el paquet bridge-utils
    En segon  lloc vaig al directori /etc/sysconfig/network i defineixo les següents interfícies

    fitxer ifcfg-eth0
    BOOTPROTO=static
    IPADDR=0.0.0.0
    BROADCAST=
    STARTMODE='auto'
    NAME='Uniwill RTL-8139/8139C/8139C+'
    PREFIXLEN=
    ETHTOOL_OPTIONS=
    MTU=
    NETWORK=
    REMOTE_IPADDR=
    USERCONTROL=yes
    NETMASK=255.255.255.0

    És important la instrucció IPADDR=0.0.0.0 ( no sé si això vol dir que la xarxa està en modo promiscu), entenc que la xarxa física atendrà peticions de qualsevol ip

    fitxer ifcfg-br0, en el mateix directori que l'anterior
    STARTMODE='auto'
    BOOTPROTO='static'
    IPADDR='192.168.1.33/24'
    BROADCAST=''
    USERCONTROL='no'
    BRIDGE='yes'
    BRIDGE_PORTS='eth0'
    BRIDGE_AGEINGTIME='20'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_HELLOTIME='2'
    BRIDGE_MAXAGE='20'
    BRIDGE_PATHCOSTS='3'
    BRIDGE_PORTPRIORITIES=
    BRIDGE_PRIORITY=
    BRIDGE_STP='on'
    ONBOOT=yes

    En aquest fitxer definim la interfície que farà de pont entre la interfície virtual a la qual  la màquina de virtualbox es connectarà i la verdadera interfície física (  BRIDGE='yes' i BRIDGE_PORTS='eth0').

    D'altre banda determinarà quina ip tindrà la maquina base, en el cas de l'exemple IPADDR='192.168.1.33/24'

    QUE MÉS HEM DE FER ARA?
    1)Crear el pont(bridge) que anomenarem br0
    2)Crear una interfície virtual que anomenarem vbox0 i que associarem al nostra pont( bridge)
    3)Crear una màquina virtual amb virtualbox ( jo per exemple he fet la prova amb una màquina virtual windows XP)
    3.1)Aquesta màquina tindrà definits en l'apartat de paràmetres de xarxa-->adaptador de xarxa-->adjuntat a=Interfície de xarxa de l'amfitrió ( hi ha altres variants com NAT, no connectat i xarxa interna),
    3.2) A l'apartat de paràmetres de l'interfície de l'anfitrió cal posar
    3.2.1) Interfíce=vbox0 que és la interfície virtual creada
    3.2.2) Configura l'aplicació=/usr/bin/vbox_up ( això és un script colocat a /usr/bin, pot estar a qualsevol altre lloc) i que s'executarà abns de que la màquina virtual s'executi ( ver a ser un presession)
    3.2.3)Finalitza la aplicació=/usr/bin/vbox_down, això és un script que s'excutarà al tancar la màquina virtual; be a ser una mena de postsession
    3.2.4 És defineixen altres paràmtres de la màquina virtual

    Comentem, prèviament, una mica el significat de la configuració anterior
    El modo "interfície de xarxa de l'amfitrió" ( sense les cometes) representa per virtualbox el modo bridge de vmware
    L'script vbox_up ( que pot tenir qualsevol altre nom) serà l'encarregat de crear la interfície virtual que lligarà al bridge br0  al qual al seu tron està lligat a eth0, que al estar en modo promiscu( eth0) accepta connexions des de qualsevol ip. Per tant la nostra màquina virtual té la connexió vbox0-->br0-->eth0
    L'script vbox_down, serà l'encarragat de tancar la connexió un cop s'hagi tancat la màquina virtual

    Escrivim ara el contingut dels escripts:
    vbox_up
    #!/bin/bash
    #create the tap interface and make current user the owner
    sudo /usr/bin/tunctl -t vbox0 -u esteve

    #bring it up unconfigured
    sudo /sbin/ifconfig vbox0 up

    #add the tap interface to the bridge (br0)
    sudo /sbin/brctl addif br0 vbox0

    Llegim una mica que diu:
    Mitjançant la funció tunctl ( per això entre d'altres coses necessitem bridge-utils) crea una interfície virtual vbox0 i li associa com a propietari l'usuari esteve, que serà qui executarà la màquina virtual
    L'altre instrucció aixeca la interfície virtual, és a dir serà una interfície a la qual des del nostre sistema operatiu de la màquina virtual li podrem associar una ip. Encara però no té cap sortida a l'exterior
    Finalment la instrucció brctl addif br0 vbox0, ens diu que associem ( fem el pont) entre la nostra interfície virtual i br0 i així indirectament ja tenim la comunicació entre vbox0 i eth0. La funció brctl està a la nostra disposició gràcies a bridge-utils

    Aquest és l'escript que s'executarà abans de la màquina virtual i que deixarà el pont vbox0-->br0-->eth0 preparat
    Aquí cal remarcar una cosa ( que per a mi ha estat potser el maldecap més gran, per desconeixença de linux es clar) que totes les funcions s'han d'executar com a root ( d'aquí el sudo davant) i jo estic actuant com l'usuari esteve i per tant al executar l'script la màquina virtual caldria tenir a la ma la contrasenya de root corresponent o si esteve és un "sudoer", com evitar que se li demani la contrasenya ( és a dir vull passar a root sense que se'm demani contrasenya)
    La resposta una mica més endevant, tingueu paciència pel rotllo.

    Analitzem ara l'script vbox_down ( el que s'0execuita quan la nostra màquina virtual es tanca)
    #!/bin/bash
    #remove the tap interface from the bridge (br0)
    sudo /sbin/brctl delif br0 vbox0
    #destroy the tap interface
    sudo /usr/bin/tunctl -d vbox0

    També sota sudo ( i per tant amb el mateix problema anterior)l'escript fa:
    Esborra el lligam entre la interfície virtual vbox0 i el pont bro ( opcio delif de brctl)
    Elimina ( desactiva) la interfície virtual vbox0; la opció -d de la funcio tunctl

    Finalment i abans d'abordar l'esmentat problema del sudo ( haver de treballar amb mode root, essent l'usuari esteve) ens cal encara tocar un fitxer que és qui conté la informació del bridge, i és el fitxer "tun" ( també sense les cometes, i està dins del directori /dev/net; per tant diguem-ho tot sencer /dev/net/tun

    Aquest fitxer ha de tenir per permisos d'escriptura i lectura per root i per tots aquells usuaris, que com l'esteve, es volen complicar la vida en fer funcionar una màquina virtualbox en mode bridge.

    Podem fer una de dues senzilles coses
    Crear un grup anomenat vboxusers ( qualsevol altre nom) fer que esteve hi pertany i final ment donar permisos 660 a tun amb propietat per root i grup principal per vboxusers
    O de forma alternativa donar permisos 666 al fitxer "tun".

    Pasem a ra la la qüestió de com executar sudo sense que se'ns demani una contrasenya. Bé navegant per internet he trobat la resposta que ara us exposo, no sé si n'hi ha d'altres ni si són millors, però ejn aquests moments jo només conec aquesta

    En el fitxer /etc/sudoers , al final hi posem la instrucció següent:
    %vboxusers  ALL = NOPASSWD: /sbin/ifconfig, /sbin/brctl, /usr/bin/tunctl
    Estem dient al sistema que qualsevol usuari del grup vboxusers ( podria ser un altre grup) té permisos de root per executar  els scripts o programes ifconfig, brctl i tunctl i que no se li demanarà contrasenya NOPASSWD.
    No connect tota la terminologia d'aquest fitxer, però crec que hi ha una pàgina a internet que ho documenta.

    No sé si m'he deixat alguna cosa, en tot cas afegiré que el fitxer sudoers (/etc/sudoers) ha de quedar amb els permisos 440 sinó el sistema es queixa
  • 0 usuaris

Aquesta llista mostra els usuaris actius durant els darrers 20 minuts.