Objetivo Para poder conectar-se ao httpd executado dentro de um convidado de outras máquinas na mesma LAN que o host.
Abordagem adotada Eu configurei uma interface NAT com o encaminhamento de porta no convidado. A porta 8080 da máquina host está sendo encaminhada para a porta 80 das máquinas convidadas.
O convidado também tem uma interface somente de host, que é usada apenas para verificar se o status do httpd (em execução / parado) do host.
Eu tenho a seguinte configuração :
Problema Não consigo acessar a porta 80 no convidado do host (usando localhost: 8080, ou seja, sem usar a interface somente de host), portanto, ela também pode ser acessada pela LAN.
Dito isso, eu também tenho ssh no guest, tentei a mesma configuração de encaminhamento de porta para o ssh, ou seja, envie o Host: 8080 para o Guest: 22 e funcionou! Eu posso SSH no convidado do host e também de outras máquinas na mesma rede local. Por isso, não parece ser um problema de firewall.
Eu tenho httpd ouvindo em 0.0.0.0:80 via /etc/apache2/ports.conf. Eu também tentei mudar a porta httpd escuta sem muita sorte. Da mesma forma, eu também tentei especificar o endereço IP httpd escuta como o IP atribuído pelo VirtualBox para a interface NAT sem muito lick também.
Eu tentei criar uma nova interface NAT em File > Preference > Network e também adicionando o encaminhamento de porta à interface NAT padrão incorporada no VirtualBox.
A execução de um wget no host fornece a seguinte saída
# wget localhost:8080
--2017-08-08 13:06:33-- http://localhost:8080/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:8080... failed: Connection refused.
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://localhost/ [following]
--2017-08-08 13:06:34-- http://localhost/
Connecting to localhost (localhost)|127.0.0.1|:80... failed: Connection refused.
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... failed: Connection refused.
Connecting to localhost (localhost)|127.0.0.1|:80... failed: Connection refused.
Os trechos da saída produzidos pelo comando netstat no Host e Guest são Máquina host:
Local Address Foreign Address State
192.168.1.2:8080 192.168.1.2:52162 FIN_WAIT2
Máquina convidada:
Local Address Foreign Address State
10.0.2.15:80 10.0.2.2:52162 FIN_WAIT2
Então a conexão está sendo encaminhada para o convidado? Não há firewall no convidado (iptables -L retorna uma lista vazia). O SSH sendo acessível enquanto o httpd não está acessível provavelmente significa que é um problema de configuração do httpd?
O que poderia estar faltando aqui?