Virtualbox «transfert de port» de l'invité à l'hôte [fermé]

162

Voici ma configuration:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

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

- go to the browser, type http://localhost:8000

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

Carmen
la source
1
J'ai eu 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.
Nicholas Shanks
149
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 la réouverture.
sparecycle
1
1. Accédez à la VM 2. ifconfig (obtenir l'adresse IP locale - devrait être 10.0.2.X) 3. ssh 10.0.2.2 pour accéder à la machine hôte
Mark Roberts
@deeperDATA Cela peut être dans le cadre du travail d'un développeur Web, mais le débordement de pile n'est pas destiné à encapsuler chaque partie du travail. Le fait que ses exigences couvrent plusieurs sites d'échange de piles témoigne de la complexité de notre profession.
Kevin Lawrence
1
Il m'a fallu beaucoup de temps pour le faire fonctionner. Notre problème était la liaison ip de l'application dans le système invité, elle était liée au nom de la machine, ce qui signifie 127.0.1.1 dans ubuntu. Nous avons changé la liaison en 0.0.0.0. Paramètres de transfert de port: IP hôte = IP hôte DNS, port hôte = 8080, IP invité = IP de eth0, port invité = 8080.
lent

Réponses:

222

Hôte de communication réseau -> Invité

Connectez-vous à l'invité et découvrez 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

Accédez à la fenêtre d'instance Vbox -> Menu -> Adaptateurs réseau:

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

Accédez au système hôte et essayez-le dans le navigateur:

http://127.0.0.1:8000

ou votre adresse IP réseau (découvrez 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 retourne sur le LAN vers l'hôte.

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

ipconfig

exemple de résultat:

IP Address. . . . . . . . . . . . : 192.168.5.1

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

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...
Robert Lujo
la source
11
les deux ports ne seront pas 8000. Le port hôte sera 8000 ou ce que vous voulez, mais le port invité devrait être 80
Yasin
5
Dans ce cas, passer de la VM à l'hôte devrait être possible en accédant à la VM et en obtenant l'adresse IP ITS (10.0.2.15 comme ci-dessous). Pour accéder à la machine hôte à partir de la VM, l'IP est 10.0.2.2 (par convention).
Mark Roberts
5
Si vous utilisez NAT pour l'invité ... Si le service qui s'exécute sur l'hôte est lié uniquement à 127.0.0.1, alors l'invité ne peut pas utiliser l'adresse IP publique de l'hôte pour se connecter à ce service (exemple service: privoxy). Au lieu de cela, vous devez utiliser 10.0.2.2 comme mentionné par Mark, ou tout ce que 'route -n' (exécuté sur l'invité) montre comme passerelle par défaut.
desm
4
Dans le cas de CentOS, il se peut que nous devions désactiver le pare - feu ou modifier des règles spécifiques dans l'iptable
Reddy
2
J'ai constaté qu'il n'est pas nécessaire de spécifier les adresses IP d'hôte ou d'invité, et vous pouvez simplement laisser les cases vides. Bien que si vous ne souhaitez vous connecter qu'à partir de localhost, c'est probablement une bonne idée de mettre 127.0.0.1 comme hôte.
mwfearnley
14

Ce n'est pas possible. localhosttoujours par défaut sur le périphérique de bouclage sur le système d'exploitation local.
Comme votre machine virtuelle exécute son propre système d'exploitation, elle possède son propre périphérique de bouclage auquel vous ne pouvez pas accéder de l'extérieur.

Si vous souhaitez y accéder, par exemple dans un navigateur, connectez-vous plutôt en utilisant l'adresse IP locale:

http://192.168.180.1:8000

Ceci est juste un exemple bien sûr, vous pouvez trouver l'adresse IP réelle en émettant une ifconfigcommande sur un shell dans le système d'exploitation invité.

Chris
la source
J'ai essayé cela aussi, mais je n'ai pas fonctionné à la fois pour NAT et bridge. Les journaux apache dans l'invité ne donnent aucune erreur et l'apache est opérationnel dans l'invité.
Carmen
Êtes-vous sûr d'utiliser la bonne adresse IP? Vous pouvez le vérifier en essayant d'accéder à l'adresse depuis l' intérieur de la machine virtuelle. Si cela échoue, vous utilisez une adresse IP erronée ou votre apache n'est pas configuré pour écouter sur le port 8080.
Chris
A travaillé pour moi - merci!
Matt Frear
A travaillé pour moi aussi. Avant de remplacer "localhost" par l'adresse IP du système d'exploitation hôte, j'ai toujours eu "Serveur refusé votre clé" et "Accès refusé" sans explication dans /var/log/auth.log malgré LogLevel DEBUG3 dans / etc / ssh / sshd_config
VR
@Chris cela signifie-t-il que sur l'hôte, avec des entrées d'hôte virtuel comme mysite.localhostne seront pas accessibles à la machine invité, car je dois faire référence à l'hôte en utilisant une adresse IP uniquement?
danjah