Forum Linux.général VirtualBox & réseau : comment ça marche ?

Posté par  .
Étiquettes : aucune
0
29
sept.
2008
bonjour,

j'ai un réseau physique, avec une passerelle réseau, qui distribue des adresses en 192.168.1.X aux machines physiques du réseau.

Sur l'une d'entres elles, j'ai installé VirtualBox, et des machines virtuelles dedans.
Ces machines ont des adresses de la forme 10.0.2.X.

A partir de ces machines, j'ai accès au net et au réseau ; en revanche, impossible d'accéder aux machines virtuelles depuis la machine hôte ou une autre machine du réseau.

Qui est-ce qui attribue ces adresses en 10.0.2.X ? VirtualBox embarque son propre serveur DHCP ?
Comment faire pour que mes machines virtuelles obtiennent leur IP (ainsi que leur nom, leurs DNS, etc...) auprès de ma passerelle réseau, exactement comme les machines physiques ?

Merci d'avance !
  • # touche touche

    Posté par  . Évalué à 2.

    Je sais pas pour virtual box mais pour qemu il faut faire du bridge.
    J'avais d'ailleur écris un petit tuto:
    http://wiki.archlinux.fr/howto:virtualisation:qemu#avec_des_(...)

    La manipulation doit aussi fonctionner pour virtual box.
  • # la machine qui heberge virtual box

    Posté par  . Évalué à 3.

    dans ta config ton virtualbox fait du NAT.

    il distribue donc des IPs, un DNS à tes machines virtuelles.
    tu dois d'ailleurs avoir une nouvelle carte reseau dans ta machine reelle, elle aussi en 10.0.2.x

    mais c'est aussi pour ca qu'une machinne externe ne peut pas joindre tes machines virtuelles

    comme dit plus haut si tu veux mettre tes machines virtuelles sur le reseau 192.168.1.X il faut demander à virtualbox de faire un "bridge".
    Ainsi les machines virtuelles seront branchées sur ta carte reseau
  • # .

    Posté par  . Évalué à 4.

    Qui est-ce qui attribue ces adresses en 10.0.2.X ? VirtualBox embarque son propre serveur DHCP ?

    Oui

    Comment faire pour que mes machines virtuelles obtiennent leur IP (ainsi que leur nom, leurs DNS, etc...) auprès de ma passerelle réseau, exactement comme les machines physiques ?

    VirtualBox a 4 mode pour le réseau:
    - rien
    - NAT (par défaut)
    - adaptateur réseau hôte
    - réseau interne (= les machines virtuelles se voient entre elles)

    Ce que tu veux, c'est "adaptateur réseau hôte" pour créer une interface sur ta machine hôte, puis faire un bridge.

    Le plus simple est probablement que tu lises le manuel utilisateur (User Manual sur http://www.virtualbox.org/wiki/Downloads ) qui décrit très bien la procédure à suivre, pour plusieurs distributions.
  • # Voici une technique basée sur un bridge

    Posté par  . É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.
  • # Merci !

    Posté par  . Évalué à 3.

    Grand merci à vous pour vos nombreux messages !!

    C'est surtout la notion de "bridge" qui me manquait.

    J'ai lu la doc officielle, vos exemples et vos liens, ainsi que cet article :

    http://atmaniak.net/blog/279-virtualbox-et-le-reseau-sous-de(...)

    Maintenant ça fonctionne parfaitement !

    Encore merci ;-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.