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/

    相关文章:

    linux - 在 CentOS 7 上安装 puppet

    来自 WSL 的 git ssh 无法连接到我们公司的私有(private)内部 git 主机

    ruby - 使用 Ruby/Net::SSH 进行远程数据库连接的本地到远程端口转发

    linux-kernel - 我有一个使用arm交叉编译器构建的vmlinux。我可以使用 virtual box 来启动这个 vmlinux 吗?

    linux - 警告 vboxdrv 内核模块未加载

    macos - Docker 机器超时 - 如何在不破坏机器的情况下修复?

    virtualbox - Vt-x/AMD-V 硬件加速在您的系统上不可用

    java - 使用 JSch 通过 Jumphost 连接到远程主机时为 "reject HostKey"

    linux - SSH端口转发

    java - JSch 多个隧道/跳跃站