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).
Mise en réseau de l'hôte
Nous allons avoir besoin des paquets bridge-utils et uml-utilities (attention, ce paquet est dans le dépôt « Universe »).
Il faut donner les droits à l'interface « tun » :
sudo chmod 0666 /dev/net/tun
Il faut créer un pont1) dans « /etc/network/interfaces ». Tout d'abord on sauvegarde le fichier de configuration des interfaces réseau :
sudo cp /etc/network/interfaces /etc/network/interfaces.ori
En on édite le fichier /etc/network/interfaces.
Votre interface « eth0 » est probablement déjà configurée avec un truc du genre
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
Ceci n'est plus nécessaire … commentez ces lignes (#).
Il faut d'abord créer deux interfaces, une réelle (eth0) et une virtuelle (tap1), puis les ponter (bridge0), pour cela, ajouter :
auto eth0 iface eth0 inet manual
et
auto tap1 iface tap1 inet manual tunctl_user <user>
où 〈user〉 (sans les 〈〉) correspond exactement à l'utilisateur déclaré dans le groupe vboxusers
Maintenant, le pont. Il y a plusieurs solutions : soit l'OS Host est en client DHCP (ce qui n'est pas pratique si vous voulez en faire un smb server pour partager des fichiers et des imprimantes avec le Guest), soit il est configuré en IP fixe. On choisira l'une ou l'autre des solutions ci-dessous. Évidemment, ceci rend impossible une configuration future avec les outils Gnome.
IP fixe
Insérer après les interfaces ci-dessus (copier-coller les données IP de l'ex eth0 que vous avez commenté plus haut) :
auto bridge0 iface bridge0 inet static post-up chmod ugo+rw /dev/net/tun address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx bridge-ports eth0 tap1 bridge-ageing 7200 bridge-fd 0
Client DHCP
Insérer après les interfaces ci-dessus :
auto bridge0 iface bridge0 inet dhcp post-up chmod ugo+rw /dev/net/tun bridge-ports eth0 tap1 bridge-ageing 7200 bridge-fd 0
Il ne nous reste plus qu'à ajouter l'utilisateur lançant VirtualBox au groupe « uml-net » afin qu'il puisse avoir accès au réseau ponté.
sudo addgroup $USERNAME uml-net
Un reboot du Host ne sera pas nécessaire, pour s'assurer que les nouvelles configurations réseau sont bien prises en compte il suffira de lancer :
sudo /etc/init.d/networking restart
Surveillez les erreurs dans l'output du terminal s'il y en a.
Vous avez maintenant un bridge qui met à disposition de l'OS Guest un accès complet au LAN.
Dans les paramètres de l'OS Guest, il vous reste à configurer le « Adaptateur réseau Hôte » avec tap1 comme « Nom de l'interface ».
Si votre LAN dispose d'un serveur DHCP (99% des cas), vous pouvez configurer l'OS Guest en client DHCP, sinon, une adresse IP fixe fera l'affaire (différente de celle du Host, bien sûr).
Alternative
Je poste ici car la solution donnée ne fonctionne pas pour moi et semble ne pas fonctionner pour d'autres. Je n'arrive pas à voir ce qui ne colle pas dans la solution proposée ici, donc je poste ma solution en attendant que quelqu'un puisse modifier l'erreur qu'il y a dans l'explication ci dessus.
Une fois la chose suivante faite comme proposé ci-dessus :
il faut donner les droits à l'interface tun :
sudo chmod 0666 /dev/net/tun
Il suffit de créer notre script grâce à la commande :
sudo touch /etc/init.d/bridging && sudo gedit /etc/init.d/bridging
et ensuite d'y copier le code suivant dedans :
#!/bin/bash brctl addbr br0 brctl addif br0 eth0 tunctl -t tap1 -u reism chmod 0666 /dev/net/tun ifconfig tap1 up brctl addif br0 tap1 ifconfig tap1 0.0.0.0 promisc up ifconfig eth0 0.0.0.0 promisc up ifconfig br0 10.0.0.8 netmask 255.255.255.0 broadcast 10.0.0.255 sleep 10 route add default gw 10.0.0.200
De plus, ce script attribue l'adresse IP 10.0.0.8, le masque 255.255.255.0 et le broadcast 10.0.0.255 au bridge br0 ; si vous voulez une autre IP fixe n'oubliez pas de la modifier ainsi que le masque et le broadcast.
Si vous voulez que br0 soit configuré automatiquement (serveur DHCP sur le réseau ; les box le font généralement) en automatique, remplacez « ifconfig br0 10.0.0.8 netmask 255.255.255.0 broadcast 10.0.0.255
» par « dhclient br0
».
Il en est de même pour la dernière ligne qui spécifie la passerelle ; modifiez l'adresse pour mettre celle de votre routeur qui fait passerelle. Pour les utilisateurs qui seront en automatique, cette derniere ligne peut être supprimé simplement car en automatique la passerelle est également configurée automatiquement.
Une fois, le script écrit, enregistrez-le et quitter l'éditeur de texte.
Il faut que nous rendions ce script executable grâce à la commande suivante :
sudo chmod 755 /etc/init.d/bridging
Maintenant vous avez 3 choix :
- Soit vous démarrez le script automatiquement à chaque démarrage, auquel cas il vous suffit de taper la commande suivante :
sudo ln -s /etc/init.d/bridging /etc/rcS.d/S99bridging
- Soit vous désirez la démarrer quand bon vous semble et à ce moment là il vous suffit de taper la commande suivante au moment fatidique :
sudo sh /etc/init.d/bridging
- Soit vous adaptez le script pour qu'il soit démarré par virtualbox lors du démarrage de la machine Virtuelle. Pour cette solution, libre court à votre imagination…
Une fois cela fait, démarrez dans les 2 premiers cas le script pour la première fois en tapant :
sudo sh /etc/init.d/bridging
Et testez votre réseau dans votre machine Virtuelle. Amusez-vous bien.
Liens et sources
- 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.