175 votes

Virtualbox "transfert de port" de l'invité vers l'hôte

Voici ma configuration:

- Hôte : Windows XP
- Invité : Ubuntu 10.04
- Réseau : NAT

Je configure un serveur web Apache sur l'invité, mais je veux pouvoir le faire sur la machine Windows :

- aller sur le navigateur, taper http://localhost:8000

De plus, j'ai essayé de changer mon réseau en pont et j'ai eu une nouvelle adresse IP. Mais quand j'ai essayé d'aller sur http://:8000, cela indique qu'il ne pouvait pas se connecter.

1 votes

J'avais le même problème. Il s'est avéré que le système d'exploitation invité avait un pare-feu actif qui bloquait le port 80.

164 votes

En tant que développeur web qui utilise VirtualBox dans le cadre de mon flux de travail quotidien, je ne suis pas d'accord avec le fait que cela soit marqué comme hors sujet. Veuillez envisager de le rouvrir.

1 votes

1. Aller à la VM 2. ifconfig (obtenir l'IP locale - devrait être 10.0.2.X) 3. ssh 10.0.2.2 pour accéder à la machine hôte

242voto

Robert Lujo Points 2743

Communication réseau Hôte -> Invité

Connectez-vous à l'Invité et trouvez l'adresse IP :

ifconfig 

exemple de résultat (l'adresse IP est 10.0.2.15) :

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

Allez à la fenêtre de l'instance Vbox -> Menu -> Adaptateurs réseau :

  • l'adaptateur doit être NAT
  • cliquez sur "redirection de port"
  • insérez un nouvel enregistrement (+ icône)
    • pour l'adresse IP hôte, saisissez 127.0.0.1, et pour l'adresse IP de l'invité que vous avez obtenu à l'étape précédente (dans mon cas c'est 10.0.2.15)
    • dans votre cas, le port est 8000 - mettez-le sur les deux, mais vous pouvez modifier le port hôte si vous le préférez

Allez sur le système hôte et essayez-le dans le navigateur :

http://127.0.0.1:8000

ou votre adresse IP réseau (trouvez-la sur la machine hôte en exécutant : ipconfig).

Communication réseau Invité -> Hôte

Dans ce cas, la redirection de port n'est pas nécessaire, la communication se fait via le réseau local jusqu'à l'hôte.

Sur la machine hôte - trouvez votre adresse IP réseau :

ipconfig

exemple de résultat :

Adresse IP. . . . . . . . . . . . : 192.168.5.1

Sur la machine invité, vous pouvez communiquer directement avec l'hôte, par exemple vérifiez-le avec un ping :

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) octets de données.
64 octets de 192.168.5.1: icmp_seq=1 ttl=128 temps=2.30 ms
...

Problèmes de pare-feu ?

@Stranger a suggéré que dans certains cas, il serait nécessaire d'ouvrir le port utilisé (8000 ou tout autre) dans le pare-feu comme ceci (exemple pour le pare-feu ufw, je n'ai pas testé) :

sudo ufw allow 8000

11 votes

Les deux ports ne seront pas 8000. Le port hôte sera 8000 ou celui que vous voulez, mais le port invité doit être 80

1 votes

Il a fallu du temps, mais ça a fonctionné comme un charme! :) Merci camarade! :)

6 votes

Accéder de la machine virtuelle à l'hôte dans ce cas devrait être possible en allant à la machine virtuelle et en obtenant SON adresse IP (10.0.2.15 comme ci-dessous). Pour accéder à la machine hôte depuis la machine virtuelle, l'IP est 10.0.2.2 (par convention).

15voto

Chris Points 2147

Ce n'est pas possible. localhost se réfère toujours au dispositif de bouclage sur le système d'exploitation local.
Comme votre machine virtuelle exécute son propre système d'exploitation, elle a son propre dispositif de bouclage auquel vous ne pouvez pas accéder depuis l'extérieur.

Si vous souhaitez y accéder par exemple dans un navigateur, connectez-vous en utilisant l'IP locale à la place :

http://192.168.180.1:8000

Ceci n'est qu'un exemple bien sûr, vous pouvez trouver l'IP réelle en exécutant une commande ifconfig sur un shell dans le système d'exploitation invité.

0 votes

J'ai également essayé ceci, mais cela n'a pas fonctionné pour le NAT et le pont. Les journaux apache dans l'invité ne donnent aucune erreur et apache fonctionne dans l'invité.

0 votes

Êtes-vous sûr d'utiliser la bonne adresse IP? Vous pouvez le vérifier en essayant d'accéder à l'adresse de à l'intérieur de la machine virtuelle. Si cela échoue, vous utilisez soit une mauvaise IP, soit votre apache n'est pas configuré pour écouter sur le port 8080.

0 votes

A fonctionné pour moi - merci!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X