• # Voici une technique basée sur un bridge

    Posté par . En réponse au message VirtualBox & réseau : comment ça marche ?. Évalué à 3.

    1) il me faut un réseau, routé (pas naté), qui va à la fois faire
    communiquer les VM entre elles, et les faire communiquer vers le monde
    extérieur.

    VirtualBox permet de s'attacher à une interface type tap/tun. Donc j'ai
    créer un bridge qui inclus les interfaces des VM. Accessoirement, comme
    ma machine sert de routeur, l'interface bridge a elle même une addresse
    IP. Une autre possibilité serait d'ajouter au bridge une interface
    réelle connectée au reste du réseau.

    brctl addbr br0
    ip addr add 192.168.28.1 dev br0

    Pour ajouter une interface réelle, avec un vrai réseau:
    brctl addif br0 eth1
    ip link set up dev eth1

    eth1 étant connectée au switch réel de la salle, pas besoin d'IP.

    Ensuite j'ai créer les VM avec l'interface graphique, déjà ne serait-ce
    que pour faire l'installation de mon OS favoris.
    La première configuration se fait à la main:

    TAP=`tunctl -b`
    ip link set up dev $TAP
    brctl addif br0 $TAP

    $TAP contient l'interface à utliser dans VirtualBox.

    Bon là evidement, c'est là que je magouille. J'ai un dhcpd en écoute sur
    br0, et ma machine fait office de routeur. De plus je fixe une mac
    adresse dans la VM.

    Une fois ma VM installée, et mon système opérationnel, je veux pourvoir
    le lancer sans réfléchir. Sauf qu'il est impossible de fixer l'interface
    tap en ligne de commande (elle sont dynamiques et je peux en avoir besoin
    pour d'autres usage, mais on peut modifier la config de la machine virtuelle.
    Hop, un script:

    #!/bin/sh

    # Un argument, le nom de la vm:
    VMNAME=1ドル

    # tunctl créer et renvois la première TAP dispo
    TAP=`tunctl -b`
    # dans le bridge
    brctl addif br0 $TAP
    # impératif sinon les paquets ne passent pas
    ifconfig $TAP up

    # on modifie la VM pour connecter la première interface
    # à note TAP
    /usr/lib64/virtualbox/VBoxManage modifyvm "$VMNAME" -hostifdev1 $TAP

    # on lance le tout dans un sous shell en tache de fond
    (

    /usr/lib64/virtualbox/VBoxHeadless -startvm "$VMNAME"

    # je suis propre, je vire la tap inutile:
    tunctl -d $TAP
    )&

    NB: VirtualBox fournit un soft pour faire la dernière partie en fait, mais je ne l'ai vu qu'après.