本教程介绍如何以迭代方式使用连接测试来识别和解决网络连接问题。
在本例中,Virtual Private Cloud (VPC) 防火墙规则会阻止一个虚拟机 (VM) 实例的外部 IP 地址使用 ICMP 协议来 ping 另一个虚拟机的外部 IP 地址。
由于虚拟机之间的通信问题通常是网络连接问题,因此连接测试可让您了解有关可能的配置问题,以便您解决。然后,您可以再次运行连接测试以验证是否解决了相应问题。
概览
在本例中,您已在 VPC 网络的同一个子网中配置两个虚拟机实例。两个虚拟机都有外部 IP 地址。当您通过将 ping 数据包从 vm1
发送到外部 IP 地址 vm2
来测试它们之间的连接时,ping 不起作用。
准备工作
在开始本教程之前,请按照创建和运行 Connectivity Tests 的 Before you begin
部分中的所有步骤进行操作。
查看防火墙规则的工作原理也会有所帮助。
配置网络资源
在本部分中,您将在测试路径中配置 Google Cloud 资源。
配置 VPC 网络
您可以使用包含虚拟机的现有网络和子网,也可以创建新的网络和子网。
配置两个虚拟机实例
- 本教程中的虚拟机实例位于同一 VPC 网络和子网中。您可以使用现有的虚拟机,也可以创建新的虚拟机。
- 创建
vm1
和vm2
时,请为其分配一个外部 IP 地址。记下这些地址,以备日后使用。
创建防火墙规则 default-deny-outgoing-ping
创建虚拟机后,创建一个出站 VPC 防火墙规则(名为 default-deny-outgoing-ping
)。该规则会拒绝从 vm1
到 vm2
的 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 地址 | 使用 选中这是 Google Cloud 中使用的 IP 地址复选框。 |
来源 IP 地址或服务项目 | 验证 vm1 的项目名称。 |
目标 IP 地址 | 使用 选中这是 Google Cloud 中使用的 IP 地址复选框。 |
目标 IP 地址或服务项目 | 验证 vm2 的项目名称。 |
以下 Google Cloud 控制台快照显示防火墙规则 default-deny-outgoing-ping
的跟踪记录数据包已被丢弃。
停用防火墙规则 default-deny-outgoing-ping
后,运行第二次跟踪记录
- 如需允许对
vm2
进行 ping 测试,请暂时停用 VPC 防火墙规则default-deny-outgoing-ping
。 - 配置成功更新后,再次运行跟踪记录。
- 跟踪记录再次失败。由于此防火墙规则拒绝将入站 ICMP 数据包发送到
vm2
的外部 IP 地址,因此该数据包已被丢弃。
以下 Google Cloud 控制台快照显示入站跟踪记录数据包可以通过 Cloud NAT,但由于前面提到的防火墙规则而无法到达 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 正常,问题已解决。
您可以通过对包含新防火墙规则的更新配置执行另一个跟踪记录来验证此结果。这次,连接测试会告知您数据包已递送到 vm2
,并且匹配的防火墙规则 allow-ping-from-known-ranges
允许将入站 ICMP 数据包发送到 vm2
的外部 IP 地址。
清理
如果需要,您可以停用或删除为本教程创建的以下所有 Google Cloud 资源。确保这些不是生产资源。如果您决定停用资源,请查看 Compute Engine 价格页面和所有网络价格页面,以确保您不需要再为其付费。