【问题标题】:Bind external IP - google cloud engine绑定外部IP——谷歌云引擎
【发布时间】:2016-08-11 01:05:11
【问题描述】:

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

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

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

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

【问题讨论】:

  • 测试外部 IP 可访问性的简单方法是在 VM 中运行 python -m SimpleHTTPServer <port> 并尝试从 Internet 访问它。一旦我设置了防火墙,它总是对我有用。
  • stackoverflow.com/questions/38858086/…。外部 IP 不在本地路由表中,因此您无法绑定到它 - 但所有请求在到达您的 VM 之前都经过 DNAT 处理到内部 IP。

标签: google-compute-engine google-cloud-platform


【解决方案1】:

我猜你是明确绑定到外部 IP 的?您可以尝试省略 host 参数,该参数有效地绑定到所有接口,包括内部 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)

【讨论】:

猜你喜欢
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
相关资源
最近更新 更多