Avant-propos▲
Tout d'abord, sachez que le produit décrit dans cet article n'était pas encore une version stable au moment où j'ai écrit ces lignes, et qu'il conviendrait de ne pas utiliser ce logiciel à d'autres fins que du prototypage.
Qu'est-ce que la virtualisation ?
Les systèmes d'exploitation sont nés de la volonté d'abstraire le matériel, et de fournir une interface (standard ou spécifique au système) qui permettent aux utilisateurs de ne pas se soucier des détails très bas niveau comme les transferts de données entre le disque dur, la mémoire vive et les mémoires caches du (ou des) processeur(s).
Malheureusement, l'histoire nous a appris que les systèmes d'exploitation étaient la plupart du temps incompatibles entre eux, ce qui a rendu de plus en plus les développeurs dépendants de leurs systèmes, tout comme ils l'étaient autrefois du matériel utilisé. Une idée a alors germé afin d'effectuer cette même abstraction au niveau des systèmes d'exploitation. Cela a donné naissance aux machines virtuelles de certains langages et aux différents émulateurs (le projet Wine en est un exemple très abouti).
Malheureusement, les émulateurs, qui servent à faire fonctionner un programme compilé pour une autre plate-forme sur le système d'un utilisateur lambda, étaient encore insuffisants pour permettre à un développeur de ne pas se soucier du système d'exploitation. C'est pourquoi des solutions plus radicales sont arrivées afin de faire fonctionner virtuellement un autre système d'exploitation dans son intégralité sur la plate-forme courante. Ainsi sont nés les virtualiseurs (comme Xen, VMware, VirtualBox et VirtualPC).
En fait, il existe aussi des émulateurs pour systèmes d'exploitation (comme Qemu), mais je ne souhaite pas entrer trop dans le détail pour un article orienté débutant…
I. Installation▲
I-A. Prérequis▲
Avant de commencer l'installation de VMware, il faut d'abord vérifier que votre système possède : gcc et les entêtes pour votre noyau.
# aptitude search gcc
...
p gcc ...
...
# aptitude install gcc
# uname -a
Linux anasys 2.6.18-6-686-bigmem #1 SMP Sat May 24 11:34:15 UTC 2008 i686 GNU/Linux
# aptitude search linux-headers
...
p linux-headers-2.6.18-6 - Common header files for Linux 2.6.18
p linux-headers-2.6.18-6-486 - Header files for Linux 2.6.18 on x86
p linux-headers-2.6.18-6-686 - Header files for Linux 2.6.18 on PPro/Celeron/PII/PIII/P4
p linux-headers-2.6.18-6-686-bigmem - Header files for Linux 2.6.18 on PPro/Celeron/PII/PIII/P4
...
# aptitude install linux-headers-2.6.18-6-686-bigmem
Enfin, pensez à télécharger l'archive tar.gz de VMware.
I-B. Installation de VMware▲
Commencez par décompresser l'archive, puis lancez le script install.pl
# tar xzvf VMware-server-e.x.p-84186.i386.tar.gz
...
# cd vmware-server-distrib/
# ./install.pl
Maintenant, vous êtes guidé tout au long de l'installation :
Script started on lun 16 jun 2008 16:19:20 CEST
Creating a new VMware Server installer database using the tar4 format.
Installing VMware Server.
In which directory do you want to install the binary files?
[/usr/bin]
What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
[/etc]
What is the directory that contains the init scripts?
[/etc/init.d]
In which directory do you want to install the daemon files?
[/usr/sbin]
In which directory do you want to install the library files?
[/usr/lib/vmware]
The path "/usr/lib/vmware" does not exist currently. This program is going to
create it, including needed parent directories. Is this what you want?
[yes]
In which directory do you want to install the manual files?
[/usr/share/man]
In which directory do you want to install the documentation files?
[/usr/share/doc/vmware]
The path "/usr/share/doc/vmware" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
The installation of VMware Server e.x.p build-84186 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: "/usr/bin/vmware-uninstall.pl".
Before running VMware Server for the first time, you need to configure it by
invoking the following command: "/usr/bin/vmware-config.pl". Do you want this
program to invoke the command for you now? [yes]
Your host has IPv6 networking enabled. VMware Server Web Access may not
function correctly in this environment. We recommend that you disable IPv6 if
you experience problems with VMware Server. Please consult your distribution's
documentation for details on how to disable IPv6.
Making sure services for VMware Server are stopped.
Module vmmon not loaded
Stopping VMware autostart virtual machines:
Virtual machines failed
Stopping VMware management services:
VMware Virtual Infrastructure Web Access
VMware Server Host Agent failed
Stopping VMware services:
VMware Authentication Daemon done
Virtual machine monitor done
You must read and accept the End User License Agreement to continue.
Press enter to display it.
...
Do you accept? (yes/no) yes
Thank you.
None of the pre-built vmmon modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmmon module for
your system (you need to have a C compiler installed on your system)? [yes]
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include] /usr/src/linux-headers-2.6.18-6-686-bigmem/include/
Extracting the sources of the vmmon module.
Building the vmmon module.
Using 2.6.x kernel build system.
make: entrant dans le répertoire « /tmp/vmware-config0/vmmon-only »
make -C /usr/src/linux-headers-2.6.18-6-686-bigmem/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
CC [M] /tmp/vmware-config0/vmmon-only/linux/driver.o
CC [M] /tmp/vmware-config0/vmmon-only/linux/driverLog.o
CC [M] /tmp/vmware-config0/vmmon-only/linux/hostif.o
CC [M] /tmp/vmware-config0/vmmon-only/common/comport.o
CC [M] /tmp/vmware-config0/vmmon-only/common/cpuid.o
CC [M] /tmp/vmware-config0/vmmon-only/common/hashFunc.o
CC [M] /tmp/vmware-config0/vmmon-only/common/memtrack.o
CC [M] /tmp/vmware-config0/vmmon-only/common/phystrack.o
CC [M] /tmp/vmware-config0/vmmon-only/common/task.o
CC [M] /tmp/vmware-config0/vmmon-only/common/vmx86.o
CC [M] /tmp/vmware-config0/vmmon-only/vmcore/moduleloop.o
LD [M] /tmp/vmware-config0/vmmon-only/vmmon.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-config0/vmmon-only/vmmon.mod.o
LD [M] /tmp/vmware-config0/vmmon-only/vmmon.ko
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
cp -f vmmon.ko ./../vmmon.o
make: quittant le répertoire « /tmp/vmware-config0/vmmon-only »
The vmmon module loads perfectly into the running kernel.
None of the pre-built vmci modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmci module for
your system (you need to have a C compiler installed on your system)? [yes]
Extracting the sources of the vmci module.
Building the vmci module.
Using 2.6.x kernel build system.
make: entrant dans le répertoire « /tmp/vmware-config0/vmci-only »
make -C /usr/src/linux-headers-2.6.18-6-686-bigmem/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
CC [M] /tmp/vmware-config0/vmci-only/linux/driver.o
CC [M] /tmp/vmware-config0/vmci-only/linux/driverLog.o
CC [M] /tmp/vmware-config0/vmci-only/linux/vmciKernelIf.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciContext.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciDatagram.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciDriver.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciDs.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciGroup.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciHashtable.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciProcess.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciQueuePair.o
CC [M] /tmp/vmware-config0/vmci-only/common/vmciResource.o
LD [M] /tmp/vmware-config0/vmci-only/vmci.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-config0/vmci-only/vmci.mod.o
LD [M] /tmp/vmware-config0/vmci-only/vmci.ko
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
cp -f vmci.ko ./../vmci.o
make: quittant le répertoire « /tmp/vmware-config0/vmci-only »
The vmci module loads perfectly into the running kernel.
None of the pre-built vsock modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vsock module for
your system (you need to have a C compiler installed on your system)? [yes]
Extracting the sources of the vsock module.
Building the vsock module.
Using 2.6.x kernel build system.
make: entrant dans le répertoire « /tmp/vmware-config0/vsock-only »
make -C /usr/src/linux-headers-2.6.18-6-686-bigmem/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
CC [M] /tmp/vmware-config0/vsock-only/linux/af_vsock.o
CC [M] /tmp/vmware-config0/vsock-only/linux/driverLog.o
CC [M] /tmp/vmware-config0/vsock-only/linux/util.o
CC [M] /tmp/vmware-config0/vsock-only/linux/vsockAddr.o
LD [M] /tmp/vmware-config0/vsock-only/vsock.o
Building modules, stage 2.
MODPOST
WARNING: "VMCIDatagram_CreateHnd" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
WARNING: "VMCIDatagram_DestroyHnd" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
WARNING: "VMCI_GetContextID" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
WARNING: "VMCIDatagram_Send" [/tmp/vmware-config0/vsock-only/vsock.ko] undefined!
CC /tmp/vmware-config0/vsock-only/vsock.mod.o
LD [M] /tmp/vmware-config0/vsock-only/vsock.ko
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
cp -f vsock.ko ./../vsock.o
make: quittant le répertoire « /tmp/vmware-config0/vsock-only »
The vsock module loads perfectly into the running kernel.
À ce stade, VMware server est installé. Vous allez maintenant entamer la phase de configuration, avec les interfaces réseau. Il y en a trois types :
- Bridged (vmnet0) correspond à une sortie directe de la machine virtuelle sur l'interface réseau physique de la machine (eth0) ;
- NAT (vmnet8) correspond à une zone virtuelle (192.168.84.0/24) contenant les machines virtuelles, placées dans une DMZ virtuelle. Ainsi le système hébergeant VMware server servira de passerelle ;
- HostOnly (vmnet1) correspond à une zone virtuelle (192.168.140.0/24) contenant les machines virtuelles, placées dans une zone non accessible depuis l'extérieur. Ainsi le système hébergeant VMware server servira de passerelle, mais ne pourra qu'assurer des requêtes sortantes.
Do you want networking for your virtual machines? (yes/no/help) [yes]
Configuring a bridged network for vmnet0.
Please specify a name for this network.
[Bridged]
The following bridged networks have been defined:
. vmnet0 is bridged to eth0
All your ethernet interfaces are already bridged.
Do you want to be able to use NAT networking in your virtual machines? (yes/no)
[yes]
Configuring a NAT network for vmnet8.
Please specify a name for this network. [NAT]
Do you want this program to probe for an unused private subnet? (yes/no/help)
[yes]
Probing for an unused private subnet (this can take some time)...
The subnet 192.168.84.0/255.255.255.0 appears to be unused.
The following NAT networks have been defined:
. vmnet8 is a NAT network on private subnet 192.168.84.0.
Do you wish to configure another NAT network? (yes/no) [no]
Do you want to be able to use host-only networking in your virtual machines?
[yes]
Configuring a host-only network for vmnet1.
Please specify a name for this network.
[HostOnly]
Do you want this program to probe for an unused private subnet? (yes/no/help)
[yes]
Probing for an unused private subnet (this can take some time)...
The subnet 192.168.140.0/255.255.255.0 appears to be unused.
The following host-only networks have been defined:
. vmnet1 is a host-only network on private subnet 192.168.140.0.
Do you wish to configure another host-only network? (yes/no) [no]
Maintenant, VMware va compiler les derniers modules nécessaires.
None of the pre-built vmnet modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmnet module for
your system (you need to have a C compiler installed on your system)? [yes]
Extracting the sources of the vmnet module.
Building the vmnet module.
Using 2.6.x kernel build system.
make: entrant dans le répertoire « /tmp/vmware-config0/vmnet-only »
make -C /usr/src/linux-headers-2.6.18-6-686-bigmem/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
CC [M] /tmp/vmware-config0/vmnet-only/driver.o
CC [M] /tmp/vmware-config0/vmnet-only/hub.o
CC [M] /tmp/vmware-config0/vmnet-only/userif.o
CC [M] /tmp/vmware-config0/vmnet-only/netif.o
CC [M] /tmp/vmware-config0/vmnet-only/bridge.o
CC [M] /tmp/vmware-config0/vmnet-only/filter.o
CC [M] /tmp/vmware-config0/vmnet-only/procfs.o
CC [M] /tmp/vmware-config0/vmnet-only/smac_compat.o
CC [M] /tmp/vmware-config0/vmnet-only/smac.o
LD [M] /tmp/vmware-config0/vmnet-only/vmnet.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-config0/vmnet-only/vmnet.mod.o
LD [M] /tmp/vmware-config0/vmnet-only/vmnet.ko
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.18-6-686-bigmem »
cp -f vmnet.ko ./../vmnet.o
make: quittant le répertoire « /tmp/vmware-config0/vmnet-only »
The vmnet module loads perfectly into the running kernel.
Vous allez désormais devoir choisir les ports sur lesquels le serveur écoutera :
- vwmare-authdla utile pour les authentifications écoute sur le port 902 ;
- vmware-hostd utile pour la configuration des machines virtuelles écoute sur les ports 80 pour les connexions HTTP (mais dans mon cas j'ai pris 8080), 443 pour les connexions HTTPS (mais j'ai pris 8081), et 8307 ;
- webAccess utile pour l'exécution des applicatifs (J2EE) écoute sur les ports 8005, 8009 et 8308.
Please specify a port for remote connections to use [902]
Unable to find any instance of the super-server "inetd" or "xinetd". The
VMware Authentication Daemon will operate in standalone mode.
If you do have "inetd" or "xinetd" installed, make sure that inetd or xinetd is
running.
The configuration will continue, but you should re-run
/usr/bin/vmware-config.pl after you fix the super-server.
Hit enter to continue.
Generating SSL Server Certificate
Please specify a port for standard http connections to use [80] 8080
Please specify a port for secure http (https) connections to use [443] 8081
Ensuite, vous pouvez modifier l'emplacement des images des machines virtuelles…
In which directory do you want to keep your virtual machine files?
[/var/lib/vmware/Virtual Machines]
The path "/var/lib/vmware/Virtual Machines" does not exist currently. This
program is going to create it, including needed parent directories. Is this
what you want? [yes]
Enfin, il vous faudra insérer la clé d'installation du produit…
Please enter your 20-character serial number.
Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel: ENTREZ_VOTRE_CLE
Creating a new VMware VIX API installer database using the tar4 format.
Installing VMware VIX API.
In which directory do you want to install the VMware VIX API binary files?
[/usr/bin]
In which directory do you want to install the VMware VIX API library files?
[/usr/lib/vmware-vix/lib]
The path "/usr/lib/vmware-vix/lib" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
In which directory do you want to install the VMware VIX API document pages?
[/usr/share/doc/vmware-vix]
The path "/usr/share/doc/vmware-vix" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
The installation of VMware VIX API e.x.p build-84186 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: "/usr/bin/vmware-uninstall-vix.pl".
Enjoy,
--the VMware team
Starting VMware services:
Virtual machine monitor done
Virtual machine communication interface done
VM communication interface socket family: done
Virtual ethernet done
Bridged networking on /dev/vmnet0 done
Host-only networking on /dev/vmnet1 (background) done
DHCP server on /dev/vmnet1 done
Host-only networking on /dev/vmnet8 (background) done
DHCP server on /dev/vmnet8 done
NAT service on /dev/vmnet8 done
VMware Server Authentication Daemon (background) done
Starting VMware management services:
VMware Server Host Agent (background) done
VMware Virtual Infrastructure Web Access
Starting VMware autostart virtual machines:
Virtual machines done
The configuration of VMware Server e.x.p build-84186 for Linux for this running
kernel completed successfully.
Script done on lun 16 jun 2008 17:15:09 CEST
Maintenant votre VMware server est installé et prêt à l'emploi.
I-C. Accès à l'interface web de configuration via son serveur habituel▲
Étant donné que nous sommes sur un système GNU/Linux, j'ai pris l'option d'un serveur web Apache, en utilisant le module proxy_http.
<VirtualHost "www.domaine.com:443">
# ...
SSLProxyEngine
On
SSLProxyCACertificateFile
/etc/vmware/ssl/rui.crt
SSLProxyVerify
Require
SSLProxyVerifyDepth
0
ProxyRequests
Off
ProxyPreserveHost
On
ProxyPass
/ui/ https://localhost:8081/ui/
ProxyPassReverse
/ui/ https://localhost:8081/ui/
<Proxy https://localhost:8081/ui/*>
Order
deny
,allow
Allow
from
all
</Proxy>
</VirtualHost>
I-D. Mise à jour à partir d'une version précédente▲
Pour diverses raisons évidentes que je n'énumérerai pas ici, vous serez parfois amené à mettre à jour une version de VMware déjà installée sur votre système.
Étant donné que VMware n'est pas disponible via le système de paquetages de votre distribution préférée (dans notre cas, GNU/Linux Debian), il vous faudra procéder manuellement comme ce fut le cas pour l'installation. Fort heureusement, les concepteurs du logiciel ont prévu un script capable de désinstaller la version précédente de VMware sans toucher aux images des systèmes virtualisés que vous avez déjà créés.
Pour cela, commencez par arrêter normalement chaque OS virtualisé encore en fonctionnement via la console distante (dont nous détaillerons le fonctionnement dans la partie II).
Puis, éteignez l'application vmware-server.
# /etc/init.d/vmware stop
Ensuite, il suffit de lancer le script de désinstallation :
# vmware-uninstall.pl
Enfin, vous n'avez plus qu'à réinstaller la version que vous souhaitez utiliser, comme décrit dans la partie I-2.
Même si vous pensez ne pas être concerné dans l'immédiat par la mise à jour, sachez que les versions bêta et release core ont une date d'expiration qui vous obligera à mettre à jour votre application… donc si vous utilisez la version décrite dans notre tutoriel, vous serez bientôt contraint de le faire, tant que VMware Server 2 ne sera considéré comme stable par l'éditeur de logiciel.
II. Tâches d'administration courantes▲
Je vais maintenant vous donner quelques recettes prêtes à l'emploi afin d'effectuer quelques tâches courantes sur votre système. Je n'entrerai pas trop dans les détails, car cela serait contradictoire avec l'orientation « débutant » de mon tutoriel.
II-A. Installer votre premier OS virtualisé▲
II-A-1. Installer la console de prise de contrôle à distance▲
La méthode la plus simple pour disposer rapidement d'une console de prise de contrôle à distance pour votre OS virtualisé, est d'utiliser un plugin (ou une extension) spécialement conçu pour votre navigateur Web. D'après mes tests, vous en trouverez une pour Mozilla Firefox sous forme d'extension xpi, et une pour Microsoft Internet Explorer sous forme de plugin.
Allez dans l'onglet console de votre machine virtuelle au niveau de l'interface web d'administration, et lancez l'installation par un simple clic :)
II-A-2. Mise en place de l'OS virtualisé▲
Les concepteurs du logiciel vous ont prévu une jolie interface graphique avec des menus à remplir… il suffit de suivre le guide.
Tout d'abord, commencez par lancer l'assistant de création d'une nouvelle machine virtuelle.
Puis effectuez les étapes suivantes :
- Nommez la machine virtuelle ;
- Sélectionnez le type de système d'exploitation à installer ;
- Définissez la taille de la mémoire vive et les caractéristiques du (ou des) processeur(s) ;
- Créez un disque dur virtuel qui hébergera la machine virtuelle ;
- Définissez les propriétés du disque dur créé précédent ;
- Ajoutez une éventuelle carte réseau et configurez-la ;
- Ajoutez un éventuel lecteur optique (CD ou DVD) et configurez-le ;
- Ajoutez un éventuel lecteur de disquette et configurez-le (nous n'avons plus vraiment besoin avec les OS modernes) ;
- Ajoutez un éventuel contrôleur USB et configurez-le ;
- Validez la création de la machine virtuelle qui vient d'être configurée via l'assistant.
II-B. Reconfigurer les interfaces réseau virtuelles▲
Tout d'abord, vous pouvez vouloir changer la configuration de la zone nommée HostOnly, qui accède au réseau via l'interface virtuelle vmnet1.
Pour cela éditer le fichier /etc/vmware/config, et modifier les lignes suivantes :
vmnet1.hostonlyaddress="192.168.180.1"
vmnet1.hostonlynetmask="255.255.255.0"
Ensuite, vous pouvez vouloir changer la configuration de la zone nommée NAT, qui accède au réseau via l'interface virtuelle vmnet8.
Pour cela éditer le fichier /etc/vmware/locations, et modifier les lignes suivantes :
answer VMNET_8_HOSTONLY_HOSTADDR 192.168.104.1
answer VMNET_8_HOSTONLY_SUBNET 192.168.104.0
Enfin, sachez que chacune de ses interfaces fournit un service DHCP afin de doter automatiquement les machines virtuelles d'une adresse IP. Si vous souhaitez reconfigurer ce service pour l'interface vmnetX, éditez le fichier /etc/vmware/vmnetX/dhcpd/dhcpd.conf.
Si vous souhaitez qu'un OS virtualisé bénéficie d'une IP fixe, vous n'êtes pas forcé de le faire au niveau du serveur DHCP… il suffit de lui attribuer une adresse IP en configuration statique et qui ne soit pas dans la plage des adresses attribuables par le serveur DHCP.
II-C. Mise en place de passerelle entre la zone NAT et le monde extérieur▲
Si vous souhaitez pouvoir contrôler via les outils du serveur réel tout ce qui est translaté, il vous est conseillé de passer par un proxy… par exemple, le serveur web Apache est capable de le faire pour les protocoles HTTP(S) ou FTP(S), voire plus ;)
<VirtualHost "www.domaine.com:443">
# ...
SSLProxyEngine
On
SSLProxyCACertificateFile
/etc/vmware/ssl/rui.crt
SSLProxyVerify
Require
SSLProxyVerifyDepth
0
ProxyRequests
Off
ProxyPreserveHost
On
ProxyPass
/vm-directory/ https://ip_vm/directory/
ProxyPassReverse
/vm-directory/ https://ip_vm/directory/
<Proxy https://ip_vm/directory/*>
Order
deny
,allow
Allow
from
all
</Proxy>
</VirtualHost>
Si vous souhaitez nater directement, vous pouvez utiliser iptables. Dans l'exemple suivant, nous allons translater le port 80 d'une machine virtuelle vers le port 800 de la machine réelle.
#! /bin/sh
IPTABLES
=
/sbin/iptables
IP_VM_A_NATER
=
192
.168
.104
.128
IP_VMNET8
=
192
.168
.104
.1
# purger iptables
$IPTABLES
-F
$IPTABLES
-t nat -F
$IPTABLES
-t mangle -F
$IPTABLES
-X
$IPTABLES
-t nat -X
$IPTABLES
-t mangle -X
echo 0
>
/proc/sys/net/ipv4/ip_forward
if
[ $#
-lt 1
] ||
[ $1
=
"start"
] ||
[ $1
=
"restart"
]
then
echo "nat virtualhost"
$IPTABLES
-t nat -À PREROUTING -p tcp -i eth0 --dport 800
-j DNAT --to-destination ${IP_VM_A_NATER}
:80
$IPTABLES
-t nat -À POSTROUTING -j SNAT -o vmnet8 --to-source ${IP_VMNET8}
echo 1
>
/proc/sys/net/ipv4/ip_forward
fi
II-D. Trucs et Astuces▲
II-D-1. Migrer des systèmes virtualisés sur un autre serveur▲
Il vous suffit de sauver l'image blabla.vmx située dans le répertoire /var/lib/vmware/Virtual Machines/, et de le copier dans le répertoire de votre autre serveur.
Puis, il faut l'ajouter dans la liste des systèmes connus via l'interface de configuration web. Menu « Virtual Machines » -> « Add Virtual Machine to Inventory » -> sélectionnez le type -> sélectionnez le fichier blabla.vmx
II-D-2. Impossible de redémarrer une machine virtuelle après un arrêt brutal du serveur▲
Vous l'ignorez peut-être, mais VMware Server utilise des verrous qui lui permettent de ne pas écrire simultanément depuis deux machines virtuelles sur le même fichier image (disque dur virtuel). Alors qu'il est censé les supprimer à l'arrêt de la machine virtuelle, du démon vmware ou du serveur, il arrive que suite à un arrêt brutal ces fichiers soient encore présents et interdisent le redémarrage.
Pour réparer cela, il vous suffit de vous placer dans le répertoire /var/lib/vmware/Virtual Machines/ma_machine_virtuelle/ et de détruire les répertoires *.lck
III. Remerciements▲
Un grand merci à chaval, CedrX pour leurs commentaires et à ram-0000 pour la correction orthographique.