101 lines
4.7 KiB
Markdown
Executable file
101 lines
4.7 KiB
Markdown
Executable file
<!-- title: Quelques astuces pour VirtualBox -->
|
|
<!-- category: Virtualisation -->
|
|
<!-- tag: planet -->
|
|
|
|
VirtualBox est un produit de virtualisation porté par Oracle qui a l'avantage
|
|
d'être multi-plateforme (Ms Windows, OS/X, GNU/Linux)<!-- more --> et qui est orienté
|
|
*Desktop*, destiné à s'installer sur une machine de bureau (par opposition à un
|
|
hyperviseur dédié à la virtualisation). Le client cible de VirtualBox c'est
|
|
l'utilisateur lambda qui a besoin de tester occasionnellement une distribution,
|
|
l'utilisateur professionnel de GNU/linux (félicitations tu fais partie des 1%)
|
|
qui a besoin régulièrement d'une machine virtuelle Ms Windows pour certaines
|
|
applications (comme Ms Office), le développeur ou le testeur de logiciel qui
|
|
utilise intensivement la virtualisation pour déployer des environnements de
|
|
test. J'appartiens aux trois catégories. Je ne vais pas détailler la création
|
|
d'une machine virtuelle mais quelques astuces utiles, fruit de mon expérience
|
|
... bon ok de mes galères :-)
|
|
|
|
Dans le cadre professionnel, j'ai une machine virtuelle Ms Windows qui me sert
|
|
à éditer et créer des documents Office. Pour éviter de dupliquer les documents,
|
|
j'avais créé un partage Samba entre ma machine hôte et la machine virtuelle.
|
|
J'étais fier de moi, cela fonctionnait bien... jusqu'à que j'essaie d'accéder à
|
|
mes documents dans le TGV. La machine virtuelle était configurée en mode pont
|
|
(*bridge*) sur l'interface Ethernet et Ms Windows configuré en IP fixe sur le
|
|
réseau d'entreprise. L'interface Ethernet de la machine hôte étant KO, le
|
|
partage Samba n'était pas accessible par la VM.
|
|
|
|
Une solution consiste à utiliser la fonctionnalité "Dossiers partagés" de
|
|
VirtualBox. Au niveau de la configuration de la VM, les dossiers partagés
|
|
permettent de créer un partage Ms Windows qui pointe sur un répertoire du hôte
|
|
et qui sera accessible quelle que soit la configuration réseau de l'hôte ou de
|
|
la VM : réseau configuré en mode pont ou en NAT, que le réseau soit accessible
|
|
ou non.
|
|
|
|
**Configuration des dossiers partagés dans VirtualBox :**
|
|
|
|

|
|
|
|
**Navigation du partage depuis la VM Ms Windows :**
|
|
|
|

|
|
|
|
Quand je déploie des VMs sur mon poste de développement pour des tests, je
|
|
configure le réseau de la machine virtuelle en mode NAT pour ne pas consommer
|
|
d'adresse IP du réseau d'entreprise et je configure le système d'exploitation
|
|
virtualisé (généralement un Linux) en DHCP. Dans cette configuration, c'est
|
|
VirtualBox qui attribue une adresse IP dynamique à la VM sur un réseau NAT
|
|
partagé entre le hôte et ses VMs. Du coup, la VM a accès au hôte, à son réseau
|
|
local du hôte (et même à Internet) mais elle est *invisible* pour les autres
|
|
machines du réseau local. L'avantage de cette configuration c'est qu'elle
|
|
fonctionne si la machine hôte n'a pas de réseau : la machine hôte et la VM
|
|
peuvent toujours communiquer. Pour que le hôte puisse se connecter à un service
|
|
de la VM, il faut configurer la redirection de port avec VirtualBox, c'est à
|
|
dire lier un port local de la machine hôte à un port de la VM. Par exemple, on
|
|
peut définir qu'on veut accéder à la VM en SSH en liant le port 2222 au port 22.
|
|
|
|

|
|
|
|
Ainsi un *ssh -p 2222 user@localhost* se connecte à la VM et on peut copier des
|
|
fichiers par le même biais avec *scp*. La redirection du port Web (80) de la VM
|
|
vers le port 8080 de la machine hôte permet d'accéder à une éventuelle
|
|
application Web de la VM. Cela posera peut-être des soucis car cette application
|
|
ignore le NAT et elle risque de construire des liens vers des ressouces sur le
|
|
port 80 alors qu'on l'attaque sur le port 8080. Un moyen de contourner ce
|
|
problème si l'application n'est pas configurable, consiste à installer un NginX
|
|
sur la machine hôte pour faire office de proxy.
|
|
|
|
```nginx
|
|
# Proxy
|
|
|
|
upstream vbox-vm {
|
|
server 127.0.0.1:8080;
|
|
}
|
|
|
|
##
|
|
# Virtual Host Config
|
|
##
|
|
|
|
server {
|
|
listen 80 default_server;
|
|
listen [::]:80 default_server;
|
|
|
|
root /var/www/html;
|
|
|
|
# Add index.php to the list if you are using PHP
|
|
index index.html index.htm index.nginx-debian.html;
|
|
|
|
server_name _;
|
|
|
|
location / {
|
|
proxy_pass http://vbox-vm;
|
|
}
|
|
|
|
}
|
|
```
|
|
|
|
Ainsi, on peut attaquer le port HTTP de la machine locale et avoir ses requêtes
|
|
redirigées vers le port HTTP de la VM. On n'a plus de changement de port donc
|
|
les liens sont valides.
|
|
|
|
Ces deux astuces me permettent de travailler avec mes VMs sur mon laptop de
|
|
développement en mode déconnecté. Si vous en avez d'autres je suis preneur :-)
|