3 votes

Serveur http simple Python et machines virtuelles - impossible de se connecter. Ip changé ?

J'utilise parfois python -m SimpleHTTPServer une doublure pour servir les fichiers de mes vms à télécharger sur mon hôte. Aujourd'hui j'ai essayé de l'utiliser à l'intérieur d'une vm virtualbox qui est sous NAT - j'ai tapé ce one liner Python dans la console, puis j'ai vérifié l'ip de ma vm dans le knetworkmanager (j'utilise debian avec kde sur mon invité), puis sur l'hôte j'ai essayé de me connecter à cette ip sur le port 8000 mais je n'arrive pas à me connecter...

Mes invités sont souvent mis en pause, sauvegardés, etc... peut-être que l'ip devrait changer mais quelque chose s'est mal passé parce que l'invité a été sauvegardé puis restauré ? Que faire dans ce cas ?

J'utilise debian linux guest et debian linux host.

1voto

chrw Points 1021

Pour obtenir la redirection du port, essayez ce qui suit

VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/HostPort" 8080
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/GuestPort" 8000
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/Protocol" TCP

Cette configuration fonctionne pour les cartes réseau virtuelles d'Intel. Pour le PCnet, essayez pcnet au lieu de e1000 . Je suppose que le port de la machine virtuelle est 8000. N'oubliez pas de modifier NAME_OF_VM au nom de votre machine virtuelle !

Ensuite, vous pouvez accéder au serveur web sur le système hôte via http://localhost:8080/ qui sera redirigée vers la machine virtuelle avec le port 8000.

Vous pouvez vérifier la configuration avec VBoxManage getextradata "NAME_OF_VM" enumerate . Pour supprimer la configuration, tapez la commande sans les valeurs.

VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/HostPort"
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/GuestPort"
VBoxManage setextradata "NAME_OF_VM" "VBoxInternal/Devices/e1000/0/LUN#0/Config/pythonhttp/Protocol"

0voto

drAlberT Points 10812

Si vos serveurs virtuels sont NATés, ils ont une IP virtuelle dans un réseau privé (plage d'IP RFC1918), ils ne sont donc pas routables et accessibles de l'extérieur.

Pour qu'une machine soumise à la NAT soit accessible de l'extérieur, il faut mettre en place un PORT REDIRECT sur la passerelle virtuelle, qui redirige une requête sur un port donné vers l'IP virtuelle sur le port donné ou sur un autre port.

Il ne s'agit pas d'un problème lié à la virtualisation, c'est le fonctionnement du NAT. Par conséquent, tout guide sur le sujet que vous trouverez sur le web s'appliquera.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X