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

标签 virtualbox portforwarding

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

UFW 在 Guest OS (Ubuntu) 上启用,端口 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 访客端口:80

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

最佳答案

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

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

然后,让 VirtualBox 将该更高端口转发到 guest 操作系统端口 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 隧道,但每次重新启动主机时都不需要手动干预(重新输入密码)。

    关于virtualbox - 从主机端口 80 到 VirtualBox 端口 80 的端口转发不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388657/

    相关文章:

    oracle - 在 Windows 10 中打开 Oracle VM Virtualbox 时出现问题

    预创建检查 : "We support Virtualbox starting with version 5 的 docker 错误

    linux - EC2 重启后无法通过 Web 访问 Tomcat

    macos - 在Mac OS上安装Virtual Box-未加载内核驱动程序

    android - Genymotion 无法在 Windows 10 上加载 VirtualBox 引擎

    android - Genymotion : Initialize engine : Failed (moments ago)

    redirect - 通过ssh隧道进行ftp

    macos - 将本地IP映射到外部/主机IP…IP转发?

    windows - 如何在 Windows XP 中转发进程的 TCP/IP 流量?

    docker - ssh端口转发语法说明