Não é possível acessar o servidor de trilhos na VM do host

12

Eu tenho um servidor de trilhos na máquina virtual e preciso acessar o host local do host. Eu tentei o NAT (encaminhamento de porta - portas 80 e 3000 no lado do convidado) e o adaptador de ponte, mas nada parece funcionar.

Nos dois casos, consegui acessar a porta 80, mas falhei ao tentar conectar-me ao localhost na porta 3000 (portanto, não houve problema no acesso ao servidor xampp).

Por favor, deixe-me saber se você tem alguma idéia de como alguém pode acessar o host local a partir do host enquanto o servidor estiver do lado do convidado.

Eu tenho linux (debian) no convidado e Windows 7 no lado do host - eu uso o VirtualBox.

Hubert Siwkin
fonte

Respostas:

10

Há 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) for aberto para receber conexões de rede, ele será vinculado a um IP e uma porta. Se uma solicitação de entrada não corresponder a ambas, 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 aceita apenas solicitações enviadas ao seu localhostadaptador de rede (loopback) (chamado lo). Como esse adaptador só pode ser acessado no mesmo computador, as únicas solicitações que ele aceitará serão da própria VM da Debian: boas e seguras para teste, mas não são úteis para produção, ou até mesmo testam em um computador diferente.

Se você deseja que seu Rails seja acessível a partir de qualquer outro computador (incluindo o host do Windows 7), você precisará instruir o Rails a se associar a qualquer endereço IP que o Debian possua que seja acessível externamente (veja abaixo).

No entanto, uma maneira mais fácil é dizer ao Rails para se conectar ao endereço IP especial 0.0.0.0, o que significa qualquer adaptador de rede . Então, iniciando o servidor Rails da seguinte forma:

rails server -p 80 -b 0.0.0.0

tornará seu site acessível a qualquer pessoa que possa ver sua VM na rede.

É provável que isso ainda tenha atrapalhado você, mesmo se você tivesse os outros dois componentes 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 propósitos de rede, sua VM Debian é seu próprio computador separado. Se você estiver usando um navegador da web no host do Windows 7, localhostsempre fará referência ao seu Windows 7 e nada mais.

Você tem duas opções aqui:

  • Defina o adaptador VM do VirtualBox para o modo Bridge (conforme mencionado na sua pergunta). Isso colocará o seu Debian diretamente na mesma rede externa / residencial / comercial que o seu host Windows 7. Você pode determinar o IP da sua VM Debian executando ifconfig. Procure o IP do seu eth0ou eth<something>adaptador. Conecte isso na barra de endereços do seu navegador.

  • Use um adaptador NAT e encaminhamento de porta do VirtualBox . IMO isso é mais complicado.

Firewall Debian

Já faz um tempo desde que eu trabalhei no Debian, então não sei quais são os padrões atuais, mas se as duas coisas acima não funcionarem, isso pode valer a pena investigar. Se o Debian estiver executando um firewall, você precisará abrir as portas que deseja acessar de outra máquina.

Espero que isto ajude :)

Samuel Jaeschke
fonte