Adresser localhost à partir d'une machine virtuelle VirtualBox


786

J'ai un serveur de test / développement local (HTTP, bien sûr), à l'écoute du port 8000.

Je travaille sur Linux, donc pour tester la page sur Internet Explorer 6, 7, 8, etc. Je lance une machine virtuelle en utilisant VirtualBox; J'ai également besoin de voir à quoi cela ressemble sur Firefox dans un environnement Windows (les polices par exemple sont différentes).

Dans ma vraie machine, j'ouvre le site Web simplement en utilisant l'URL http://localhost:8000, comment puis-je adresser cet hôte local à partir de la machine virtuelle?

Pour le moment, ma solution consiste à utiliser l'adresse IP. De meilleures idées?


38
Je ne peux pas croire que ce soit toujours aussi fastidieux. J'utilise VB depuis des années et bien qu'il soit devenu plus facile, c'est toujours le principal obstacle, et les options de mise en réseau sont toujours difficiles à comprendre, et cela ne fonctionne toujours pas pour ce que la grande majorité des utilisateurs veulent pour l'utiliser. Des centaines de milliers de personnes utilisent probablement VB pour tester des sites (ou applications) sur différentes plates-formes sur l'hôte local. Il est ahurissant de penser combien de temps et d'agacement peuvent être épargnés en améliorant cet aspect particulier du logiciel.
Rolf

Voir aussi la même question sur superuser.com: superuser.com/questions/310697/…
Purplejacket

Réponses:


939

La recherche sur Google a révélé ceci: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Il suggère d'utiliser IP:, http://10.0.2.2et cela a fonctionné pour moi.

J'ai donc édité le fichier hosts C:\windows\system32\drivers\etc\hostset ajouté cette entrée:

10.0.2.2   outer

Si vous testez sur IE8, n'oubliez pas de mettre http://dans la barre d'adresse. Mettre directement l'ip ne fonctionnera pas.

Par exemple:

http://10.0.2.2:3000/

7
J'ai remarqué dans ipconfig (Windows dans VirtualBox) que le routeur par défaut pour ma VirtualBox est cette adresse IP ... donc cela a du sens pour moi.
benc

48
Afin de pouvoir enregistrer vos modifications dans le fichier hosts, lancez le Bloc-notes en cliquant dessus avec le bouton droit et en choisissant "Exécuter en tant qu'administrateur"
Noah Sussman

25
J'ai dû changer mon Attached toparamètre de réseau VirtualBox de Bridged Adapterà NATpour que cela fonctionne pour moi.
Troy Harvey

1
vous pouvez également le définir comme localhost 10.0.2.2 dans la configuration de la machine virtuelle pour vous assurer que les chemins absolus sont résolus correctement
Mario Peshev

5
Je dois accéder à localhostpas à 10.0.2.2cause d'une autorisation merdique qui veut que localhost soit l'adresse :(
Dominic

408

macOS

J'utilise Virtual Box sur macOS (anciennement OS X), j'utilise Virtual Box pour tester IE sur Windows, etc.

Accédez à IE dans Virtual Box et accédez localhostvia http://10.0.2.2pour localhostou http://10.0.2.2:3000pour localhost:3000.

J'ai gardé les paramètres réseau comme NAT, pas besoin de pont comme suggéré ci-dessus dans mon cas. Il n'est pas nécessaire de modifier les fichiers de configuration.


39
J'ai en fait dû ajouter "http: //" devant l'adresse IP pour que cela fonctionne (boîte IE8 / WinXP).
wrtsprt

8
Mais existe-t-il un moyen de mapper 10.0.2.2 vers localhost: 8888? J'ai localhost: 8888 comme URL d'accueil dans ma base de données. Aller à 10.0.2.2 en VB charge la page HTML, mais tous les liens se brisent car ils pointent vers localhost: 8888
Michael Giovanni Pumo

@MichaelGiovanniPumo à ma connaissance, vous ne pouvez pas mapper l'URL directement à un port spécifique. vous devez indiquer le port explicitement
Jonathan Lin

2
@JonathanLin Je l'ai résolu en mappant simplement 10.0.2.2 à localhost sur le fichier d'hôtes Win7 et cela fonctionnait avec le port: 8888 de toute façon, donc ça marche maintenant. Merci.
Michael Giovanni Pumo

Marvelous fonctionne, macOS Sierra version 10.12.5 et virtualbox v 5.1.22
Tabares

82

Pour activer cela sur OSX, j'ai dû faire ce qui suit:

  1. Arrêtez votre machine virtuelle.
  2. Cliquez VirtualBox Preferences -> Network -> Host-only Networks ->sur l'icône "+". Cliquez sur OK.
  3. Sélectionnez votre boîte et cliquez sur la "Settings" icon -> Network -> Adapter 2 ->liste déroulante "Attaché à:", sélectionnez "Adaptateur hôte uniquement" et votre réseau ( vboxnet0) devrait apparaître ci-dessous par défaut. Cliquez sur OK.
  4. Une fois que vous avez redémarré votre box, vous devriez pouvoir accéder à localhost sur http://10.0.2.2/

Vous pouvez vous y référer localhostet accéder à d'autres sites hébergés localement en ajoutant leurs références au fichier hosts ( C:\windows\system32\drivers\etc\hosts) comme suit:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost

4
Cette solution a fonctionné pour moi avec une petite modification: après avoir créé le nouvel adaptateur hôte uniquement (vboxnet0), modifiez l'adaptateur. Dans la fenêtre qui apparaît, accédez à l'onglet Adaptateur et copiez le IPv4 Address(par exemple 192.168.56.1). Ensuite, une fois que vous démarrez la machine virtuelle, ouvrez votre navigateur et accédez àhttp://192.168.56.1:3000
Robert

Fonctionne à la fois sur xp et windows 7
Sukeerthi Adiga

1
Malheureusement, je ne parviens pas à résoudre mes sous-domaines, j'ai suivi les étapes de la réponse acceptée ici pour vérifier que le fichier hosts fonctionne sur Win10 comme prévu: serverfault.com/questions/452268/… Des idées?
danjah

A travaillé sur la machine hôte MacOs High Serra et l'invité Windows 7
Kapitula Alexey

6
Je n'ai pas pu trouver l'option "Réseaux hébergés uniquement".
Jason Moore

56

Le réseau de votre machine virtuelle est probablement défini sur NAT. Si vous définissez votre réseau sur Bridged, vous devriez pouvoir accéder à votre machine hôte par son nom d'hôte. Par exemple, si votre nom d'hôte est «jsmith-Precision-7510» et que vous souhaitez ouvrir http: // localhost: 3000 / , vous pourrez afficher cette page sur http: // jsmith-Precision-7510: 3000 / .

Pour trouver votre nom d'hôte, ouvrez un terminal / une console, puis exécutez la commande hostname. Votre nom d'hôte sera affiché sur la ligne suivante.

Consultez la documentation VirtualBox pour obtenir des instructions sur la façon de définir vos paramètres de réseau sur Bridged.


hmm, pour une raison quelconque, le gui (sur ma machine) n'a pas cette option!
hasen

quelle version utilisez-vous? J'ai trouvé que sur Mac, certains des documents manuels de base sont complètement différents.
benc

J'adore cette solution. Notez que sur certains anciens Windows, vous ne pourrez pas utiliser à whatever.localmoins d'installer Bonjour.
Marc-André Lafortune

42

J'ai dû aller dans virtualbox et changer mes paramètres réseau en «NAT». Après cela, j'ai pu localhostexécuter sur ma machine hôte à partir de mon émulateur sur virtualbox viahttp://10.0.2.2:3000


Récemment (2019), j'ai téléchargé la machine virtuelle invitée Windows 7 IE10 de Microsoft (mon hôte est MacOS Sierra) et j'ai eu beaucoup de problèmes avec la configuration du réseau. Je l'ai donc finalement mis à la poubelle et téléchargé la machine virtuelle invitée Microsoft Windows 7 IE11. Ensuite, je l'ai mis en réseau «NAT» et j'ai pu toucher l'hôte local de l'hôte http://10.0.2.2exactement comme décrit ici par @Pytth.
Purplejacket

Ce devrait être la réponse acceptée.
lots0logs

35

Si vous avez un adaptateur attaché au NAT , de nos jours, c'est une solution meilleure et plus élégante pour définir la redirection de port vers les ports locaux.

Settings> Network> Adapter> Advanced>Port forwarding

Insérez simplement une nouvelle règle et définissez Host portet Guest portsur 80(pour http) ou 22(pour ssh), et ainsi de suite.

Ensuite, vous pouvez accéder à cette machine en entrant juste http://localhost

Vous pouvez également vouloir basculer NAT en mode transparent.


8
@Boris Ce que vous décrivez ici est comment passer de l'hôte au serveur invité (port). Mais la question portait sur l'inverse.
Petr Bodnár

Parce que sur un BT Home Hub, c'était la seule option qui fonctionnait pour moi
Hashim Akhtar

33

J'ai trouvé que cela 10.0.2.2:<port>fonctionne, mais seulement si le mode Promiscuous est correctement défini. Après avoir installé ma machine virtuelle, je suis allé dans Paramètres> Réseau> Adaptateur 1.

NAT est défini par défaut et la liste déroulante Mode de promiscuité est désactivée. Je suis passé de NAT à Bridged Adapter, qui a activé la liste déroulante Promiscuous Mode, puis j'ai changé la valeur de "Deny" en "Allow VMs". Je suis ensuite revenu au NAT, qui a de nouveau désactivé le mode Promiscuous, mais a conservé la nouvelle valeur.

Après seulement ce changement, j'ai pu lancer ma VM et voir mes machines hôtes localhost:<port>sur ma VM à 10.0.2.2:<port>.


1
J'utilise Windows 7 comme machine hôte et Windows 10 comme invité, enfin cette solution a fonctionné pour moi dans VirtualBox 4.3.30 r 10.16.10. Merci!
Micer

Je viens d'installer Windows 10 sur une boîte virtuelle et cela a fait l'affaire!
capitaine

Cela a également fonctionné pour moi en combinaison avec les instructions de spsaucier plus loin. J'ai suivi ses instructions, puis j'ai activé le mode Promiscuous - Activer tout
DyeA

31

Le fait de ne pas pouvoir rediriger les demandes vers l'hôte local de la machine virtuelle vers l'hôte local de l'hôte est désormais intégré à Windows ( https://tools.ietf.org/html/rfc6761#section-6.3 ), y compris les machines virtuelles disponibles sur https: //developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Pour des raisons de sécurité, Microsoft empêche désormais les entrées du fichier hôte de remplacer l'adresse de localhost par autre chose que l'adresse de bouclage :: 1. Donc, en ajoutant une ligne au fichier hôte de la machine virtuelle, comme

10.0.2.2 localhost

sera ignoré.

Il existe deux façons (à ma connaissance) de contourner cela:

1) utilisez NETSH pour porter le proxy vers l'hôte

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(où 10.0.2.2 est la passerelle par défaut sur la machine virtuelle et 8000 est le port que vous souhaitez résoudre sur l'hôte.)

2) Configurez IIS pour effectuer le routage des demandes d'application, puis réécrivez les demandes pour localhost: port sur l'hôte IP: port

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing


7
J'ai utilisé l'approche NETSH. travaillé comme un charme. C'est l'OMI la meilleure réponse.
Liang Zhou

1
J'ai également utilisé NETSH, travaillé comme par magie. C'est aussi ma meilleure réponse. C'est le seul qui a fonctionné
Van_Paitin

netshc'est ce qui m'a aidé, j'ai essayé tout ce que j'ai trouvé sur le net, mais sans succès. Cela permettra d'accéder <protocol>://localhost:<port>, au lieu d'accéder directement par IP. Cela devrait être la réponse acceptée pour Windows 10.
Octavian Lari

Cela devrait être la réponse acceptée, car elle est pertinente et a celle qui fonctionne actuellement
IAmJulianAcosta

26

MacOS

Si vous souhaitez configurer un environnement Windows avec Virtualbox sur un Mac, utilisez simplement les paramètres NAT par défaut sur l'adaptateur, et dans votre machine virtuelle Windows, accédez au fichier hosts et ajoutez les éléments suivants:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

Contrairement aux réponses ci-dessus, il est important d'inclure les deux lignes, sinon cela ne fonctionnera pas.


6
Cela fonctionne très bien avec les images modern.ie pour le débogage ie / edge sur Mac, c'est ainsi que je suis arrivé à cette question. Il existe une exception: Windows 10. Windows 10 n'autorise pas la modification du domaine localhost via le fichier hosts (folie). La solution de contournement consiste à activer IIS et à configurer un proxy inverse via celui-ci, en effectuant la même chose dans de nombreuses autres étapes: developer.microsoft. com / fr-fr / microsoft-edge / plateforme / issues /…
MaxPRafferty

@MaxPRafferty Avez-vous pu faire fonctionner cela? J'ai parcouru tout le reste sur ce fil en vain. J'ai mis à jour mon fichier hôte comme cette réponse le suggère et j'ai suivi les étapes de ce lien. C'était un peu ambigu quant à savoir où déclarer 10.0.2.2 à l'étape 7. Où cela va-t-il dans la règle? Je suis maintenant sans relâche direct à la page IIS sur mon Windows VM Localhost
David Weber

@DavidWeber oui, je l'étais - j'ai effectivement déposé ce bug, donc j'ai toujours cette image disponible. 10.0.2.2 doit aller dans l '"URL d'action", répertoriée comme "URL de réécriture" dans l'écran d'édition: page de réécriture principale: user-images.githubusercontent.com/1894398/… , user-images.githubusercontent.com/1894398/ … Modifier la page des règles: user-images.githubusercontent.com/1894398/…
MaxPRafferty

@MaxPRafferty Merci pour l'aide et les liens. Je n'arrive toujours pas à faire fonctionner cela. Une telle chose simple et je ne sais pas où est le problème maintenant. J'ai suivi cela jusqu'au «t» et toujours rien, même lors de la tentative de chacune des autres suggestions de type de réseau. On dirait que je pourrais aussi bien acheter un PC à ce stade.
David Weber

3
Je ne pense pas que cela fonctionne plus maintenant que les nouvelles versions de Windows résolvent localhost avec leur DNS. Je ne pense pas que 127.0.0.1 puisse être redirigé comme ça non plus (uniquement les noms d'hôtes).
kossmoboleat

22

Vous devez modifier votre fichier d'hôtes sur votre machine virtuelle Windows de la même manière que pour votre machine hôte locale:

C: \ WINDOWS \ system32 \ drivers \ etc \ hosts

Et liez vos hôtes virtuels à 10.0.2.2, si vous utilisez uniquement localhost, remplacez

127.0.0.1 localhost avec 10.0.2.2 localhost

Par exemple:

10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com

Cela indique à votre machine virtuelle de pointer vers votre machine locale pour ces noms de domaine.


Thx, cela a aidé dans mon cas (exécuter des sites Web locaux dans docker avec nginx) - l'accès à la direclty IP (10.0.2.2) donne juste une erreur nginx.
ggzone

22

Vous n'avez pas besoin de modifier le fichier d'hôtes ou toute configuration de Virtual Box. Conservez les paramètres dans NAT. Accédez à votre instance Windows et exécutez "cmd" ou ouvrez cmd.exe. Exécutez la commande "ipconfig" et obtenez l' adresse IP de la passerelle par défaut . Parcourir http://10.0.2.2:8080 sur Windows IE que vous verrez est le même que votre Mac Safari http: // localhost: 8080 / ou http://127.0.0.1:8080


1
Lorsqu'un serveur de développement local a des dépendances de développement liées à localhost. (par exemple, webpack-dev-server)
kube

c'est quoi 10.2.2.3 or .4? Je peux cingler .2aussi bien que ceux - VM est Windows Server fonctionnant sous Windows Server
ycomp

10

Une combinaison de quelques éléments a fini par faire fonctionner les choses de mon côté. Exécution d'un serveur flask sur macosx.

Dans ma machine virtuelle Windows, j'ai édité le fichier hosts:

  • Exécuter le bloc-notes en tant qu'administrateur
  • ouvert C:\windows\system32\drivers\etc\hosts
  • ajoutez cette entrée: 10.0.2.2 outer

Arrêtez VM et sur mon Mac dans VirtualBox:

  • Allez à VirtualBox > preferences > Network > Host-only Networks > +ajouter un réseauvboxnet1
  • Allez à My_VM > settings > Network > Adapter 1.
  • Sélectionnez Enable Network Adapteret réglez Attached to:sur Bridged Adapter.
  • Réglez ensuite Advanced > Promiscuous Mode:sur Allow VMs.
  • Cliquez sur OK
  • Allez à My_VM > settings > Network > Adapter 1.
  • Set Attached to:retour à NAT.

Ensuite, je suis allé à Adapter 2

  • Réglez Attached to:sur Host-only Adapteret sélectionnez le réseau ajouté précédent vboxnet1.

J'ai démarré mon serveur sur mon Mac, en cours d'exécution 127.0.0.1:5000et c'était désormais accessible sur mon VM àhttp://10.0.2.2:5000

Man quel cauchemar pour tester sur IE sur mac. Comment n'y a-t-il pas un moyen plus simple?


1
J'aimerais pouvoir voter contre cela mille fois. C'était la seule chose qui a fonctionné après avoir trouvé des méthodes plus simples telles que simplement éditer le fichier hosts et utiliser les paramètres NAT par défaut - aucun de ces messages n'a résolu mon problème. J'exécute MacOS Sierra avec une machine virtuelle d'IE11 sur Win81 de developer.microsoft.com/en-us/microsoft-edge/tools/vms au cas où ce combo aiderait quelqu'un d'autre ici.
Manu Kanthan

FWIW, j'ai essayé de restaurer tous ces paramètres, puis de supprimer VirtualBox et de réinstaller, de réimporter les machines virtuelles de Microsoft. J'ai démarré mon serveur rails avec rails s -b 127.0.0.1et y ai accédé à partir de toutes les machines virtuelles http://10.0.2.2:3000et cela a fonctionné. Je me demande si le changement de réglage par le haut a persisté d'une manière ou d'une autre même après avoir tout roulé.
Manu Kanthan

1
Ce n'était pas tout à fait la même chose pour moi, en particulier les étapes de l'adaptateur 2, j'ai dû utiliser le réglage de l'adaptateur Nat pour qu'il soit vboxnet1, mais cela a fini par fonctionner. Merci pour les indices!
jfunk

4

J'ai résolu en ajoutant une redirection de port dans les paramètres de Virtualbox sous réseau. Host IP set 127.0.0.1 port: 8080 IP invité: Donnez n'importe quelle IP pour le site Web (disons 10.0.2.5) port: 8080 Maintenant depuis l'accès à la machine invitée http://10.0.2.5:8080 en utilisant IE


3

Dans la boîte virtuelle, comme indiqué ci-dessus, vous pouvez ajouter ce fichier d'hôtes de ligne

10.0.2.2   outer

mais pour l'enregistrer, si vous n'avez pas d'administrateur directement dans votre machine virtuelle, déplacez simplement le fichier hosts sur le bureau, puis modifiez-le pour ajouter la ligne 10.0 .... externe, enregistrez le fichier et déplacez-le à son emplacement d'origine.


2

vérifiez si vous pouvez frapper votre machine parent avec: ipconfig (obtenez votre adresse IP)

ping <ip> ou telnet <ip> <port>

Si vous ne pouvez pas accéder au port, essayez d'ajouter une nouvelle règle entrante dans votre pare-feu parent autorisant les ports locaux.

J'ai pu accéder http://<ip>:<port>


2

Dans Virtual Box

  1. Configurez votre réseau sur Bridge networking
  2. Accédez au mode avancé de promiscuité: tout autoriser

Maintenant, le bit délicat est votre hôte local, si vous exécutez à partir de Node.js définissez l'adresse IP sur 0.0.0.0, puis recherchez votre propre adresse IP, par exemple cmd: ipconfig -> 10.0.1.3

Tapez cette adresse avec le numéro de port. Et ça marchera.


1

Étapes générales:

  • Un réseau commun (ajoutez un hôte uniquement ou un pont NIC)
  • configurer le service préféré pour écouter sur l'interface appropriée (interface connectée à la carte réseau partagée)
  • Utiliser IP: Port pour atteindre le service ciblé, utilisez une IP appartenant au réseau partagé.

0

Sur Windows avec un Windows 7 virtuel, la seule chose qui fonctionnait pour moi était d'utiliser NAT et la redirection de port (impossible de faire fonctionner une connexion pontée). J'ai trouvé un tutoriel ici: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (faites défiler jusqu'à la partie avec " Redirection de ports vers une machine virtuelle ").

Avec ces changements, j'ai pu accéder au site Web xampp avec " http: //192.168.xx.x: 8888 / mywebsite " dans Internet Explorer 10 sur ma machine virtuelle.

J'ai trouvé l'IP dans le Panneau de configuration XAMPP> Netstat ("Système").


0

Si vous utilisez Virtual Box, vous pouvez connecter Mac OSX (et je pense que Linux) à votre machine Windows virtuelle en utilisant une seule ligne de code -> je suggère d'arrêter la boîte avant de l'exécuter dans le terminal.

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

Je noterai que cela provient des documents de Dinghy, que j'exécute, mais c'est une commande de boîte virtuelle, donc il ne devrait pas vraiment se soucier de ce que vous utilisez tant que sa boîte virtuelle


0

J'ai besoin de courir sur localhost, pas sur une IP bizarre.

1) À partir de votre terminal Mac, iconfig -arecherchez votre adresse IP locale. C'est probablement le dernier.

en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 38:c9:86:32:0e:69 inet6 fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xe inet 10.1.5.60 netmask 0xfffffe00 broadcast 10.1.5.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active

par exemple 10.1.5.60

2) démarrez votre image Windows. démarrer> taper cmdpour obtenir un terminal

3) notepad c:\windows\system32\drivers\etc\hosts

4) ajoutez la ligne suivante 10.1.5.60 localhost

5) ouvrez IE, et l'url suivante devrait frapper le serveur fonctionnant sur votre mac: http://localhost:3000/


En fait, cela semble casser les URL des hôtes locaux d'un navigateur mac.
Jason Moore

-2

Obtenez l'IP de la machine exécutant Apache (inet addr: in ifconfig) et entrez-la dans la barre d'adresse du navigateur de boîte virtuelle.


-3

En fait, la réponse de user477494 est en principe correcte.

J'ai appliqué la même logique dans d'autres environnements (hôte OS X - Windows XP virtuel) et cela fait l'affaire. J'ai dû faire défiler la pile LAMP de l'hôte pour obtenir l'adresse IP et le port Apache à résoudre, mais une fois que j'ai compris cela, je riais.


pouvez-vous donner des conseils sur la façon de configurer / trouver les adresses IP sur une machine OSX?
cukabeka

? Je ne sais pas quelle adresse votre après - l'adresse de l'ordinateur peut être trouvée via les préférences système / réseau -> Adresse IP. C'est essentiellement l'adresse à laquelle le macine répondra en externe. En interne, localhost: 80 devrait suffire pour le serveur apache d'osx - tandis que MAMP utilise localhost: 8888 par défaut.
orionrush

On ne sait pas à quelle réponse cela fait référence (un lien aurait été judicieux), et cela ressemble plus à un commentaire.
isherwood
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.