Eu tenho um servidor Rails na máquina virtual e preciso acessar o host local do host. Eu tentei o NAT (por encaminhamento de porta - portas 80 e 3000 no lado do convidado) e o adaptador em ponte, mas nada parece funcionar.
Em ambos os casos consegui acessar a porta 80, mas não consegui conectar-me ao localhost na porta 3000 (portanto, não houve problema ao acessar o servidor xampp).
Por favor, deixe-me saber se você tem alguma idéia de como alguém pode acessar o host local do host enquanto o servidor está no lado do convidado.
Eu tenho Linux (debian) no convidado e Windows 7 no host - eu uso o VirtualBox.
Responder1
Existem pelo menos três componentes separados em jogo aqui, cada um dos quais precisa ser configurado corretamente.
Endereço de ligação do Rails
Quando o Rails (ou outro aplicativo de servidor) abre para receber conexões de rede, ele se vincula a um IP e a uma porta. Se uma solicitação recebida não corresponder a ambos, ela não aceitará a conexão. De rails server --help
:
Usage: rails server [mongrel, thin etc] [options] -p, --port=port Runs Rails on the specified port. Default: 3000 -b, --binding=IP Binds Rails to the specified IP. Default: localhost ...
Portanto, por padrão, o Rails aceitará apenas solicitações enviadas ao seu localhost
adaptador de rede (loopback) (chamado lo
). Como este adaptador só é acessível dentro do mesmo computador, as únicas solicitações que ele aceitará serão dentro da própria VM Debian: boas e seguras para testes, mas não úteis para produção, ou mesmo para testes em um computador diferente.
Se você deseja que seu Rails seja acessível de qualquer outro computador (incluindo seu host do Windows 7), você precisará dizer ao Rails para se ligar a qualquer endereço IP que o Debian possua e que seja acessível externamente (veja abaixo).
No entanto, uma maneira mais fácil é dizer ao Rails para vincular-se ao endereço IP especial 0.0.0.0
, o que significaqualquer adaptador de rede. Então, iniciando seu servidor Rails assim:
rails server -p 80 -b 0.0.0.0
tornará seu site acessível a qualquer pessoa que possa ver sua VM na rede.
Provavelmente é isso que ainda está atrapalhando você, mesmo que os outros dois componentes estejam funcionando.
Endereço IP da VM
Você precisa apontar seu navegador para a máquina virtual Debian, que é seu próprio computador discreto.
A regra geral localhost
é que sempre se refere ao mesmo computador. No entanto, para fins de rede, sua VM Debian é um computador separado. Se você estiver usando um navegador da Web no host do Windows 7, localhost
sempre se referirá ao Windows 7 e nada mais.
Você tem duas opções aqui:
Defina o adaptador VirtualBox VM para o modo Bridge (como você mencionou na sua pergunta). Isso colocará seu Debian diretamente na mesma rede externa/doméstica/de trabalho que seu host do Windows 7. Você pode então determinar o IP da sua VM Debian executando
ifconfig
. Procure o IP do seueth0
oueth<something>
adaptador. Conecte isso na barra de endereço do seu navegador.Use um adaptador NAT eEncaminhamento de porta VirtualBox. IMO isso é mais complicado.
Firewall Debian
Já faz um tempo que não trabalho no Debian, então não sei quais são os padrões atuais, mas se as duas coisas acima não funcionarem, talvez valha a pena investigar. Se o Debian estiver executando um firewall, você precisará abrir todas as portas que deseja acessar de outra máquina.
Espero que isto ajude :)