22

我已阅读 VirtualBox 端口转发指南、本站点和其他站点中的类似问题,但找不到解决方案。

UFW 在 Guest OS (Ubuntu) 上启用,端口 80 和 22 已打开。我可以从主机 ssh 到 ubuntu,并且可以从主机浏览器访问 ubuntu 站点。

在 Guest 上,我设置了 Nat 和 hostonly (vboxnet3) 适配器。还开了路由器80端口(192.168.1.90)Guest ip是192.168.70.10

所以在访客设置> Nat >端口转发中,我输入了:

TCP 主机 IP:192.168.1.90 主机端口:80 访客 IP:192.168.70.10 访客端口:80

但是,此设置不起作用。如果您将我引向正确的道路,我将不胜感激。

4

3 回答 3

31

正如威廉所提到的,除非它们以 root 身份运行,否则 linux/unix 操作系统不会让进程侦听 < 1024 的端口。您可以以 root 身份运行 VirtualBox,尽管我已经阅读了关于这样做的可怕警告。这可能是非常不安全的。

相反,在主机系统上设置 Apache2 以侦听端口 80(它应该已经设置好了),但不是在主机上为网站提供服务,而是让它代理流量到某个更高的端口 - 比如 8080 - on主人。

然后,让 VirtualBox 将该更高端口转发到来宾操作系统端口 80。

Apache 设置将是这样的:

  1. 安装 HTTP 代理模块

    a2enmod proxy_http

  2. 确保里面/etc/apache2/ports.confListen 80指令

  3. 添加另一个站点/etc/apache2/sites-available或修改默认站点(或只是将其添加ports.conf

    <虚拟主机 *:80>
        ProxyPreserveHost 开启
        代理请求关闭
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
    </虚拟主机>
    
  4. 弹跳阿帕奇

    service apache2 restart

VirtualBox 设置为host port: 8080, guest port: 80.

流量会去:

client --> host:80 --> Apache --> host:8080 ---> vbox NAT ----> guest:80

这类似于 William 的 ssh 隧道,但每次重新启动主机时都不需要手动干预(重新输入密码)。

于 2013-11-04T07:14:13.490 回答
9

如果您不习惯以 root 用户身份运行 VirtualBox,这是另一种可行的方法。您可以使用 SSH 设置从主机端口 80 到某个非限制端口(在下面的示例中,我使用端口 8080)的端口转发,然后将其转发到访客端口 80。复杂,但它有效。

  1. 从主机端口 8080 转发到访客端口 80。通过将浏览器指向主机上的端口 8080,确保其正常运行。
  2. 确保 sshd 正在您的主机上运行。在 Mac OS X 中,转到System Preferences -> Internet & Wireless -> Sharing并确保Remote Login已选中。
  3. 在您的主机上成为 root

    $ sudo su -
    
  4. 使用 SSH 将主机端口 80 转发到主机端口 8080(绑定地址\*使端口在所有接口上都可用)。

    # ssh yourusername@localhost -L \*:80::8080
    

请注意,它会要求您使用您用于用户名的任何凭据登录,因此它很可能会询问您的密码,当您成功时,实际登录。

您现在应该能够访问主机上的端口 80,并看到与访问主机上的端口 8080(也就是客户操作系统上的端口 80)相同的服务。

如果您不希望网络上的其他人能够访问该计算机上的端口 80,但仍希望能够从主机系统上的浏览器访问它,请将端口绑定到localhost

# ssh yourusername@localhost -L localhost:80::8080
于 2013-03-06T02:10:54.553 回答
6

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

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

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

可以以 root 身份运行 VirtualBox,这将允许您转发主机端口 < 1024,因此如果您坚持使用 VirtualBox 执行此操作,您可以成为 root 并以这种方式执行 VirtualBox:

$ sudo su -
# VirtualBox
于 2013-02-24T02:02:46.817 回答