Le principe est simple, nous allons mapper des ports de notre Fedora 8 vers la machine virtuelle. Notre CentOS 5 virtualisée écoute sur les ports 22 pour le SSH et 80 pour le http. Ces ports sont déja utilisés sur ma machine hôte, il ne m'est donc pas possible de les mapper (VirtualBox dirait au démarrage que c'est impossible). Je choisis donc de mapper le port 2222 de ma Fedora vers le 22 de ma CentOS, et le 8080 vers le 80 de ma CentOS. Pour cela, j'utilise la commande VBoxManage fournie avec le package VirtualBox. En voici la syntaxe :

VBoxManage setextradata {nom guest} "VBoxInternal/Devices/pcnet/0/LUN#0/Config/{nom mapping}/HostPort" {port hôte}
VBoxManage setextradata {nom guest "VBoxInternal/Devices/pcnet/0/LUN#0/Config/{nom mapping}/GuestPort" {port guest}
VBoxManage setextradata {nom guest} "VBoxInternal/Devices/pcnet/0/LUN#0/Config/{nom mapping}/TCP" 0

  • {nom guest} est le nom de la machine virtualisée que vous avez donné. Pour moi ce sera CENTOS5
  • {nom mapping} est une chaine de caractères indiquant la nature du mapping. J'y mettrais le nom des protocoles utilisés, ssh et http
  • {port hôte} est le numéro de port hôte mappé, j'utiliserai 2222 puis 8080
  • {port guest} est le numéro de port guest cible, j'utiliserai 22 puis 80

Pour annuler un mapping, il faut retaper ces trois lignes (pour chaque mapping) sans le dernier argument.

Pour mon exemple, voila donc les 6 lignes que je dois taper en console :

pour le SSH :

VBoxManage setextradata CENTOS5 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
VBoxManage setextradata CENTOS5 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata CENTOS5 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/TCP" 0

pour le http :

VBoxManage setextradata CENTOS5 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort" 8080
VBoxManage setextradata CENTOS5 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80
VBoxManage setextradata CENTOS5 "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/TCP" 0

Il ne reste plus qu'à tester. Démarrons la machine virtualisée CENTOS5. Les services ssh et httpd doivent être lancés. Pour utiliser les mapping, il suffit simplement de se connecter en local au services voulus sur les ports mappés.

Pour le ssh, depuis la Fedora 8 vers la CentOS 5 :

[fabien@EPONYME ~]$ cat /etc/redhat-release
Fedora release 8 (Werewolf)
[fabien@EPONYME ~]$ ssh fabien@127.0.0.1 -p 2222
fabien@127.0.0.1's password:
Last login: Sun Nov 11 13:53:59 2007 from 10.0.2.2
[fabien@CENTOS ~]$ cat /etc/redhat-release
CentOS release 5 (Final)
[fabien@CENTOS ~]$

Vous êtes donc bien connecté sur votre machine vitualisée.

Pour le http, ca se passe en image :



Nottez que je précise dans la barre d'adresse le port 8080 pour la CentOS, et je ne précise rien pour Fedora puisque le port 80 est celui par défaut.

Cette démonstration est valable pour tout type de mapping, du moment qu'un service tourne derrière. Dans le cas où vous souhaiteriez y accéder depuis un autre poste du réseau, n'oubliez pas d'autoriser via la pare-feu le traffic sur les ports mappés de votre machine hôte.


Fabien