为什么我的 Windows 主机不再能在我的 Ubuntu 客户机中看到 0.0.0.0:3000 处的 Rails?

为什么我的 Windows 主机不再能在我的 Ubuntu 客户机中看到 0.0.0.0:3000 处的 Rails?

我之前在 Windows 10 主机上运行 VMWare Player 托管 Ubuntu 18.04 客户虚拟机。在我的 Ubuntu 客户机中,我能够启动绑定到 0.0.0.0:3000(Ubuntu 客户机内的任何网络适配器,端口 3000)的 Ruby on Rails 服务器。使用此配置,我能够使用以下 URL 从主机上的 Chrome 访问我的服务器:

http://0.0.0.0:3000

昨天,我购买了 VMWare Workstation Pro 升级版。起初,我的 Ubuntu VM 甚至无法启动,但后来我在 Windows 10 的“添加/删除程序”下使用了“修复”,现在我能够启动我的 Ubuntu VM。但是,现在我遇到了另一个问题:我的主机无法访问我的客户机http://0.0.0.0:3000

我的 Ubuntu 客户虚拟机配置为使用 NAT 作为网络适配器。

看来我的虚拟机的网络配置发生了一些变化。也许我取消了一些设置,使主机能够看到 IP 地址为 0.0.0.0 的客户机。

为了访问 0.0.0.0 的服务器,我需要什么网络适配器(或其他设置)?

我已经看到了对类似问题的其他答复,我想强调的是,我已经阅读了其他问题,但细节略有不同:

  • 使用 VirtualBox 代替 VMWare
  • 这些解决方案通常会告诉用户查找虚拟机的 IP 地址 - 对于使用我之前的配置的我来说,这没有必要。我更希望使用 0.0.0.0 来使其工作,这样我就不必每次都查找虚拟机的 IP。
  • 有些解决方案有复杂的答案——我确信上次我没有做任何花哨的事情来让它工作,我只是不知道当我使用“修复”时发生了什么变化。

回答一些问题:

netstat -ano | findstr LISTENINGWindows主机上的输出为:

TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1156
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       7008
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       5548
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       5548
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       9844
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5432           0.0.0.0:0              LISTENING       6800
  TCP    0.0.0.0:5433           0.0.0.0:0              LISTENING       6560
  TCP    0.0.0.0:6109           0.0.0.0:0              LISTENING       5152
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       18224
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       912
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       832
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1872
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING       2188
  TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING       2820
  TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING       4452
  TCP    0.0.0.0:49670          0.0.0.0:0              LISTENING       4612
  TCP    0.0.0.0:49755          0.0.0.0:0              LISTENING       904
  TCP    127.0.0.1:5354         0.0.0.0:0              LISTENING       5000
  TCP    127.0.0.1:5939         0.0.0.0:0              LISTENING       5560
  TCP    127.0.0.1:8307         0.0.0.0:0              LISTENING       7008
  TCP    127.0.0.1:28385        0.0.0.0:0              LISTENING       4
  TCP    127.0.0.1:49350        0.0.0.0:0              LISTENING       18336
  TCP    127.0.0.1:49351        0.0.0.0:0              LISTENING       18524
  TCP    127.0.0.1:49751        0.0.0.0:0              LISTENING       11472
  TCP    127.0.0.1:58091        0.0.0.0:0              LISTENING       5248
  TCP    127.0.0.1:58101        0.0.0.0:0              LISTENING       14360
  TCP    127.0.0.1:65001        0.0.0.0:0              LISTENING       5284
  TCP    192.168.1.68:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.17.1:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.33.1:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.47.1:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.56.1:139       0.0.0.0:0              LISTENING       4
  TCP    [::]:135               [::]:0                 LISTENING       1156
  TCP    [::]:443               [::]:0                 LISTENING       7008
  TCP    [::]:445               [::]:0                 LISTENING       4
  TCP    [::]:5357              [::]:0                 LISTENING       4
  TCP    [::]:5432              [::]:0                 LISTENING       6800
  TCP    [::]:5433              [::]:0                 LISTENING       6560
  TCP    [::]:7680              [::]:0                 LISTENING       18224
  TCP    [::]:49664             [::]:0                 LISTENING       912
  TCP    [::]:49665             [::]:0                 LISTENING       832
  TCP    [::]:49666             [::]:0                 LISTENING       1872
  TCP    [::]:49667             [::]:0                 LISTENING       2188
  TCP    [::]:49668             [::]:0                 LISTENING       2820
  TCP    [::]:49669             [::]:0                 LISTENING       4452
  TCP    [::]:49670             [::]:0                 LISTENING       4612
  TCP    [::]:49755             [::]:0                 LISTENING       904
  TCP    [::1]:8307             [::]:0                 LISTENING       7008

Ubuntu 客户机上的输出netstat -ntlup为:

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8084            0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      2419/puma 4.3.3 (tc 
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:6942          0.0.0.0:*               LISTEN      2020/java           
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:63342         0.0.0.0:*               LISTEN      2020/java           
tcp6       0      0 ::1:631                 :::*                    LISTEN      -                   
udp        0      0 0.0.0.0:35758           0.0.0.0:*                           -                   
udp        0      0 127.0.0.53:53           0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:631             0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -                   
udp6       0      0 :::36455                :::*                                -                   
udp6       0      0 :::5353                 :::*

这里还有一条有趣的信息:我可以从 Windows 访问 Rails 服务器的 IP 地址是192.168.47.128。请注意,此地址确实不是出现在 Windows 主机上的 netstat 地址列表中,但我能够以某种方式访问​​服务器。可能netstat -ano | findstr LISTENING不是合适的命令;我将研究 Windows 上的 netstat 参数。

编辑 - 我刚刚意识到我还没有配置 NAT 端口转发,但现在已经配置了,但仍然没有从主机上的 0.0.0.0:3000 获得任何信息。以下是 VMWare 网络编辑器设置的图片:

在此处输入图片描述

设置端口转发后,看起来 0.0.0.0:3000 正在我的 Windows 机器上监听,但我仍然无法在 Chrome 中连接。这是netstat -ano | findstr LISTENING现在的输出:

 TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1156
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       7008
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       5548
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       5548
  TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       12252
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       9844
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5432           0.0.0.0:0              LISTENING       6800
  TCP    0.0.0.0:5433           0.0.0.0:0              LISTENING       6560
  TCP    0.0.0.0:6109           0.0.0.0:0              LISTENING       5152
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       18224
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       912
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       832
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1872
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING       2188
  TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING       2820
  TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING       4452
  TCP    0.0.0.0:49670          0.0.0.0:0              LISTENING       4612
  TCP    0.0.0.0:49755          0.0.0.0:0              LISTENING       904
  TCP    127.0.0.1:5354         0.0.0.0:0              LISTENING       5000
  TCP    127.0.0.1:5939         0.0.0.0:0              LISTENING       5560
  TCP    127.0.0.1:8307         0.0.0.0:0              LISTENING       7008
  TCP    127.0.0.1:28385        0.0.0.0:0              LISTENING       4
  TCP    127.0.0.1:49350        0.0.0.0:0              LISTENING       18336
  TCP    127.0.0.1:49351        0.0.0.0:0              LISTENING       18524
  TCP    127.0.0.1:49751        0.0.0.0:0              LISTENING       11472
  TCP    127.0.0.1:58091        0.0.0.0:0              LISTENING       5248
  TCP    127.0.0.1:58101        0.0.0.0:0              LISTENING       14360
  TCP    127.0.0.1:65001        0.0.0.0:0              LISTENING       5284
  TCP    192.168.1.68:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.17.1:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.33.1:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.47.1:139       0.0.0.0:0              LISTENING       4
  TCP    192.168.56.1:139       0.0.0.0:0              LISTENING       4
  TCP    [::]:135               [::]:0                 LISTENING       1156
  TCP    [::]:443               [::]:0                 LISTENING       7008
  TCP    [::]:445               [::]:0                 LISTENING       4
  TCP    [::]:5357              [::]:0                 LISTENING       4
  TCP    [::]:5432              [::]:0                 LISTENING       6800
  TCP    [::]:5433              [::]:0                 LISTENING       6560
  TCP    [::]:7680              [::]:0                 LISTENING       18224
  TCP    [::]:49664             [::]:0                 LISTENING       912
  TCP    [::]:49665             [::]:0                 LISTENING       832
  TCP    [::]:49666             [::]:0                 LISTENING       1872
  TCP    [::]:49667             [::]:0                 LISTENING       2188
  TCP    [::]:49668             [::]:0                 LISTENING       2820
  TCP    [::]:49669             [::]:0                 LISTENING       4452
  TCP    [::]:49670             [::]:0                 LISTENING       4612
  TCP    [::]:49755             [::]:0                 LISTENING       904
  TCP    [::1]:8307             [::]:0                 LISTENING       7008

好的,我发现我可以通过以下方式访问我的客户虚拟机:127.0.0.1:3000使用上述配置,但仍然无法使用 0.0.0.0。我想这对我来说已经足够好了,但我仍然想知道 0.0.0.0 之前是如何工作的。

这似乎是一个微妙的问题。许多 Google 搜索结果指出,将服务器进程 (rails) 绑定到 0.0.0.0 是有意义的,但尝试从浏览器访问 0.0.0.0 作为 IP 地址实际上没有任何意义,因为它相当于一个通配符。

这就引出了一个问题:这在 Mac 和 Ubuntu 上是如何工作的?我看到其他帖子证实,在 Ubuntu 或 Mac 机器上能够正常访问 0.0.0.0:3000 处的开发服务器,但在 Windows 上“有些不同”。那是什么?

相关内容