V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

VirtualBox 虚拟机转发 Ubuntu 端口为什么不生效,是哪里设置错误了吗?

  •  
  •   LeeReamond · 2021-01-23 20:07:35 +08:00 · 1315 次点击
    这是一个创建于 1434 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,在 windows 上用 vb 跑虚拟机,跑了一个 ubuntu20.04lts 的系统,但是连接性方面有些问题。

    我目前配置了一个桥接网卡,虚拟机和宿主机可以实现通过局域网互相访问,但是我还是想利用一下端口转发,因为有时候直接转发端口可以做到一些更方便的操作,比如直接暴露 docker 端口之类的,用桥接网卡无法实现。

    想要实现的效果是,

    用 node 在 ubuntu 的 0.0.0.0:8080 上开了个网页服务。在 windows 中通过局域网 http://192.168.0.3:8080 是可以访问的,但是我当我在 vb 的虚拟机设置中,设置使用 nat 网卡(另一个网卡,桥接不能转发端口吧)的端口转发,设置由 127.0.0.1:8080 转发到 127.0.0.1:8080

    希望在宿主机上能用 127.0.0.1:8080 访问网页,但是实测连不上

    可能是什么原因造成的呢?

    6 条回复    2021-01-24 10:15:29 +08:00
    carlclone
        1
    carlclone  
       2021-01-23 20:14:12 +08:00
    docker 做端口映射后不也可以通过 http://192.168.0.3:8xxx 的形式访问吗 , 需求是啥
    billlee
        2
    billlee  
       2021-01-23 20:38:53 +08:00
    转发的目的地址不是 127.0.0.1, 应该留空
    hoyixi
        3
    hoyixi  
       2021-01-23 20:43:32 +08:00
    假设虚拟机上 NAT 那块网卡 IP 是 a.b.c.d
    那么应该设置转发:127.0.0.1:8080 => a.b.c.d:8080
    oott123
        4
    oott123  
       2021-01-23 20:56:57 +08:00
    既然是端口转发,那么虚拟机里的监听程序就不能监听 127.0.0.1 这样的 loopback 地址了,需要监听 NAT 网卡的地址或者 0.0.0.0
    像 wsl2 那样方便的本地端口转发背后是有很多魔法的,没法这么简单地实现
    LeeReamond
        5
    LeeReamond  
    OP
       2021-01-24 00:26:34 +08:00
    @hoyixi
    @oott123
    感谢,按大佬说的方法已经解决。但是我不理解为什么不能监听 127.0.0.1 呢,端口转发是什么个原理。

    我理解上是类似反向代理那种感觉,比如客户访问 127.0.0.1:8080,程序会自动去寻找虚拟机 127.0.0.1:8080 的内容,并返回。为什么 127.0.0.1 不行,而 10.2.0.15 可以,0.0.0.0 也行? 虚拟机上服务绑定在 0.0.0.0 很好理解,端口转发的对象是 0.0.0.0 应该怎么理解呢?
    oott123
        6
    oott123  
       2021-01-24 10:15:29 +08:00 via Android   ❤️ 1
    端口转发程序运行在你的主机上,因此它无法访问虚拟机系统内的 loopback 地址(除非在虚拟机上运行 agent ),所以 127.0.0.1 不行。

    至于为什么转发对象是 0.0.0.0 也可以,我觉得应当是 VirtualBox 做了一些特殊处理,读取到了虚拟机对应的 ip 地址,帮你翻译过来了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2840 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:47 · PVG 16:47 · LAX 00:47 · JFK 03:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.