#1 Le 20/03/2009, à 23:18
- raul endymion
Automatiser l'adaptateur réseau hote virtualbox
Bonjour,
Après moult recherche pour configurer l'adaptateur réseau hôte de virtualbox, les indications que j'ai pu trouver m'ont toujours parues compliquées. Soit il fallait configurer /etc/interfaces (ce qui perturbe NetworkManager) soit il fallait lancer un shell avant de lancer virtualbox.
En regroupant les informations de la documentation ubuntu.fr http://doc.ubuntu-fr.org/virtualbox_reseau et celles de Taltan http://www.taltan.fr/post/2008/03/24/Vi … ote-Ubuntu, j'ai créé un script qui permet de n'avoir ni configuration à faire et qui se lance automatiquement par virtualBox.
Si cela peut intéresser quelqu'un ...
Nécessite les paquets bridge-utils et uml-utilities
$ sudo apt-get install bridge-utils uml-utilities
Le code se décompose en trois shell.
Le shell principal qui contient tous les traitements et deux shell de lancement qui seront appelés par virtualBox.
vbox-network :
#!/bin/bash
##########################################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net #
##########################################################################################################
# Script vbox-network.sh #
# Licence : GNU / GPL #
# Inspiré de la doc sur le wiki Ubuntu #
# - http://doc.ubuntu-fr.org/virtualbox_reseau#alternative #
# et du script de Taltan #
# - http://www.taltan.fr/post/2008/03/24/VirtualBox-simplifer-la-gestion-du-reseau-avec-un-hote-Ubuntu #
##########################################################################################################
# Dans le cadre de l'utilisation de VirtuaBox en mode pont #
# - Création du pont réseau #
# - Création des interfaces réseaux virtuelles tapX #
# - Création du pont réseaux entre l'interface physique et les virtuelles #
##########################################################################################################
# Dépendances #
##########################################################################################################
# - Nécessite les paquets bridge-utils et uml-utilities #
# => apt-get install bridge-utils uml-utilities #
##########################################################################################################
# 20/03/09 - v1.0 - Création #
##########################################################################################################
## Variables
gateway=192.168.0.255 # adresse ip de la passerelle
bridge=br0 # nom du pont
if_hote=eth0 # interface physique actuelle
vb_user=$USER # utilisateur de VirtualBox
max_if=10 # nombre maximum d'interface gérées
log_file=/var/log/vbox-network.log
if_fd="$2"
if_name="$3"
# errors
NO_ERROR=0
E_ERROR=1
E_NOT_ROOT=2
E_TUNCTL_CREATE=3
E_BAD_CALLNAME=4
## Fonction de mise en place du pont
start_br () {
TESTPONT=$(/sbin/ifconfig | grep $bridge) # si aucun pont configuré, création
if [ -z "$TESTPONT" ]; then
brctl addbr $bridge 2>> $log_file # création du pont
brctl addif $bridge $if_hote 2>> $log_file # ajout de l'interface physique dans le pont
ifconfig $if_hote 0.0.0.0 promisc up 2>> $log_file # configuration ip de l'interface physique
dhclient $bridge 2>> $log_file # configuration dhcp pour le pont
sleep 10
route add default gw $gateway 2>> $log_file # configuration de la passerelle pour le pont
fi
}
## Arrêt et suppression du pont puis restauration de la configuration réseau initiale
stop_br () {
TESTPONT=$(/sbin/ifconfig | grep $bridge) # si aucun pont configuré, message
if [ -z "$TESTPONT" ]; then
echo "Attention : pont réseau non trouvé. Vérifier la config réseau ..."
exit E_ERROR
fi
TESTTAP=$(/sbin/ifconfig | grep tap) # si plus d'interface, suppression du pont
if [ -z "$TESTTAP" ]; then
ifconfig $bridge down 2>> $log_file # désactivation du pont
brctl delbr $bridge 2>> $log_file # suppression du pont
ifconfig $if_hote down 2>> $log_file # restauration de la configuration réseau initiale
ifconfig $if_hote up 2>> $log_file
sleep 5
fi
}
find_new_name () {
var0=0
while [ "$var0" -lt "$max_if" ] # recherche de la premiere interface libre
do
temp_tap=tap${var0}
TESTTAP=$(/sbin/ifconfig | grep $temp_tap) # si l interface n existe pas, utilisation du nom
if [ -z "$TESTTAP" ]; then
if_name=$temp_tap
var0=$max_if
fi
let "var0 += 1"
done
if [ -z "$if_name" ]; then
echo "Attention : nb max interfaces atteinte"
exit E_ERROR
fi
}
## Fonction de création de l'interface
start () {
start_br # démarrage du pont
find_new_name # détermination du nom de l'interface
name_tap=$if_name # initialisation du nom de l'interface virtuelle
tunctl -u $vb_user -t $name_tap >> $log_file # création de l'interface virtuelle
ifconfig $name_tap up 2>> $log_file # activation de l'interface virtuelle
brctl addif $bridge $name_tap >> $log_file # ajout de l'interface virtuelle dans le pont
ifconfig $name_tap 0.0.0.0 promisc up 2>> $log_file # configuration ip de l'interface virtuelle
brctl showstp $bridge >> $log_file # affiche les info sur le pont
echo $name_tap
return $NO_ERROR
}
## Suppression de l'interface
stop () {
name_tap=$if_name
tunctl -d $name_tap >> $log_file # suppression
stop_br # Suppression du pont
ifconfig >> $log_file # affiche la configuration réseau
}
## information sur le bridge
info () {
brctl showstp $bridge
}
## Point d’entrée du script
case $1 in
start)
echo "#########################" >> $log_file
echo $(date) >> $log_file
echo $1 $2 $3 >> $log_file
start
;;
stop)
echo "#########################" >> $log_file
echo $(date) >> $log_file
echo $1 $2 $3 >> $log_file
stop
;;
info)
info
;;
*)
echo $"Utilisation: vbox-network {start|stop|info} NumeroInterface NomInterface"
exit 1
esac
vbox-network_start :
#!/bin/bash
sudo /usr/bin/vbox-network.sh start $1 $2
vbox-network_stop :
#!/bin/bash
sudo /usr/bin/vbox-network.sh stop $1 $2
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 /usr/bin/vbox-network without asked for a password
%vboxusers ALL=(ALL) NOPASSWD: /usr/bin/vbox-network
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 /opt/bin/vbox-network_start.
Remplir le champ Application de désinstallation avec /opt/bin/vbox-network_stop.
Hors ligne
#2 Le 21/03/2009, à 06:17
- figaro
Re : Automatiser l'adaptateur réseau hote virtualbox
Bien compliqué alors que le paramétrage de la machine virtuelle dispose de la fenêtre réseau qui permet d'activer cela simplement depuis VB2.1
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
#3 Le 23/03/2009, à 13:41
- raul endymion
Re : Automatiser l'adaptateur réseau hote virtualbox
Bonjour,
Effectivement, mais actuellement, si je ne me trompe, la version dans les dépots officiels est la 2.0.4
Hors ligne
#4 Le 23/03/2009, à 13:58
- figaro
Re : Automatiser l'adaptateur réseau hote virtualbox
C'est la 2.1.4 la version actuelle ....
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
#5 Le 23/03/2009, à 15:16
- raul endymion
Re : Automatiser l'adaptateur réseau hote virtualbox
Je parlais évidement des dépots Ubuntu (8.10)
Dernière modification par raul endymion (Le 23/03/2009, à 15:22)
Hors ligne