识别和修复 ICMP 问题

本教程介绍如何以迭代方式使用连接测试来识别和解决网络连接问题。

在本例中,Virtual Private Cloud (VPC) 防火墙规则会阻止一个虚拟机 (VM) 实例的外部 IP 地址使用 ICMP 协议来 ping 另一个虚拟机的外部 IP 地址。

由于虚拟机之间的通信问题通常是网络连接问题,因此连接测试可让您了解有关可能的配置问题,以便您解决。然后,您可以再次运行连接测试以验证是否解决了相应问题。

概览

在本例中,您已在 VPC 网络的同一个子网中配置两个虚拟机实例。两个虚拟机都有外部 IP 地址。当您通过将 ping 数据包从 vm1 发送到外部 IP 地址 vm2 来测试它们之间的连接时,ping 不起作用。

解决两个虚拟机之间被拒绝的 ping 问题。
解决两个虚拟机之间被拒绝的 ping 问题

准备工作

在开始本教程之前,请按照创建和运行 Connectivity TestsBefore you begin 部分中的所有步骤进行操作。

查看防火墙规则的工作原理也会有所帮助。

配置网络资源

在本部分中,您将在测试路径中配置 Google Cloud 资源。

配置 VPC 网络

您可以使用包含虚拟机的现有网络和子网,也可以创建新的网络和子网

配置两个虚拟机实例

  1. 本教程中的虚拟机实例位于同一 VPC 网络和子网中。您可以使用现有的虚拟机,也可以创建新的虚拟机
  2. 创建 vm1vm2 时,请为其分配一个外部 IP 地址。记下这些地址,以备日后使用。

创建防火墙规则 default-deny-outgoing-ping

创建虚拟机后,创建一个出站 VPC 防火墙规则(名为 default-deny-outgoing-ping)。该规则会拒绝从 vm1vm2 的 ICMP 协议。确保此网络中没有现有的防火墙规则可以覆盖此规则。 此外,请确保没有分层防火墙政策规则会覆盖此规则。如需了解详情,请参阅分层防火墙政策概览

请使用下表中的值配置此 VPC 防火墙规则。

VPC 防火墙规则字段
名称 default-deny-outgoing-ping
网络 使用虚拟机所在的 VPC 网络。
优先级 1000
流量方向 出站
对匹配项执行的操作 拒绝
目标 选择网络中的所有实例
目标 IP 地址范围 使用 vm2 的外部 IP 地址。
指定的协议和端口 选中其他协议复选框,然后输入 icmp

创建防火墙规则 default-deny-ingress-to-vm2

创建一个名为 default-deny-ingress-to-vm2 的入站防火墙规则,以拒绝 ICMP 协议使用 vm2 的外部 IP 地址。确保此网络中没有现有的防火墙规则可以覆盖此规则。此外,请确保没有分层防火墙政策规则会覆盖此规则。如需了解详情,请参阅分层防火墙政策概览

请使用下表中的值来创建规则。

VPC 防火墙规则字段
名称 default-deny-ingress-to-vm2
网络 使用虚拟机所在的 VPC 网络。
优先级 65534
流量方向 入站流量
对匹配项执行的操作 拒绝
目标 选择网络中的所有实例
来源 IP 地址范围 使用 vm1 的外部 IP 地址。
指定的协议和端口 选中其他协议复选框,然后输入 icmp

运行首次 Trace

使用 Google Cloud Console 运行跟踪记录以确定 ICMP (ping) 数据包是否可通过 vm1 发送到 vm2 的外部 IP 地址。运行此跟踪记录后,Connectivity Tests 会告知您由于 VPC 防火墙规则 default-deny-outgoing-ping,跟踪记录数据包已被丢弃。

使用下表输入跟踪记录的值。

字段名称
协议 icmp
来源 IP 地址

使用 vm1 的外部 IP 地址。

选中这是 Google Cloud 中使用的 IP 地址复选框。

来源 IP 地址或服务项目 验证 vm1 的项目名称。
目标 IP 地址

使用 vm2 的外部 IP 地址。

选中这是 Google Cloud 中使用的 IP 地址复选框。

目标 IP 地址或服务项目 验证 vm2 的项目名称。

以下 Cloud Console 快照显示防火墙规则 default-deny-outgoing-ping 的跟踪记录数据包已被丢弃。

包含被拒传出 ping 的跟踪记录的控制台界面快照。
包含被拒传出 ping 的跟踪记录的控制台界面快照

停用防火墙规则 default-deny-outgoing-ping 后,运行第二次跟踪记录

  1. 如需允许对 vm2 进行 ping 测试,请暂时停用 VPC 防火墙规则 default-deny-outgoing-ping
  2. 配置成功更新后,再次运行跟踪记录。
  3. 跟踪记录再次失败。由于此防火墙规则拒绝将入站 ICMP 数据包发送到 vm2 的外部 IP 地址,因此该数据包已被丢弃。

以下 Cloud Console 快照显示入站跟踪记录数据包可以通过 Cloud NAT,但由于前面提到的防火墙规则而无法到达 vm2

跟踪记录的控制台界面快照无法到达 vm2。
跟踪记录的控制台界面快照无法到达 vm2

创建防火墙规则 allow-ping-from-known-ranges

如需允许通往 vm2 的外部 IP 地址的入站流量,请配置一个名为 allow-ping-from-known-ranges 的新 VPC 防火墙规则。由于允许所有入站 ICMP 数据包进入 VPC 网络存在安全风险,因此,请仅指定一小部分来源范围允许将 ICMP 数据包发送到 vm2 的外部 IP 地址。

就本教程而言,此源范围仅包含 vm1 的外部 IP 地址,但请检查所有现有的防火墙规则或规则优先级,以确保它们不会覆盖此新规则。 此外,请确保没有分层防火墙政策规则会覆盖此规则。如需了解详情,请参阅分层防火墙政策概览

请使用下表中的值来配置规则。

VPC 防火墙规则字段
名称 allow-ping-from-known-ranges
网络 使用包含两个虚拟机的网络的名称。
优先级 1000
流量方向 入站流量
对匹配项执行的操作 允许
目标 选择网络中的所有实例
来源过滤 IP 范围
来源 IP 地址范围 使用 vm1 的外部 IP 地址。
指定的协议和端口 选中其他协议复选框,然后输入 icmp

运行第三次 Trace

创建 allow-ping-from-known-ranges 防火墙规则后,再次 ping vm2 的外部 IP 地址。ping 正常,问题已解决。

两个虚拟机之间允许的 ping。
两个虚拟机之间允许的 ping

您可以通过对包含新防火墙规则的更新配置执行另一个跟踪记录来验证此结果。这次,Connectivity Tests 会告知您数据包已递送到 vm2,并且匹配的防火墙规则 allow-ping-from-known-ranges 允许将入站 ICMP 数据包发送到 vm2 的外部 IP 地址。

成功跟踪到 vm2 的控制台界面快照。
成功跟踪到 vm2
的控制台界面快照

清除数据

如果需要,您可以停用或删除为本教程创建的以下所有 Google Cloud 资源。确保这些不是生产资源。如果您决定停用资源,请查看 Compute Engine 价格页面所有网络价格页面,以确保您不需要再为其付费。

  1. 停用删除防火墙规则。
  2. 停用删除虚拟机。
  3. 删除 VPC 子网。
  4. 删除 VPC 网络

后续步骤