Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

Tag - machine virtuelle

Fil des billets - Fil des commentaires

jeudi 27 avril 2017

Machine Virtuelle, réseau NAT et redirection de ports

Quand on crée une machine virtuelle avec VirtualBox, le réseau créé par défaut est de type NAT.

Avec le réseau NAT, dans lequel aucune configuration n'est nécessaire, on peut naviguer sur Internet, lire les mails et de manière générale les applications de la machine virtuelle ont accès au réseau.

Dans ce mode réseau, le moteur réseau de VirtualBox agit comme un routeur qui dirige le traffic depuis et vers la machine virtuelle sans configuration de votre part. Chaque machine virtuelle a certes accès au réseau mais pas aux autres machines virtuelles ni à la machine hôte. La machine virtuelle en mode NAT est donc comme dans un réseau privé, connectée au réseau mais invisible de l'extérieur, y compris de sa machine hôte.

On peut s'en convaincre facilement avec la commande ping depuis la machine virtuelle vers la machine hôte et inversement: la VM voit la machine hôte mais l'inverse n'est pas vrai.

Mais alors, si la machine hôte ne voit pas la machine virtuelle, comment faire par exemple pour se connecter en ssh à la machine virtuelle depuis la machine hôte ? De la même façon qu'avec un routeur: en utilisant la redirection de ports.

On va donc configurer le moteur réseau de VirtualBox pour que les connexions sur le port 2222 de la machine hôte soient redirigées sur le port 22 de la machine virtuelle comme ceci:

Capture-Regles_de_redirection_de_ports-1.png

Il ne me reste plus qu'à me connecter à la machine virtuelle comme ceci:

ssh -p 2222 debian@192.168.0.1

Vous noterez que j'ai choisi un port d'écoute d'une valeur supérieure à 1024 (2222) puisque le moteur de VirtualBox se met à l'écoute sur la machine hôte sans avoir les droits administrateurs. Utiliser un port inférieur à 1024 aurait échoué.

Si maintenant je souhaite accéder à un serveur Web démarré sur la machine virtuelle, il faut effectuer une deuxième redirection de port, et ainsi de suite.

dimanche 19 mars 2017

Transmettre une variable d'environnement à une connexion ssh

J'ai besoin pour faire des tests de connaitre l'adresse IP de l'hôte qui héberge une machine virtuelle.

Comme je me connecte à cette machine virtuelle par ssh, je vais lui transmettre cette adresse IP via une variable d'environnement.

Pour cela, j'ai besoin de spécifier le nom de la variable d'environnement coté hôte. On l'appelera HOST_IP.

Cela peut se faire de deux façons:

Dans le fichier /etc/ssh/ssh_config via la directive:

SendEnv HOST_IP

En fait on changera la ligne existante:

SendEnv LANG LC_*

en

SendEnv LANG LC_* HOST_IP

On peut aussi spécifier le nom de la variable sur la ligne de commande ssh:

ssh -o SendEnv=HOST_IP user@machine...

Pour que cela fonctionne, il faut maintenant que la machine virtuelle accepte cette variable d'environnement.

Pour cela on changera dans le fichier /etc/ssh/sshd_config de la VM la ligne:

AcceptEnv LANG LC_*

en

AcceptEnv LANG LC_* HOST_IP

Et on redémarre le serveur ssh.