Estou tendo problemas para acessar meu servidor da Web quando ele está localizado em uma máquina virtual. Se eu colocar o servidor na máquina host física, posso acessá-lo pela internet. No entanto, quando tento acessar o servidor da Web quando ele está na VM (na mesma máquina host), ele simplesmente trava (no navegador e curl externalip:forwardedport
).
Estou um pouco irritado porque isso não está funcionando porque as partes dessa configuração funcionam isoladamente, mas não funcionam quando colocadas juntas.
Quando o coloco em uma máquina virtual, certifico-me de configurar uma conexão de rede em ponte e de acessá-la de qualquer lugar da rede em máquinas separadas. Eu também configuro o encaminhamento de porta no roteador para o ip estático atribuído ao IP estático atribuído à VM.
As seguintes representam configurações. A primeira configuração é a que estou tentando alcançar. O segundo e o terceiro são "configurações parciais" que parecem que, se ambos funcionam (e funcionam), então a primeira configuração também deve funcionar.
- webserver <-> máquina virtual <-> máquina host <-> roteador <-> modem <-> internet
- webserver <-> máquina virtual <-> máquina host <-> roteador <-> outro computador
- ................................ webserver <-> máquina host <-> roteador <-> modem <-> internet
Basicamente # 2 significa que eu posso acessar o servidor da web localmente, e # 3 significa que eu posso acessar o servidor da web, se o servidor da Web não estiver na máquina virtual, mas no host da VM.
Atualmente estou usando:
webserver: python's SimpleHTTPServer at port 8888
virtual machine: centos deployed by vagrant on virtualbox.
host machine: thinkpad, windows
router: apple airport, wrt-54g (tried both, same results)
modem: SB6121 cable modem
internet: comcast
Eu configuro o encaminhamento de porta da porta 8888 para o endereço IP estático local 10.0.1.99 @ 8888 do servidor.
Pensei que tudo deveria estar certo. Eu pedi a um amigo que tentasse acessar o servidor web de seu próprio roteador / internet e ele tem os mesmos resultados: ele simplesmente trava.
É a combinação do encaminhamento de porta no roteador e a ponte do adaptador de rede vm que parece causar problemas. Tenho certeza de que estou encaminhando a porta certa para o IP estático correto. Além disso, não tenho certeza por que está pendurado, versus simplesmente soltando minha conexão. Algumas pessoas sugeriram, os pacotes não estão encontrando o caminho de volta para a internet.
fonte
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
0.0.0.0:8888
. Isso permitirá que ele ouça em qualquer endereço de entrada.Respostas:
Eu encontrei o que o problema era. O Vagrant cria dois adaptadores, um NAT, supostamente para a conexão ssh, e o adaptador em ponte que eu pedi no VagrantFile. Se eu desabilitar o adaptador NAT (ou seja, através do VirtualBox) e deixar o adaptador em ponte ativo, de repente ele funciona, e eu posso acessar o servidor da Internet. Se eu deixar o adaptador NAT, só posso acessar o servidor da rede (ou seja, outras caixas).
Aqui está a configuração de quando não funcionou:
Adaptador NAT:
Adaptador em ponte:
ifconfig dentro da minha VM, hospedando o servidor web. Não consigo acessar da internet. O endereço IP aqui é: 99 porque eu configurei um ip estático através do VagrantFile (arquivo de configuração do vagrant):
De repente, funciona se eu remover o adaptador NAT, usando apenas o adaptador em ponte. O endereço IP muda para algo atribuído pelo DHCP, porque eu simplesmente ligo:
Tenho certeza de que configurei o encaminhamento de porta corretamente cada vez que o ip local foi alterado no adaptador em ponte e repliquei o problema várias vezes.
fonte