Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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