Virtualbox “encaminhar porta” do convidado para o host [fechado]

162

Aqui está a minha configuração:

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

Estou configurando um servidor da web Apache no Convidado, mas quero poder fazer isso na máquina Windows:

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

Além disso, tentei alterar minha rede para ponte e recebi um novo IP. Mas quando tentei fazer o http: //: 8000, ele diz que não pôde se conectar.

Carmen
fonte
1
Eu tive o mesmo problema. Acabou o sistema operacional convidado tinha um firewall ativo que estava bloqueando a porta 80.
Nicholas Shanks
149
Como desenvolvedor da Web que usa o VirtualBox como parte do meu fluxo de trabalho diário, não concordo que isso seja marcado como fora do tópico. Por favor, considere reabrir.
Sparecycle
1
1. Vá para a VM 2. ifconfig (obtenha o IP local - deve ser 10.0.2.X) 3. ssh 10.0.2.2 para acessar a máquina host
Mark Roberts
@deeperDATA Pode estar no escopo do trabalho de um desenvolvedor da Web, mas o estouro de pilha não serve para encapsular todas as partes do trabalho. É uma prova da complexidade de nossa profissão que seus requisitos abrangem vários sites de troca de pilhas.
Kevin Lawrence
1
Levei muito tempo para fazê-lo funcionar. Nosso problema foi a ligação IP do aplicativo no sistema convidado, ligada ao nome da máquina, ou seja, 127.0.1.1 no ubuntu. Alteramos a ligação para 0.0.0.0. Configurações de encaminhamento de porta: host IP = Anfitrião DNS IP, Porta do host = 8080, Visitante IP = IP de eth0, Port Visitante = 8080.
slowy

Respostas:

222

Comunicação em rede Host -> Guest

Conecte-se ao convidado e descubra o endereço IP:

ifconfig 

exemplo de resultado (o endereço IP é 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

Vá para a janela da instância do Vbox -> Menu -> Adaptadores de rede:

  • adaptador deve ser NAT
  • clique em "encaminhamento de porta"
  • inserir novo registro (ícone +)
    • para IP do host, digite 127.0.0.1 e, para o endereço IP do convidado obtido de anterior. etapa (no meu caso, é 10.0.2.15)
    • no seu caso, a porta é 8000 - coloque-a nos dois, mas você pode alterar a porta do host, se preferir

Vá para o sistema host e tente no navegador:

http://127.0.0.1:8000

ou o seu endereço IP de rede (encontre na máquina host executando: ipconfig).

Comunicação em rede Convidado -> Host

Nesse caso, o encaminhamento de porta não é necessário, a comunicação passa pela LAN de volta ao host.

Na máquina host - encontre o seu endereço de rede:

ipconfig

exemplo de resultado:

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

Na máquina convidada, você pode se comunicar diretamente com o host, por exemplo, verifique com 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
fonte
11
ambas as portas não serão 8000. A porta do host será 8000 ou o que você desejar, mas a porta de convidado deverá ser 80
Yasin
5
Ir da VM para o host nesse caso deve ser possível acessando a VM e obtendo o endereço IP da ITS (10.0.2.15, conforme abaixo). Para acessar a máquina host da VM, o IP é 10.0.2.2 (por convenção).
Mark Roberts
5
Se estiver usando NAT para o convidado ... Se o serviço que está sendo executado no host estiver vinculado apenas a 127.0.0.1, o convidado não poderá usar o IP público do host para se conectar a esse serviço (serviço de exemplo: privoxy). Em vez disso, você precisa usar 10.0.2.2, como mencionado por Mark, ou o que for 'route -n' (executado no convidado) mostrado como o gateway padrão.
Desm
4
No caso do CentOS, talvez tenhamos que desativar o firewall ou editar regras específicas na tabela de ip #
Reddy
2
Descobri que não é necessário especificar endereços IP de host ou convidado, e você pode simplesmente deixar as caixas em branco. Embora se você deseja apenas se conectar a partir do host local, provavelmente é uma boa ideia colocar 127.0.0.1 como host.
mwfearnley
14

Isso não é possível. localhostsempre padroniza o dispositivo de loopback no sistema operacional local.
Como sua máquina virtual executa seu próprio sistema operacional, ela possui seu próprio dispositivo de loopback, que você não pode acessar externamente.

Se você quiser acessá-lo, por exemplo, em um navegador, conecte-o usando o IP local:

http://192.168.180.1:8000

Este é apenas um exemplo, é claro, você pode descobrir o IP real emitindo um ifconfigcomando em um shell no sistema operacional convidado.

Chris
fonte
Eu tentei isso também, mas não funcionou para NAT e bridge. O apache efetua logon no convidado não apresenta erros e o apache está instalado e em execução no convidado.
Carmen
Você tem certeza de que está usando o IP correto? Você pode verificar isso tentando acessar o endereço de dentro da máquina virtual. Se isso falhar, você estão usando um IP errado ou o seu apache não está configurado para escutar na porta 8080.
Chris
Trabalhou para mim - obrigado!
22815 Matt Frear #
Trabalhou para mim também. Antes de substituir "localhost" pelo endereço IP do sistema operacional do host, eu sempre obtive "Servidor recusado sua chave" e "Acesso negado" sem explicação em /var/log/auth.log, apesar do LogLevel DEBUG3 em / etc / ssh / sshd_config
VR
@ Chris significa isso no host, com entradas de host virtual como mysite.localhostnão serão acessíveis à máquina Guest, porque devo me referir ao Host usando apenas um endereço IP?
danjah