绑定外部IP - 谷歌云引擎

fre*_*lex 5 google-compute-engine google-cloud-platform

我有一个在 Ubuntu 16.04 上运行的 Google 计算引擎,我想在其中启动 node.js Websocket 服务器。每当我尝试开始侦听外部 IP 时,都会收到错误消息:“无法分配请求的地址”。它适用于我的内部 IP 或 127.0.0.1,但随后我无法从外部访问它。

我已经创建了所有必要的防火墙规则。

当我运行 ifconfig 时,我看不到我的外部 IP。这是一个问题吗?如果是这样,我该如何解决这个问题?我已经尝试设置一个新实例。

并且没有其他进程在该端口上侦听。

Dag*_*ang 3

我猜你是显式绑定到外部IP?您可以尝试省略主机参数,该参数有效地绑定到所有接口,包括内部IP和外部IP: NodeJs:server.listen(port [,hostname] [,backlog] [,callback])

如果你ifconfig在虚拟机上运行,​​你会发现外部IP不存在。我相信外部IP是Compute Engine中的虚拟IP,底层网络基础设施会自动将其转换为内部IP。

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 42:01:0a:80:00:02  
          inet addr:10.128.0.2  Bcast:10.128.0.2  Mask:255.255.255.255
          inet6 addr: fe80::4001:aff:fe80:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
          RX packets:1979 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1363 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:252712 (252.7 KB)  TX bytes:182530 (182.5 KB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Run Code Online (Sandbox Code Playgroud)