从主机端口80到VirtualBox端口80的端口转发不起作用

时间:2012-07-09 03:05:39

标签: virtualbox portforwarding

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

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

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

所以在访客设置> Nat>端口转发我把:

TCP host-ip:192.168.1.90 host-port:80 guest-ip:192.168.70.10 guestost-port:80

但是,此设置不起作用。如果你指引我走正确的路,我感激不尽。

3 个答案:

答案 0 :(得分:27)

正如威廉所说,linux / unix操作系统不允许进程监听端口< 1024,除非它们以root身份运行。你可以以root身份运行VirtualBox,虽然我已经阅读了关于这样做的可怕警告。这可能是非常不安全的。

相反,在主机系统上设置Apache2以侦听端口80(它应该已经设置好了),但不是在主机上提供服务,而是将代理流量提供给更高端口 - 比方说, 8080 - 在主持人身上。

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

Apache设置将是这样的:

  1. 安装HTTP代理模块

    a2enmod proxy_http

  2. 确保/etc/apache2/ports.conf中有Listen 80指令

  3. /etc/apache2/sites-available中添加其他网站或修改默认网站(或者只是在ports.conf中点击此内容)

    <VirtualHost *:80>
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
    </VirtualHost>
    
  4. 反弹apache

    service apache2 restart

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

    交通将会:

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

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

答案 1 :(得分:8)

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

  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
    
  5. 请注意,它会要求您使用您的用户名使用的任何凭据登录,因此很可能会要求您输入密码,当您成功时,实际上会让您登录。<​​/ p>

    您现在应该能够在主机上点击端口80并看到与在主机上命名端口8080相同的服务,即客户操作系统上的端口80.

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

    localhost

答案 2 :(得分:6)

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

  

转发主机端口&lt; 1024不可能:

     

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

可以以root身份运行VirtualBox,这将允许您转发主机端口&lt; 1024,所以如果你坚持用VirtualBox做这件事,你可以成为root用户并以这种方式执行VirtualBox:

$ sudo su -
# VirtualBox