structure & meta
This commit is contained in:
parent
da6d838193
commit
b25ce65735
284 changed files with 461 additions and 1000 deletions
101
posts/2015/2015-12-21-advanced-virtualbox.md
Executable file
101
posts/2015/2015-12-21-advanced-virtualbox.md
Executable file
|
|
@ -0,0 +1,101 @@
|
|||
<!-- 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 :-)
|
||||
Loading…
Add table
Add a link
Reference in a new issue