Gcloud实例无法ping通另一个实例。

4

我在计算引擎上运行了2个实例,尽管文档说我可以ping并在这些VM之间建立通信,但我做不到。我已经尝试用VM名称和ipv4地址进行ping测试,还尝试为两个VM配置新的工作组,但都没有成功。

以下是链接:https://cloud.google.com/compute/docs/vm-ip-addresses

如果您在同一网络中的实例之间进行通信,则可以使用实例名称向实例发送数据包,并且网络会自动将名称解析为实例的内部IP地址。

我的VM配置:

两者都在同一个网络中 instances Ipconfig from web01 Ipconfig from sql01

我甚至关闭了防火墙

firewall off

但是完全没有连接。

web not pinging sql

有人遇到同样的问题吗?有人知道发生了什么吗? 我该如何解决这个问题?

6个回答

5
这是由于防火墙规则导致的。您需要在实例编辑页面的网络标记部分添加“allow-icmp”网络标记 > enter image description here 您可以在 VPC Network>Firewall rules 部分创建新的网络标记以打开新的端口/协议: enter image description here 编辑 1:请注意,上面截图中使用的0.0.0.0/0子网会向整个互联网开放端口,我仅出于演示目的使用它,以避免共享我的IP。 我强烈建议不要在生产环境中使用该子网作为防火墙规则。 因为互联网是一个黑暗而可怕的地方。

4
这种情况偶尔会发生 - 突然间我们的两个实例无法通过API或ping互相访问。即使我们没有更改任何防火墙规则或其他信息。我想这是一些GCloud故障。
除了重新启动实例,我们尝试过的所有方法都不起作用,重新启动后一切正常。因此,如果有人遇到同样的问题,而且似乎什么都不能解决这个问题,我建议最后手段是重启实例。

这刚刚发生在我身上 - 重启虚拟机后,ping命令就可以工作了。防火墙规则或虚拟机配置没有做任何更改。太奇怪了。 - Kid_Learning_C

2
每个Google Compute Engine中的网络都有自己的防火墙配置,其默认情况下会阻止流入到虚拟机的流量。请参阅防火墙文档,了解默认网络的配置以及如何将类似规则应用于您的自定义网络。

2
我可以从我的计算机对每个实例进行ping测试,但它们之间无法互相ping通。有一个防火墙规则允许来自0.0.0.0/0的ICMP流量进入rede-google-cloud。问题是我的两个实例在同一网络上,这意味着流量不会通过任何路由器。我是否遗漏了什么? 谢谢帮助。 - Y Melo
这应该足够了 - 当我添加了一个规则为0.0.0.0/0,协议icmp,并且将'适用于标签'留空时,我能够从同一网络中的Windows和Linux VMs进行ping测试(相同和不同子网)。Windows中的网络是否完全通过DHCP配置,还是有一些手动配置?您尝试过其他操作系统版本吗?您的GCE网络上是否有任何非默认路由?您有机会关闭(或甚至删除/重新创建)实例以查看问题是否是某个地方的错误缓存吗? - Angus Davis
我在同一网络上创建了2个Debian机器,并且它们之间的ping命令可以正常工作。然后我创建了一个新的Windows实例,我可以在Debian和Windows新实例之间进行ping操作。但是我的另外两个实例仍然无法访问。我将使用新实例重新开始尝试,看看是否能够解决问题。 - Y Melo
我不知道发生了什么事情,但我创建了两个新的Windows实例并且ping命令可以工作,但旧的实例无法工作。 - Y Melo
我曾经遇到过这个问题,Angus说得对 - 我不得不添加3个单独的规则以进行内部访问 - 从172.16.16.0/24进入 - 一个TCP规则,一个ICMP规则,一个UDP规则(全局规则无法正常工作)。现在一切都可以ping通并进行文件共享。因此,请检查所有防火墙,首先关闭它们,然后重新启用。 - Rob

2

确保防火墙规则包括GCE子网。在您的情况下,这意味着允许icmp协议通过10.10.0.0/24。

我不确定为什么防火墙规则适用于网络子网,但显然它们确实适用。


0
如果您没有更改网络和防火墙规则,并且使用默认的网络和防火墙规则,那么只需编辑hosts文件(在所有虚拟机上打开hosts,复制每个虚拟机的hosts行并添加其所有其他虚拟机),然后尝试ping。我已经在三个CentOS实例之间尝试过,它可以正常工作。

0

确保重新启动虚拟机上的网络以使其正常工作。 这对我帮助很大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接