为什么 Google Cloud 实例标签会丢弃数据包?

为什么 Google Cloud 实例标签会丢弃数据包?

我有一个 VPC,其中有两个 Compute Engine VM 实例。其中一个实例vpn-server充当本地计算机集群的 VPN。另一个实例test-instance已配置实例标签,如果要访问 ,它route-through-vpn会将流量路由到。vpn-server10.10.0.0/19

还有一个带有route-through-vpn实例标记的 AppEngine 实例。其中运行的 Web 应用可以直接连接到我们的本地集群。

这个设置已经运行了一年多,一切正常。但昨天,一小部分 IP 地址突然停止工作了。

我所说的“停止工作”是指:

  • 如果您已登录,仍然可以通过 SSH 连接到非工作 IP 地址vpn-server
  • 但源自的流量test-instance无法到达这些 IP。

其中一个失败的 IP 是10.10.0.8。一个仍能正常工作的 IP 是10.10.0.47。据我所知,所有地址都正确匹配地址范围10.10.0.0/19

为了进行调试,我登录到vpn-servertest-instance并尝试将 ICMP 数据包从 发送test-instance到集群中的各个 IP 地址。我还在tcpdump上运行了vpn-server以便能够看到通过的流量。

对于仍在运行的 IP 地址,我在 的输出中看到了 ICMP 数据包tcpdump,这与预期一致。但对于不再运行的 IP 地址,我在 中看不到任何内容tcpdump,这表明 Gcloud 的路由层甚至没有将流量发送到我的vpn-server

为了进一步测试,我关闭了一台流量路由正常的本地计算机,并尝试对其进行 ping。ICMP 回显请求数据包出现在输出中,但tcpdump没有回复,这与预期完全一致。

Google Cloud 的路线没有太多选择,并且没有可用的信息可以帮助我进一步调查,所以现在只能靠某人碰巧知道为什么会发生这种情况。

有谁解决过这样的问题或者知道可能是什么原因造成的?

答案1

这似乎更像是实例配置或路由表问题,如果我理解正确的话,IP 地址 10.10.xx/19 来自您的本地。我们可以丢弃防火墙规则,因为我假设您有一条类似于“允许来自源/目标 10.10.0.0 /19 的入口/出口流量”的规则,如果您看到 IP 地址 10.10.0.47 仍然有效,则意味着防火墙规则正在运行,这似乎更像是一种路由行为,您是否尝试过清理实例内的路由表?它可以帮助刷新您的路由表。我知道 GCP 有一个选项,您可以在其中使用实例作为网关这听起来和你正在做的事情很相似。

相关内容