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

原文 标签 virtualbox portforwarding

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

在 guest 操作系统(Ubuntu)上启用了UFW,端口80和22已打开。我可以从主机SSH到ubuntu,也可以从主机浏览器访问ubuntu站点。

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

因此,在访客设置> Nat>端口转发中,我输入:

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

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

最佳答案

正如William提到的那样,除非以root身份运行,否则linux / unix操作系统将不允许进程监听<1024端口。您可以以root用户身份运行VirtualBox,尽管我已阅读过这样做的可怕警告。这可能是非常不安全的。

而是在主机系统上设置Apache2以侦听端口80(应该已经设置了端口80),但是与其在主机上提供网站,不如在主机上服务网站,而是将流量代理到某个更高的端口(例如8080)主人。

然后,让VirtualBox将那个更高的端口转发到 guest OS端口80。

Apache设置如下所示:

  • 安装HTTP代理模块
    a2enmod proxy_http
  • 确保/etc/apache2/ports.conf中包含Listen 80指令
  • /etc/apache2/sites-available添加另一个站点或修改默认站点(或仅将其打在ports.conf中)
    <VirtualHost *:80>
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
    </VirtualHost>
    
  • bounce apache

    service apache2 restart

  • The VirtualBox setup would be host port: 8080, guest port: 80.

    Traffic would go:

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

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

    相关文章:

    encryption - 如何加密VNC连接? SSH端口转发?

    c++ - 使用UPnP进行转发

    apache - 如何将我的本地主机公开到WWW? (转发端口?)

    docker - 尝试使用virtualbox启动minikube时出现问题?

    node.js - VirtualBox端口转发问题

    virtualbox - 在iMac'11上的virtualbox的ubuntu 12.04上启用KVM

    ruby - 游走的Segfault错误

    ssh - PuTTY配置等同于OpenSSH ProxyCommand

    command-line-interface - 未知子命令 : 'execute' when using guestcontrol option

    c - 用于MS-DOS的C编译器