客观的 能够从与主机位于同一 LAN 上的其他机器连接到在客户机内运行的 httpd。
采取的方法 我在客户机上配置了带端口转发的 NAT 接口。主机的端口 8080 被转发到客户机的端口 80。
客户机还具有一个仅主机接口,仅用于从主机检查 httpd 的状态(运行/停止)。
我有以下内容设置:
- 主持人--> 联邦调查局
- 客人--> Debian 9
- 网络接口(2)
- NAT
- 仅限主持人
- 转发端口 主机端口 8080 转发至客户端口 80
问题 我无法从主机访问客户机上的端口 80(通过使用 localhost:8080,即不使用仅主机接口),因此,也无法从 LAN 访问它。
话虽如此,我在客户机上也有 ssh,我尝试了相同的 ssh 端口转发设置,即转发 Host:8080 到 Guest:22,成功了!我可以从主机以及同一 LAN 上的其他机器通过 SSH 进入客户机。所以这似乎不是防火墙问题。
我已通过 /etc/apache2/ports.conf 让 httpd 监听 0.0.0.0:80。我也尝试过更改 httpd 监听的端口,但没有什么效果。同样,我也尝试过将 httpd 监听的 IP 地址指定为 VirtualBox 分配给 NAT 接口的 IP,但也没有成功。
我尝试从文件>首选项>网络创建一个新的 NAT 接口,并将端口转发添加到 VirtualBox 内置的默认 NAT 接口。
在主机上运行 wget 会得到以下输出
# 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.
Host 和 Guest 上 netstat 命令产生的输出摘录如下:Host 机器:
Local Address Foreign Address State
192.168.1.2:8080 192.168.1.2:52162 FIN_WAIT2
客机:
Local Address Foreign Address State
10.0.2.15:80 10.0.2.2:52162 FIN_WAIT2
那么连接被转发给客户机了吗?客户机上没有防火墙(iptables -L 返回一个空列表)。SSH 可访问而 httpd 不可访问可能意味着这是 httpd 配置问题?
我这里可能遗漏了什么?