使用端口 80 从主机转发到客户机,但不起作用

使用端口 80 从主机转发到客户机,但不起作用

我在虚拟盒(11.04)中安装了 ubuntu 服务器,然后配置了 apache。

在虚拟盒设置中,我进行了从端口 80(主机)到 80(客户机)的端口转发,在主机上打开 Web 浏览器,然后转到http://本地主机 不起作用,但如果我去http://本地主机:1080,它可以工作,但是我没有将端口从 1080 转发到 80,我的配置中没有 1080,我想知道为什么会这样?

我知道端口 80 只有在我以 root 身份启动 virtualbox 时才会起作用,但我不知道为什么它实际上转换当端口 80 到 1080 时它根本无法工作...virtualbox 中是否有一些东西可以查看它是否不是根并将低于 1024 的地址转换为其他地址?

答案1

VirtualBox 手册说

转发主机端口 < 1024 不可能:

在基于 Unix 的主机(例如 Linux、Solaris、Mac OS X)上,无法将非 root 运行的应用程序绑定到 1024 以下的端口。因此,如果您尝试配置此类端口转发,VM 将拒绝启动。

我猜这就是主机以 root 用户身份运行时正确转发端口 80 的原因。无论如何,我不确定为什么端口会自动从 80 更改为 1080。

答案2

这里有一个很好的部分解释如何在 Virtualbox 上使用 NAT 进行端口转发:

http://www.virtualbox.org/manual/ch06.html#natforward

我不确定您为什么会看到这种行为,您可以发布您的配置吗?

另一个(潜在)解决方案是使用桥接网络。我个人认为桥接网络更容易配置。如果我觉得需要防火墙,我会从客户机配置它。您可以使用 ufw 轻松将端口 80 限制到您的主机或局域网。

sudo ufw enable
sudo ufw default deny
# change "192.168.0.10" to your host
sudo ufw allow proto tcp from 192.168.0.10 to any port 22
# Or for you LAN
sudo ufw allow proto tcp from 192.168.0.0/24 to any port 80

如果愿意,您可以将“任何”更改为您的 IP。

答案3

我可以通过以 root 身份运行 VirtualBox 来转发端口。此限制只是操作系统的问题,与 VirtualBox 本身无关。

只需使用以下命令打开 VirtualBox sudo

sudo /path/to/VirtualBox

然后操作系统将允许您使用 1024 以下的端口,当然您应该负责任地这样做:)

相关内容