使用端口80从主机到guest虚拟机的端口转发,但它不起作用

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

在虚拟盒内设置,我做了一个端口从端口80(主机)转发到80(访客),我在我的主机上打开我的网页浏览器,我去http:// localhost不工作,但如果我去http:// localhost:1080 ,它工作,但我没有使端口转发从1080到80,我的配置没有1080,我想知道为什么它这样做?

我知道端口80将无法工作,直到我以root身份启动虚拟机,但我不知道为什么它实际上端口80 转换为1080,当它可能无法正常工作时…虚拟机中是否存在某些内容看看它不是root并将地址转换为低于1024的地址吗?

VirtualBox手册说 :

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

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

我想这是当主机以root用户身份运行时正确转发端口80的原因。 无论如何,我不知道为什么端口会自动从80变为1080。

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

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

我不确定为什么你会看到你的行为,你能发布你的配置吗?

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

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。

我可以通过以root身份运行VirtualBox来转发端口。 这个限制只是一个操作系统的东西,而不是VirtualBox本身的任何东西。

sudo打开VirtualBox:

 sudo /path/to/VirtualBox 

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