【问题标题】:Unable to ping VM in a different subnet residing in the same VPC无法 ping 位于同一 VPC 中的不同子网中的虚拟机
【发布时间】:2020-10-16 20:35:22
【问题描述】:

我有一个 VPC。

在该 VPC 中,我有 subnetA,其 CIDR 范围为 10.238.232.0/27。在同一个 VPC 中,我还有另一个 subnetB,其 CIDR 范围为 192.168.10.0/28

vmA 部署在subnetA,vmB 部署在subnetB

vmA IP --> 10.238.232.9/32
vmB IP --> 192.168.10.2/32

当我从 vmA ping vmB 时,我得到的唯一响应是

# ping 192.168.10.2
PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.

由于我通过控制台登录到 vmB,以下是我在 cosole 上看到的消息

[95544.705578] IPv4: martian source 192.168.10.2 from 10.238.232.9, on dev ens5
[95544.712774] ll header: 00000000: 42 01 c0 a8 0a 02 42 01 c0 a8 0a 01 08 00        B.....B.......
Oct 16 20:29:07 vmB kernel: [95544.705578] IPv4: martian source 192.168.10.2 from 10.238.232.9, on dev ens5
Oct 16 20:29:07 vmB kernel: [95544.712774] ll header: 00000000: 42 01 c0 a8 0a 02 42 01 c0 a8 0a 01 08 00        B.....B.......

为了进行故障排除,我允许 VPC 的所有入口和出口流量。我仍然无法 ping 跨子网。

在子网内 Ping 虚拟机工作正常。

既然我也允许使用 FW 规则的所有流量,为什么我无法跨子网 ping 虚拟机?

【问题讨论】:

  • 你能分享更多关于虚拟机配置的信息吗?操作系统、网络配置……
  • 你能提供你使用的操作系统吗(它是 GCP 提供的原版镜像吗?),完整的“ip addr”、“sysctl --system”和“iptables -L”输出?

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


【解决方案1】:

在默认 VPC 中,有一些 pre-polutated firewall rules 允许子网之间进行内部通信,因为您似乎正在使用自定义 VPC,您需要根据需要手动创建防火墙规则,但由于您创建了一个许可防火墙规则 (允许范围内所有实例的 Ingress/Egress 0.0.0.0/0) 应该足够了。

要丢弃/确认您的 VPC 中的任何问题,您可以利用 "Connectivity Tests" 来模拟您的实例之间的流量,输出将让您深入了解该问题,两种情况下的测试结果都是 PASS 或 FAIL考虑到许多网络组件(防火墙规则、路由、对等互连、混合连接等),您会看到此流程,如果您的 GCP 配置中缺少某些内容,您会注意到它,另一方面,如果测试结果为 PASS,那么大多数问题可能存在于您的虚拟机配置中,一个不错的选择是运行数据包捕获并查看数据包是否实际到达您的虚拟机并被丢弃,例如,安装 tcpdump 并在 vmB 中运行以下命令(根据需要进行修改) :

tcpdump -i ens5 src 10.238.232.9 icmp 

如果数据包被丢弃,请检查您的 iptables 和网络配置,如 cmets 中的建议,iptables -Lip route 命令的输出可能很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    相关资源
    最近更新 更多