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

11

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

Em ambos os casos, consegui acessar a porta 80, mas falhei ao tentar conectar-me ao localhost na porta 3000 (por isso, não houve problema em acessar o servidor xampp).

Por favor, deixe-me saber se você tem alguma idéia de como se pode acessar o host local do host enquanto o servidor está no lado do convidado.

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

    
por Hubert Siwkin 22.05.2015 / 02:45

1 resposta

9

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) é aberto para receber conexões de rede, ele se ligará a um IP e a uma porta. Se uma solicitação recebida 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 aceitará apenas solicitações enviadas para seu adaptador de rede localhost (loopback) (chamado lo ). Como este adaptador só é acessível a partir do mesmo computador, os únicos pedidos que ele aceitará serão da própria VM do Debian: bons e seguros para testes, mas não úteis para produção, ou mesmo testes de um computador diferente.

Se você quer que seu Rails seja acessível de qualquer outro computador (incluindo seu host Windows 7), você precisará dizer ao Rails para ligar qualquer endereço IP que o Debian tenha que seja acessível externamente (veja abaixo).

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

rails server -p 80 -b 0.0.0.0

tornará seu website acessível para 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.

A regra geral com localhost é que sempre se refere ao mesmo computador. No entanto, para fins de rede, sua máquina virtual Debian é seu próprio computador separado. Se você estiver usando um navegador da Web no seu host do Windows 7, localhost sempre se referirá ao seu 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). Isto irá colocar o seu Debian diretamente na mesma rede externa / doméstica / trabalhista que o seu host do Windows 7. Você pode então determinar o IP da sua máquina virtual Debian executando ifconfig . Procure o IP do seu adaptador eth0 ou eth<something> . Ligue-o à barra de endereços do seu navegador.

  • Use um adaptador NAT e encaminhamento de porta VirtualBox . OMI isto é mais complicado.

Firewall do Debian

Já faz um tempo desde que eu trabalhei no Debian, então eu 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 todas as portas que desejar acessar de outra máquina.

Espero que isso ajude:)

    
por 21.06.2015 / 08:27