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隧道,但是不需要在每次重新启动主机时进行手动干预(重新输入密码)。

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

    相关文章:

    kubernetes - Kubernetes容器内的VirtualBox

    virtualbox - 使用Vagrant获取当前VirtualBox状态

    linux - SSH本地端口转发无法从外部访问

    virtualbox - 用自定义的Vagrantfile包装基本盒

    networking - 在VirtualBox 4.1.2上的Android x86中没有网络

    linux - 在VirtualBox中安装Oracle Enterprise Linux 6.6

    iptables:在不同的接口(interface)和端口上转发请求

    ubuntu - 如何根据请求的域将SSH转发到GitLab Docker容器

    ssh - net.schmizz.sshj.userauth.UserAuthException : Exhausted available authentication methods

    node.js - VirtualBox端口转发问题