Endereçando localhost a partir de uma máquina virtual VirtualBox


786

Eu tenho um servidor de teste / desenvolvimento local (HTTP, é claro), ouvindo a porta 8000.

Estou trabalhando no Linux, para testar a página no Internet Explorer 6, 7, 8, etc. Eu executo uma máquina virtual usando o VirtualBox; Também preciso ver como ele fica no Firefox em um ambiente Windows (as fontes, por exemplo, são diferentes).

Na minha máquina real, abro o site simplesmente usando a URL http://localhost:8000. Como abordar esse host local a partir da máquina virtual?

No momento, minha solução alternativa é usar o endereço IP. Alguma ideia melhor?


38
Não acredito que isso ainda é tão tedioso. Uso o VB há anos e, embora tenha se tornado mais fácil, ainda é o principal obstáculo, e as opções de rede ainda são difíceis de entender, e ainda não funciona de imediato para o que a grande maioria dos usuários deseja. para usá-lo. Provavelmente centenas de milhares usam o VB para testar sites (ou aplicativos) em diferentes plataformas no host local. É incompreensível pensar quanto tempo e aborrecimento podem ser poupados, melhorando esse aspecto específico do software.
Rolf

Veja também a mesma pergunta no superuser.com: superuser.com/questions/310697/…
Purplejacket

Respostas:


939

O Google pesquisou sobre isso: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Ele sugere o uso de IP:, http://10.0.2.2e funcionou para mim.

Então, editei o arquivo hosts C:\windows\system32\drivers\etc\hostse adicionei esta entrada:

10.0.2.2   outer

Se você estiver testando no IE8, lembre-se de colocar http://na barra de endereços. Basta colocar o ip diretamente não vai funcionar.

Por exemplo:

http://10.0.2.2:3000/

7
Eu notei no ipconfig (Windows no VirtualBox) que o roteador padrão do meu VirtualBox é esse endereço IP ... então isso faz sentido para mim.
benc

48
A fim de ser capaz de salvar suas edições ao arquivo de hosts, o Bloco de notas de lançamento com o botão direito nele e escolher "Executar como administrador"
Noah Sussman

25
Eu tive que mudar minha Attached toconfiguração de rede VirtualBox de Bridged Adapterpara NATpara que isso funcione para mim.
Troy Harvey #

1
Você também pode configurá-lo como 10.0.2.2 localhost na configuração VM para garantir caminhos absolutos são resolvidos adequadamente
Mario Peshev

5
Eu preciso acessar localhostnão 10.0.2.2devido a alguma autenticação de merda que quer localhost como o endereço :(
Dominic

408

Mac OS

Estou executando o Virtual Box no macOS (anteriormente OS X), usando o Virtual Box para testar o IE no Windows, etc.

Vá para o IE no Virtual Box e acesse localhostvia http://10.0.2.2for localhostou http://10.0.2.2:3000for localhost:3000.

Mantive as configurações de rede como NAT, sem necessidade de ponte, como sugerido acima no meu caso. Não há necessidade de editar nenhum arquivo de configuração.


39
Na verdade, tive que adicionar 'http: //' na frente do endereço IP para que funcionasse (caixa IE8 / WinXP).
wrtsprt

8
Mas existe alguma maneira de mapear 10.0.2.2 para o localhost: 8888? Eu tenho localhost: 8888 como o URL inicial no meu banco de dados. Indo para 10.0.2.2 em cargas VB na página HTML, mas todos os links quebrar, porque eles estão apontando para localhost: 8888
Michael Giovanni Pumo

@MichaelGiovanniPumo, que eu saiba, você não pode mapear o URL diretamente para uma porta específica. você deve indicar explicitamente a porta #
Jonathan Lin

2
@JonathanLin Eu o resolvi simplesmente mapeando 10.0.2.2 para localhost no arquivo de hosts Win7 e que funcionava com a porta: 8888 de qualquer maneira, então agora está funcionando. Obrigado.
Michael Giovanni Pumo

Maravilhosa está trabalhando, MacOS Sierra versão 10.12.5 e VirtualBox v 5.1.22
Tabares

82

Para habilitar isso no OSX, tive que fazer o seguinte:

  1. Desligue sua máquina virtual.
  2. Vá para VirtualBox Preferences -> Network -> Host-only Networks ->clicar no ícone "+". Clique OK.
  3. Selecione sua caixa e clique no "Settings" icon -> Network -> Adapter 2 ->menu suspenso "Conectado a:", selecione "Adaptador somente para host" e sua rede ( vboxnet0) deve aparecer abaixo por padrão. Clique OK.
  4. Depois de reiniciar sua caixa, você poderá acessar o host local em http://10.0.2.2/

Você pode consultá-lo localhoste acessar outros sites hospedados localmente, adicionando suas referências ao arquivo hosts ( C:\windows\system32\drivers\etc\hosts) como o seguinte:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost

4
Essa solução funcionou para mim com uma pequena modificação: depois de criar o novo adaptador somente para host (vboxnet0), edite o adaptador. Na janela exibida, vá para a guia Adaptador e copie o IPv4 Address(por exemplo 192.168.56.1). Depois que você iniciar a VM, abra o navegador e vá parahttp://192.168.56.1:3000
Robert

Funciona tanto em XP e Windows 7
Sukeerthi Adiga

1
Infelizmente, não consigo resolver meus subdomínios. Executei as etapas da resposta aceita aqui para verificar se o arquivo hosts está funcionando no Win10 conforme o esperado: serverfault.com/questions/452268/… Alguma idéia?
danjah

Trabalhou na máquina host MacOs alta Serra e convidado Windows 7
Kapitula Alexey

6
Não consegui encontrar a opção "Redes somente de host".
Jason Moore

56

Você provavelmente tem a rede da sua máquina virtual definida como NAT. Se você definir sua rede como Bridged, poderá acessar sua máquina host pelo nome do host. Por exemplo, se o seu nome de host for "jsmith-Precision-7510" e você desejar abrir http: // localhost: 3000 / , poderá visualizar essa página em http: // jsmith-Precision-7510: 3000 / .

Para encontrar seu nome de host, abra um terminal / console e execute o comando hostname. Seu nome de host será exibido na próxima linha.

Consulte a documentação do VirtualBox para obter instruções sobre como definir suas configurações de rede para Bridged.


hmm, por algum motivo o gui (na minha máquina) não tem essa opção!
hasen

qual versão você está usando? Descobri que no Mac, alguns dos documentos do manual base são completamente diferentes.
benc

Adoro esta solução. Observe que em alguns Windows mais antigos você não poderá usar a whatever.localmenos que instale o Bonjour.
Marc-André Lafortune

42

Eu tive que entrar no virtualbox e alterar minhas configurações de rede para 'NAT'. Depois disso, fui capaz de localhostexecutar a execução na minha máquina host do meu emulador no virtualbox atravéshttp://10.0.2.2:3000


Recentemente (2019), baixei a VM convidada do Windows 7 IE10 da Microsoft (meu host é o MacOS Sierra) e tive muitos problemas com a configuração da rede. Por fim, acabei de lixeira e baixei a VM convidada do Microsoft Windows 7 IE11. Em seguida, defino-o como rede 'NAT' e poderia http://10.0.2.2acessar o host local do host via exatamente como descrito aqui por @Pytth.
Purplejacket

Essa deve ser a resposta aceita.
lotes0logs 07/04

35

Se você possui um adaptador conectado ao NAT , hoje em dia é uma solução melhor e mais elegante definir o encaminhamento de portas para as portas locais.

Settings> Network> Adapter> Advanced>Port forwarding

Basta inserir uma nova regra e definir Host porte Guest portcomo 80(para http) ou 22(para ssh) e assim por diante.

Então você pode acessar essa máquina digitando apenas http://localhost

Você também pode mudar o NAT para o modo transparente.


8
@ Boris O que você descreve aqui é como ir do host para o servidor convidado (porta). Mas a pergunta era sobre o contrário.
Petr Bodnár

Porque, por estar no BT Home Hub, essa foi a única opção que funcionou para mim
Hashim Akhtar

33

Descobri que 10.0.2.2:<port>funciona, mas apenas se o Modo Promíscuo estiver definido corretamente. Depois de instalar minha VM, fui para Configurações> Rede> Adaptador 1.

O NAT é definido por padrão e o menu suspenso Promiscuous está desativado. Mudei de NAT para Bridged Adapter, que ativou o menu suspenso Promiscuous Mode, e alterei o valor de "Negar" para "Permitir VMs". Voltei para o NAT, que desabilitou o Modo Promíscuo novamente, mas manteve o novo valor.

Após apenas essa alteração, consegui iniciar minha VM e ver minhas máquinas host localhost:<port>em minha VM em 10.0.2.2:<port>.


1
Estou executando o Windows 7 como minha máquina host e o Windows 10 como convidado; finalmente, esta solução funcionou para mim no VirtualBox 4.3.30 r 10.16.10. Obrigado!
Micer

Acabei de instalar o Windows 10 na caixa virtual e isso fez o truque!
captainill

Isso funcionou para mim também em combinação com as instruções do spsaucier mais adiante. Segui as instruções e
ativei o

31

A impossibilidade de redirecionar solicitações para o host local na VM para o host local do host agora está conectada ao Windows ( https://tools.ietf.org/html/rfc6761#section-6.3 ), incluindo as VMs disponíveis em https: //developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Por razões de segurança, a Microsoft agora impede que as entradas do arquivo host substituam o endereço do localhost por algo diferente do endereço de loopback :: 1. Então, adicionando uma linha ao arquivo host da VM, como

10.0.2.2 localhost

será ignorado.

Existem duas maneiras (que eu conheço) de substituir isso:

1) use NETSH para portproxy para o host

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

(em que 10.0.2.2 é o gateway padrão na VM e 8000 é a porta que você deseja resolver no host.)

2) Configure o IIS para executar o roteamento de solicitação de aplicativo e, em seguida, reescreva as solicitações para localhost: port no hostIP: port

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


7
Eu usei a abordagem NETSH. funcionou como um encanto. Esta é a melhor resposta da IMO.
Liang Zhou

1
Também usei o NETSH, trabalhei como mágica. Esta é a minha melhor resposta também. Era o único que trabalhou
Van_Paitin

netshFoi o que me ajudou, tentei tudo o que encontrei na rede, mas sem sucesso. Isso permitirá acessar <protocol>://localhost:<port>, em vez de acessar diretamente por IP. Essa deve ser a resposta aceita para o Windows 10.
Octavian Lari

Essa deve ser a resposta aceita, como é relevante e tem a que está funcionando atualmente
IAmJulianAcosta

26

Mac OS

Se você deseja configurar um ambiente Windows com o Virtualbox em um Mac, basta usar as configurações NAT padrão no adaptador e, na VM do Windows, vá para o arquivo hosts e adicione o seguinte:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

Diferentemente das respostas acima, é importante incluir as duas linhas, caso contrário não funcionará.


6
Isso funciona muito bem com as imagens modern.ie para depuração, ie / edge no Mac, e foi assim que cheguei a essa pergunta. Há uma exceção: Windows 10. O Windows 10 não permite a modificação do domínio localhost por meio do arquivo hosts (loucura) A solução alternativa é habilitar o IIS e configurar um proxy reverso por ele, realizando o mesmo em muitas outras etapas: developer.microsoft. com / pt-br / microsoft-edge / platform / issues /…
MaxPRafferty

@MaxPRafferty Você conseguiu fazer isso funcionar? Eu já passei por tudo neste tópico sem sucesso. Atualizei meu arquivo host como esta resposta sugere e segui as etapas nesse link. Foi um pouco ambíguo quanto a onde declarar 10.0.2.2 na etapa 7. Para onde ela vai na regra? Agora estou incansavelmente direto para a página do IIS no meu Windows VM Localhost
David Weber

@ David David Sim, eu era - eu realmente arquivei esse bug, então ainda tenho essa imagem disponível. 10.0.2.2 precisa entrar no "URL da ação", listado como "URL de reescrita" na tela de edição: página principal de reescrita: user-images.githubusercontent.com/1894398/… , user-images.githubusercontent.com/1894398/ … Página de regra de edição: user-images.githubusercontent.com/1894398/…
MaxPRafferty

@MaxPRafferty Obrigado pela ajuda e links. Ainda não consigo fazer isso funcionar. Uma coisa tão simples e não tenho certeza de onde está o problema agora. Eu segui isso para o 't' e ainda nada, mesmo ao tentar cada uma das outras sugestões de tipo de rede. Parece que eu também posso comprar um PC neste momento.
David Weber

3
Acho que isso não funciona mais agora que as versões mais recentes do Windows resolvem o host local com seu DNS. Eu não acho que 127.0.0.1 possa ser redirecionado assim (apenas nomes de host).
precisa saber é o seguinte

22

Você precisa editar o arquivo hosts em sua máquina Windows Virtual da mesma maneira que em sua máquina host local:

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

E vincule seus hosts virtuais à 10.0.2.2. Se você estiver usando apenas o host local, substitua

127.0.0.1 localhost com 10.0.2.2 localhost

Por exemplo:

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

Isso instrui sua máquina virtual a apontar para sua máquina local para esses nomes de domínio.


Thx, isso ajudou no meu caso (executando sites locais no docker com nginx) - acessar o direclty IP (10.0.2.2) apenas fornece erro nginx.
Ggzone # 6/18

22

Você não precisa alterar o arquivo hosts ou qualquer configuração do Virtual Box. Mantenha as configurações no NAT. Vá para a instância do Windows e execute "cmd" ou abra o cmd.exe. Execute o comando "ipconfig" e obtenha o endereço IP do gateway padrão . Navegue em http://10.0.2.2:8080 no Windows IE e verá o mesmo que o seu Mac Safari http: // localhost: 8080 / ou http://127.0.0.1:8080


1
Quando um servidor de desenvolvimento local possui dependências de desenvolvimento vinculadas localhost. (por exemplo, webpack-dev-server)
kube 17/10

o que é 10.2.2.3 or .4? I can ping .2, bem como aqueles - VM é Windows Server rodando sob Windows Server
ycomp

10

Uma combinação de algumas coisas acabou fazendo as coisas funcionarem do meu lado. Executando um servidor de balão no macosx.

Na minha VM do Windows, editei o arquivo hosts:

  • Execute o bloco de notas como administrador
  • aberto C:\windows\system32\drivers\etc\hosts
  • adicione esta entrada: 10.0.2.2 outer

VM de desligamento e no meu Mac no VirtualBox:

  • Vá para VirtualBox > preferences > Network > Host-only Networks > +adicionar uma redevboxnet1
  • Vamos para My_VM > settings > Network > Adapter 1 .
  • Selecione Enable Network Adaptere defina Attached to:comoBridged Adapter .
  • Em seguida, defina Advanced > Promiscuous Mode:comoAllow VMs .
  • Clique OK
  • Vamos para My_VM > settings > Network > Adapter 1 .
  • Set Attached to:de volta para NAT.

Então eu fui para Adapter 2

  • Defina Attached to:como Host-only Adaptere selecione a rede adicionada anterior vboxnet1.

Eu iniciei meu servidor no meu mac, rodando 127.0.0.1:5000e agora ele estava acessível no meu vm emhttp://10.0.2.2:5000

Cara, que pesadelo para testar no IE no mac. Como não existe uma maneira mais simples?


1
Eu gostaria de poder votar isso mil vezes. Essa foi a única coisa que funcionou depois de encontrar métodos mais simples, como simplesmente editar o arquivo hosts e usar as configurações NAT padrão - nenhuma dessas postagens resolveu meu problema. Estou executando o MacOS Sierra com uma VM do IE11 no Win81 em developer.microsoft.com/en-us/microsoft-edge/tools/vms , caso essa combinação ajude outras pessoas aqui.
Manu Kanthan

FWIW, tentei reverter todas essas configurações, remover o VirtualBox e reinstalar, reimportando as VMs da Microsoft. Iniciei meu servidor Rails rails s -b 127.0.0.1e o acessei de todas as VMs http://10.0.2.2:3000e funcionou. Gostaria de saber se a mudança de configuração de cima de alguma forma permaneceu mesmo depois de reverter tudo de volta.
Manu Kanthan

1
Isso não foi exatamente o mesmo para mim, especialmente as etapas para o Adaptador 2, tive que usar a configuração do Adaptador Nat para fazê-lo vboxnet1, mas acabou funcionando. Obrigado pelas pistas!
jfunk

4

Eu resolvi adicionando um encaminhamento de porta nas configurações do Virtualbox na rede. Porta 127.0.0.1 do conjunto de IPs do host: 8080 IP do convidado: forneça qualquer IP para a porta do site (digamos 10.0.2.5): 8080 Agora, acesse o computador da máquina http://10.0.2.5:8080 usando o IE


3

Na caixa virtual, como dito acima, você pode adicionar este arquivo de linha de hosts

10.0.2.2   outer

mas, para salvá-lo, se você não tiver administradores certos na sua VM, mova o arquivo hosts para a área de trabalho e edite-o para adicionar a linha 10.0 .... externa, salve o arquivo e vá para o local original.


2

verifique se você pode atingir sua máquina principal com: ipconfig (obtenha seu endereço IP)

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

Se você não conseguir acessar a porta, tente adicionar uma nova regra de entrada no firewall pai, permitindo portas locais.

Pude acessar http://<ip>:<port>


2

Na Caixa Virtual

  1. Defina sua rede como Bridge networking
  2. Vá para o conjunto avançado Modo promíscuo: permitir tudo

Agora, a parte mais complicada é o seu host local, se você estiver executando o Node.js, defina o endereço IP como 0.0.0.0 e procure seu próprio endereço IP, por exemplo cmd: ipconfig -> 10.0.1.3

Digite esse endereço com o número da porta. E vai funcionar.


1

Etapas gerais:

  • Uma rede comum (adicionar NIC somente para host ou ponte)
  • configurar o serviço preferencial para escutar na interface apropriada (interface conectada à NIC compartilhada)
  • Use IP: Porta para alcançar o serviço de destino, use um IP que pertença à rede compartilhada.

0

No Windows com um Windows 7 virtual, a única coisa que funcionou para mim foi usar NAT e encaminhamento de porta (não foi possível obter a conexão em ponte). Encontrei um tutorial aqui: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (role para baixo para a parte com " Encaminhando portas para uma máquina virtual ").

Com essas alterações, eu poderia acessar o site xampp com " http: //192.168.xx.x: 8888 / mywebsite " no Internet Explorer 10 na minha máquina virtual.

Encontrei o IP no XAMPP Control Panel> Netstat ("System").


0

Se você usa o Virtual Box, pode conectar o Mac OSX (e acho que o Linux) à sua máquina virtual Windows usando uma linha de código -> sugiro interromper a caixa antes de executá-la no terminal.

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

Observarei que isso é dos documentos do Dinghy, que estou executando, mas é um comando de caixa virtual, portanto, ele não deve se importar com o que você usa, desde que a Caixa Virtual


0

Preciso rodar no localhost, não em um IP estranho.

1) No terminal Mac, faça iconfig -apara encontrar o seu endereço IP local. Provavelmente é o último.

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

por exemplo, 10.1.5.60

2) inicialize sua imagem do Windows. start> type cmdpara obter um terminal

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

4) adicione a seguinte linha 10.1.5.60 localhost

5) abra o IE e o seguinte URL deverá atingir o servidor em execução no seu mac: http://localhost:3000/


Na verdade, isso parece quebrar os URLs do host local de um navegador Mac.
Jason Moore

-2

Obtenha o IP da máquina que está executando o Apache (inet addr: in ifconfig) e digite-o na barra de endereço do navegador da caixa virtual.


-3

Na verdade, a resposta do usuário477494 está correta em princípio.

Eu apliquei a mesma lógica em outros ambientes (host do OS X - Windows XP virtual) e isso faz o truque. Eu tive que alternar a pilha LAMP do host para obter o endereço IP e a porta Apache para resolver, mas depois que eu descobri isso, estava rindo.


você pode dar algum conselho sobre como configurar / descobrir os IPs em uma máquina OSX?
Cukabeka

? não tenho certeza de qual endereço você procura - o endereço do computador pode ser encontrado em prefs / network do sistema -> Endereço IP. Esse é basicamente o endereço que o macine responderá externamente. Internamente localhost: 80 deve servir para o servidor apache do osx - enquanto o MAMP usa localhost: 8888 por padrão.
Orionrush

Não é aparente a que resposta isso se refere (um link seria sensato) e parece mais um comentário.
Isherwood 28/03/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.