Ceci est une ancienne révision du document !
VirtualBox et le réseau
Cette page n'est qu'une annexe destinée à alléger la page principale de VirtualBox et permettant de vous présenter la façon de mettre en œuvre la mise en réseau de l'hôte (host interface networking).
- Adapter Type:
PCnet-FAST III (Am 79C973)
- Adresse MAC: Laisser la valeur par défaut, ou
Générer
.
NAT
Sélectionner simplement l'option NAT
du menu attaché à dans la configuration réseau de la machine virtuelle.
Adaptateur réseau hôte
Installer les paquets bridge-utils, uml-utilities (attention, ce paquet est dans le dépôt Universe).
Création du pont
Nous créons le pont quelle que soit la méthode utilisée (permanente ou dynamique), car il est nécessaire aux deux.
Le fait que le pont soit permanent nous permet, pour la méthode dynamique, d'ajouter les interfaces virtuelles sans couper la connection réseau de l'hôte.
Sauvegarder le fichier /etc/network/interfaces:
sudo cp /etc/network/interfaces /etc/network/interfaces.orig
Éditer le fichier /etc/network/interfaces.
Remplacer les valeurs de "address", "netmask" et "gateway" par celles utilisées sur le réseau.
L' interface est probablement déjà configurée par le système, repérer les lignes du type
auto eth0 iface eth0 inet dhcp
ou
auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx
puis les supprimmer.
Configurer l'interface en mode manuel, pour cela ajouter
auto eth0 iface eth0 inet manual
Ajouter le pont. Si votre interface se configure automatiquement (DHCP
), ajouter
auto br0 iface br0 inet dhcp bridge-ports eth0
sinon, ajouter (remplacer les xxx par les valeurs qui se trouvaient dans la configuration de eth0)
auto br0 iface br0 inet static bridge-ports eth0 address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx
Préparation des interfaces virtuelles
Quelques préparatifs sont nécessaires afin que VirtualBox puisse accéder aux interfaces virtuelles.
Ajouter l'utilisateur au groupe uml-net:
sudo adduser $USERNAME uml-net
Créer le groupe tunusers:
sudo addgroup tunusers
Y ajouter l' utilisateur:
sudo adduser $USERNAME tunusers
Modifier les droits d'acces a /dev/net/tun
pour que les utilisateurs du groupe tunusers puissent l'utiliser:
Éditer le fichier /etc/udev/rules.d/20-names.rules.
Remplacer
KERNEL=="tun", NAME="net/%k"
par
KERNEL=="tun", NAME="net/%k", GROUP="tunusers", MODE="0660"
Si le node /dev/net/tun
est créé par recopie du fichier /lib/udev/devices/net/tun
avec ses droits d'accès.
Modifier les permissions de /lib/udev/devices/net/tun afin que le fichier soit accessible pour les membres du groupe tunusers:
sudo chown :tunusers /lib/udev/devices/net/tun sudo chmod g+rw /lib/udev/devices/net/tun
Redémarrer le système.
Méthode dynamique
L'interface utilisée par la machine virtuelle est créée au démarrage de celle-ci, puis supprimée a son extinction.
Éditer le fichier /opt/bin/vbox-network.
#!/bin/bash # include lib . /opt/lib/vbox-network CALLNAME=$(basename $0) case "$CALLNAME" in "vbox-network_start") # if the fd is set, interface already exists [ "$IF_FD" = "0" ] || { echo $IF_NAME; exit $NO_ERROR; } create_iface exit $? ;; "vbox-network_stop") delete_iface exit $? ;; *) exit $E_BAD_CALLNAME ;; esac
Éditer le fichier /opt/lib/vbox-network.
# include configuration . /opt/etc/vbox-network IF_FD="$1" IF_NAME="$2" # get the user running vbox if [ "$SUDO_USER" = "" ]; then VBOX_USER=$USER else VBOX_USER=$SUDO_USER fi # errors NO_ERROR=0 E_ERROR=1 E_NOT_ROOT=2 E_TUNCTL_CREATE=3 E_BAD_CALLNAME=4 function create_iface { # need to be root [ "$UID" = "0" ] || return $E_NOT_ROOT # create the interface TUNCTL_CMD="$TUNCTL -b -u $VBOX_USER" [ "$IF_NAME" = "" ] || TUNCTL_CMD="$TUNCTL_CMD -t $IF_NAME" IF=$( $TUNCTL_CMD ) [ -z "$IF" ] && return $E_TUNCTL_CREATE # bring it up $IFCONFIG $IF up >> /dev/null # bridge it $BRCTL addif $BRIDGE $IF >> /dev/null echo $IF return $NO_ERROR } function delete_iface { # need to be root [ "$UID" = "0" ] || return $E_NOT_ROOT # unbridge $BRCTL delif $BRIDGE $IF_NAME >> /dev/null # delete $TUNCTL -d $IF_NAME >> /dev/null }
Éditer le fichier /opt/etc/vbox-network.
BRIDGE="br0" TUN="/dev/net/tun" TUNCTL="/usr/bin/VBoxTunctl -f $TUN" BRCTL="/usr/sbin/brctl" IFCONFIG="/sbin/ifconfig"
Modifier les permission de /opt/bin/vbox-network afin qu'il soit exécutable par les membres du groupe vboxusers:
sudo chown :vboxusers /opt/bin/vbox-network sudo chmod ug+rx /opt/bin/vbox-network
Créer les liens vbox-network_start et vbox-network_stop:
cd /opt/bin sudo ln -s vbox-network vbox-network_start sudo ln -s vbox-network vbox-network_stop
Editer /etc/sudoers afin que virtualbox puisse exécuter les commandes necessaires sans se voir demandé de mot de passe:
sudo visudo
Ajouter
# Members of vboxusers can run /opt/bin/vbox-network_start and /opt/bin/vbox-network_stop without asked for a password %vboxusers ALL=(ALL) NOPASSWD: /opt/bin/vbox-network_start, /opt/bin/vbox-network_stop
Pour utiliser ces interfaces virtuelles, sélectionner l'option Adaptateur Réseau Hôte
du menu attaché à dans la configuration réseau de la machine virtuelle.
Laisser le champ Nom de l'interface vide.
Remplir le champ Application d'installation avec sudo /opt/bin/vbox-network_start
.
Remplir le champ Application de désinstallation avec sudo /opt/bin/vbox-network_stop
.
Méthode permanente
Les interfaces virtuelles seront créées au démarrage du systeme, meme si elles ne sont pas utilisées par la suite.
Éditer le fichier /etc/network/interfaces.
Remplacer tapX par le nom de l'interface (tap0, puis tap1, tap2, tap3 …)
Remplacer <user> par le nom de l'utilisateur.
Pour chaque interface virtuelles, ajouter
auto tapX iface tapX inet manual up ifconfig $IFACE up down ifconfig $IFACE down tunctl_user <user>
puis, dans la section de l'interface br0, remplacer
bridge-ports eth0
par
bridge-ports eth0 tapX
Redémarrer le réseau:
sudo /etc/init.d/networking restart
Pour utiliser ces interfaces virtuelles, sélectionner l'option Adaptateur Réseau Hôte
du menu attaché à dans la configuration réseau de la machine virtuelle, puis indiquer le nom de l'interface (tap0, tap1, tap2 … ) dans le champ Nom de l'interface.
Pour la version 1.6.0 de Sun il faut utiliser les cartes réseaux Intel Pro/1000 au lieu des PCNet . Télécharger Pilotes Windows XP et les installer.
Réseau interne
A faire …
Liens et sources
- Documentation VirtualBox: http://www.virtualbox.org/wiki/End-user_documentation
- Script de configuration de pont : http://www.taltan.fr/post/2008/03/24/VirtualBox-simplifer-la-gestion-du-reseau-avec-un-hote-Ubuntu
Contributeurs : narsil, Igor.B, tigermickrs, Marvinux.