创建和运行 Connectivity Tests

完成本页面上的以下步骤,了解如何运行 Connectivity Tests。

如需修改或删除一个或多个测试,请参阅更新或删除测试

如需了解 Connectivity Tests,请参阅概览

准备工作

请先在 Google Cloud 中设置以下各项,然后才能使用 Connectivity Tests:

  1. 在 Google Cloud Console 中,转到项目选择器页面。

    转到项目选择器

    选择或创建 Google Cloud 项目。

  2. 确保您的 Google Cloud 项目已启用结算功能
  3. 安装 Google Cloud CLI 中的 Google Cloud CLI。如需安装最新版本的 gcloud CLI,请参阅 gcloud CLI 文档

    如需查看所有命令的列表,请参阅 gcloud 命令参考文档

  4. 启用 Network Management API。启用 API 可为您提供以下内容:

    • 使用 Network Management API 的示例 API 调用

      您可以使用 API Explorer 测试 Network Management API 命令。在 Network Management API 参考文档中,使用 Try this API 列了解 API 字段,并运行测试

    • 使用 API Python 客户端的示例代码

      示例代码假设您已构建名为 api 的资源以与 Network Management API 交互。如需构建资源,请使用 build 函数。请参阅以下示例:

      from googleapiclient.discovery import build
      api = build('networkmanagement', 'v1')
      

      如需详细了解 API Python 客户端,请参阅以下内容:

  5. 获取运行和查看测试所需的权限。有关详情,请参阅分配访问权限

运行 Connectivity Tests

运行 Connectivity Tests 测试时,测试输入应采取无源端口的 5 元组形式提供。

以下各个部分介绍了如何对常见用例中所述的来源端点和目标端点运行测试。

在 Google Cloud 控制台中,您可以使用以下任一方式运行 Connectivity Tests:

  • Connectivity Tests 页面,可从网络 > Network Intelligence Center 菜单访问。

  • Compute Engine 虚拟机 (VM) 实例网络接口的网络接口详情页面。如果您使用此页面,则必须使用当前网络接口作为测试的来源目标。此页面仅列出与当前网络接口相关的测试。

您创建的每个测试都会在您创建后立即运行,并存储在 Connectivity Tests 资源中。测试会一直存在,直到您将其删除。

如需在测试操作运行时检查其状态,请参阅检查正在运行的测试操作。 测试操作的示例包括 creatererun

当使用 IP 地址作为来源端点或目标端点时,可能需要指定其他字段。

最佳实践

  • 当测试共享 VPC 服务项目中的端点(虚拟机或 IP 地址)时,从服务项目中运行测试更为方便。这是因为您可以从 Google Cloud 控制台中的下拉框中选择虚拟机或 IP 地址。

    但是,您仍然必须先指定宿主项目,然后再指定 Virtual Private Cloud (VPC) 网络,因为该网络位于宿主项目中。如需了解详情,请参阅在共享 VPC 网络中测试 IP 地址

  • 在 VPC 网络和对等网络或本地网络之间运行测试时,使用本地 IP 地址作为来源端点,并使用 VPC 网络中的虚拟机实例或 IP 地址作为目标端点有助于运行另一个 Connectivity Tests 测试。

    这类测试可验证 Google Cloud 是否按预期将路由发布到本地网络。但是,Connectivity Tests 不会验证本地网络是否已接收并实现了这些路由。

  • Connectivity Tests 需要 20 秒到 120 秒才能接收到配置更新并将其整合到分析中。如果您在配置更改后立即运行测试,则可能无法看到预期的结果。确保在更改配置后等待足够长的时间再运行测试。

    此延迟不适用于实时数据平面分析。因此,您可能会看到实时数据平面分析和配置分析显示的结果之间存在暂时不匹配的情况。例如,如果添加防火墙规则,则实时数据平面分析可能能够访问该规则。但是,您可能需要等待一段时间,配置分析才能访问该防火墙规则。

在具有多个网络接口的虚拟机之间进行测试

本部分介绍如何在虚拟机的非主要网络接口之间进行测试。

控制台

如果您指定具有多个网络接口的虚拟机实例作为测试的来源或目标,则 Connectivity Tests 会提示您从列表中选择网络接口。

或者,从 Compute Engine 虚拟机实例网络接口的网络接口详情页面中运行测试。如果您使用此页面,则必须使用当前网络接口作为测试的来源目标

gcloud 和 API

您必须通过以下任一方式指定用于测试的网络接口:

  • IP 地址和网络 URI
  • IP 地址和虚拟机 URI
  • 网络 URI 和虚拟机 URI

仅为具有多个接口的虚拟机提供 URI,只会选择虚拟机的主接口。

列出项目的所有测试

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 在页面顶部的项目下拉菜单中选择项目。
  3. Connectivity Tests 页面将刷新并显示该项目的测试。

gcloud

如需列出项目拥有的所有测试,请输入以下 gcloud 命令。此命令会显示当前所选项目中的测试。

  gcloud network-management connectivity-tests list

如需列出特定项目中的测试,请指定 PROJECT_ID

  gcloud network-management connectivity-tests list --project=PROJECT_ID

API

如需列出项目拥有的所有现有测试,请使用 projects.locations.global.connectivityTests.list 方法

GET https://networkmanagement.googleapis.com/v1/{parent=projects/PROJECT_ID/locations/global}/connectivityTests
  • PROJECT_ID 替换为包含所要列出测试的项目的 ID。

Python

以下示例代码列出了项目拥有的所有现有测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 list

project_id = "PROJECT_ID"
parent = 'projects/%s/locations/global' % project_id
request = api.projects().locations().global_().connectivityTests().list(parent=parent)
print(json.dumps(request.execute(), indent=4))

PROJECT_ID 替换为包含所要列出测试的项目的 ID。

在 VPC 网络中的虚拟机实例之间进行测试

这些步骤假定两个虚拟机实例都在同一个 Google Cloud 项目中。

控制台

在“Connectivity Tests”的主页面上

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    转到 Connectivity Tests

    其余步骤会自动显示在 Google Cloud 控制台中。

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择虚拟机实例
    2. 来源虚拟机实例菜单中,选择特定的来源虚拟机实例。
    3. 来源网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个虚拟机网络接口,以唯一标识来源位置。

    4. 可选:从列表中选择来源 IP 地址。默认值为来源虚拟机实例的 IP 地址。
  6. 对于目标,执行以下操作:
    1. 目标端点菜单中,选择虚拟机实例
    2. 目标虚拟机实例菜单中,选择特定的目标虚拟机实例。
    3. 目标网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个虚拟机网络接口,以唯一标识目标位置。

    4. 可选:从列表中选择目标 IP 地址。默认值是目标虚拟机实例的 IP 地址。
  7. 注意:对于双栈实例,来源和目标 IP 地址的类型必须相同。例如,您无法测试从具有 IPv4 地址的虚拟机到具有 IPv6 地址的虚拟机的连接。

  8. 目标端口字段中,输入目标端口。
  9. 点击创建
  10. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

在“网络接口详情”页面上

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    前往“虚拟机实例”

  2. 如果尚未选择,请选择包含要为其运行测试的实例的项目。
  3. 点击要用于运行测试的实例。
  4. 对于网络接口,选择要用于运行测试的网络接口。

    如果虚拟机实例具有多个网络接口,请选择一个虚拟机网络接口,以唯一标识目标位置。

  5. 网络分析部分,点击创建 Connectivity Tests 测试,然后执行以下操作:

    1. 测试名称字段中,输入测试的名称。
    2. 协议列表中,选择一个协议。
    3. 来源部分,您可以选择当前网络接口其他

      如果您选择当前网络接口,请执行以下操作:

      1. 目标端点菜单中,选择虚拟机实例
      2. 目标虚拟机实例菜单中,选择相应实例。
      3. 目标网络接口菜单中,选择网络接口。
      4. 可选:选择目标 IP 地址。默认值为目标虚拟机实例的 IP 地址。

      如果您选择其他,请执行以下操作:

      1. 来源端点菜单中,选择虚拟机实例
      2. 源虚拟机实例菜单中,选择实例。
      3. 来源网络接口菜单中,选择网络接口。
      4. 可选:选择来源 IP 地址。 默认值为来源虚拟机实例的 IP 地址。
    4. 目标端口字段中,输入指定目标的目标端口。

    5. 点击创建

  6. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-instance=SOURCE_INSTANCE \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --destination-instance=DESTINATION_INSTANCE \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Terraform

您可以使用 Terraform 资源在 VPC 网络中的两个虚拟机实例之间创建测试。

resource "google_network_management_connectivity_test" "instance_test" {
  name = "conn-test-instances"
  source {
    instance = google_compute_instance.source.id
  }

  destination {
    instance = google_compute_instance.destination.id
    port     = "80"
  }

  protocol = "TCP"
}

resource "google_compute_instance" "source" {
  name         = "source-vm"
  machine_type = "e2-medium"

  boot_disk {
    initialize_params {
      image = data.google_compute_image.debian_9.id
    }
  }

  network_interface {
    network = "default"
    access_config {
    }
  }
}

resource "google_compute_instance" "destination" {
  name         = "dest-vm"
  machine_type = "e2-medium"

  boot_disk {
    initialize_params {
      image = data.google_compute_image.debian_9.id
    }
  }

  network_interface {
    network = "default"
    access_config {
    }
  }
}

data "google_compute_image" "debian_9" {
  family  = "debian-11"
  project = "debian-cloud"
}

API

以下示例测试确定现有网络配置是否允许虚拟机 instance1 ping 虚拟机 instance2

使用 projects.locations.global.connectivityTests.create 方法

 POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
   {
     "source": {
       "instance": "SOURCE_INSTANCE",
       "ipAddress": "SOURCE_IP_ADDRESS",
     },
     "destination": {
       "instance": "DESTINATION_INSTANCE",
       "ipAddress": "DESTINATION_IP_ADDRESS",
     },
     "protocol": "PROTOCOL",
   }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码在两个虚拟机实例之间创建了测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "instance":
          "SOURCE_INSTANCE",
      "ipAddress":
          "SOURCE_IP_ADDRESS",
      "projectId":
          "SOURCE_INSTANCE_PROJECT_ID"
  },
  "destination": {
      "instance":
          "DESTINATION_INSTANCE",
      "ipAddress":
          "DESTINATION_IP_ADDRESS",
      "projectId":
          "DESTINATION_INSTANCE_PROJECT_ID"
  },
  "protocol":
      "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • SOURCE_INSTANCE_PROJECT_ID:来源虚拟机的项目 ID。
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • DESTINATION_INSTANCE_PROJECT_ID:目标虚拟机的项目 ID。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

在 VPC 网络中的专用 IP 地址之间进行测试

此示例假定两个 IP 地址都是同一 Google Cloud 项目和同一 VPC 网络中的专用 IP 地址。

如果要在对等 VPC 网络之间进行测试,请选择每个对等网络的来源网络和目标网络。

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

    其余步骤将自动显示在 Google Cloud 控制台中。

  2. 选择创建 Connectivity Tests 测试

  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 来源部分,执行以下操作:

    1. 来源端点列表中,选择 IP 地址
    2. 来源 IP 地址字段中,输入来源 IP 地址。
    3. 如果来源 IP 地址的 VPC 网络位于当前项目中,请清除这是 Google Cloud 中使用的 IP 地址复选框。

      如果 VPC 网络位于其他项目中,请在来源 IP 地址或服务项目字段中,选择网络所在的项目。

      如果 IP 地址不在 RFC 1918 地址空间内,请选中我确认源端点位于 RFC 1918 地址空间外的范围内复选框。然后,在来源网络列表中,选择包含来源 IP 地址的网络。

  6. 目标部分,执行以下操作:

    1. 目标端点列表中,选择 IP 地址
    2. 目标 IP 地址字段中,输入目标 IP 地址。
    3. 如果目标 IP 地址的 VPC 网络位于当前项目中,请清除这是 Google Cloud 中使用的 IP 地址复选框。

      如果 VPC 网络位于其他项目中,请在目标 IP 地址或服务项目字段中,选择网络所在的项目。

      如果 IP 地址不在 RFC 1918 地址空间内,请选中我确认目标端点位于 RFC 1918 地址空间外的范围中复选框。然后,在目标网络列表中,选择包含目标 IP 地址的网络。

  7. 目标端口字段中,输入有效的目标端口号。该数字必须介于 0 和 65535 之间(含 0 和 65535)。
  8. 点击创建

测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

将命令选项的变量替换为 VPC 网络中的值。

gcloud network-management connectivity-tests create NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --source-network=SOURCE_NETWORK \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-network=DESTINATION_NETWORK \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK:来源 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • DESTINATION_NETWORK:目标 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/network-a
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 协议或 UDP 协议有效。默认端口为 80
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果网络未知,或者您没有访问网络的权限,则可以将网络指定为 GCP_NETWORK,而不是提供网络 URI。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

gcloud network-management connectivity-tests create NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    [--source-network-type=GCP_NETWORK] \
    --destination-instance=DESTINATION_INSTANCE  \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 GCP_NETWORK
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 协议或 UDP 协议有效。默认端口为 80
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果您指定的来源 IP 地址是 Google Cloud 外部的外部 IP 地址,则必须将 networkType 指定为 NON_GCP_NETWORK。将以下命令中的值替换为 VPC 网络中的值。

gcloud network-management connectivity-tests create NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --source-network-type=NON_GCP_NETWORK \
    --destination-ip-address= DESTINATION_IP_ADDRESS \
    --destination-network=DESTINATION_NETWORK \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 NON_GCP_NETWORK
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • DESTINATION_NETWORK:目标 IP 地址所在 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Terraform

您可以使用 Terraform 资源在 VPC 网络中的两个 IP 地址之间创建测试。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

resource "google_network_management_connectivity_test" "default" {
  name = "conn-test-addr"
  source {
    ip_address   = google_compute_address.source_addr.address
    project_id   = google_compute_address.source_addr.project
    network      = google_compute_network.default.id
    network_type = "GCP_NETWORK"
  }

  destination {
    ip_address = google_compute_address.dest_addr.address
    project_id = google_compute_address.dest_addr.project
    network    = google_compute_network.default.id
    port       = "80"
  }

  protocol = "UDP"
}

resource "google_compute_network" "default" {
  name                    = "connectivity-vpc"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "default" {
  name          = "connectivity-vpc-subnet"
  ip_cidr_range = "10.0.0.0/8"
  region        = "us-central1"
  network       = google_compute_network.default.id
}

resource "google_compute_firewall" "default" {
  name    = "allow-incoming-all"
  network = google_compute_network.default.name

  allow {
    protocol = "all"
  }

  source_ranges = ["0.0.0.0/0"]
}

resource "google_compute_address" "source_addr" {
  name         = "src-addr"
  subnetwork   = google_compute_subnetwork.default.id
  address_type = "INTERNAL"
  address      = "10.0.0.42"
  region       = "us-central1"
}

resource "google_compute_address" "dest_addr" {
  name         = "dest-addr"
  subnetwork   = google_compute_subnetwork.default.id
  address_type = "INTERNAL"
  address      = "10.0.0.43"
  region       = "us-central1"
}

resource "google_compute_instance" "source" {
  name         = "source-vm1"
  machine_type = "e2-medium"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = data.google_compute_image.default.id
    }
  }

  network_interface {
    network    = google_compute_network.default.id
    subnetwork = google_compute_subnetwork.default.id
    network_ip = "10.0.0.42"
    access_config {
    }
  }
}

resource "google_compute_instance" "destination" {
  name         = "dest-vm1"
  machine_type = "e2-medium"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = data.google_compute_image.default.id
    }
  }

  network_interface {
    network    = google_compute_network.default.id
    subnetwork = google_compute_subnetwork.default.id
    network_ip = "10.0.0.43"
    access_config {
    }
  }
}

data "google_compute_image" "default" {
  family  = "debian-11"
  project = "debian-cloud"
}

API

本示例测试从来源 IP 地址到目标 IP 地址进行 ping 的能力。

使用 projects.locations.global.connectivityTests.create 方法

  POST https://reachability.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "network": "SOURCE_NETWORK"
    },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "network": "DESTINATION_NETWORK",
      "port": "DESTINATION_PORT",
    },
      "protocol": "PROTOCOL".
  }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK:来源 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • DESTINATION_NETWORK:目标 IP 地址所在 VPC 网络的 URI,例如 projects/myproject/global/networks/network-a
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果 VPC 网络未知,或者您没有访问网络的权限,则可以将网络指定为 GCP_NETWORK,而不是提供网络 URI。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

  POST https://reachability.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?connectivityTestId=TEST_ID'
  {
    "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "networkType": "GCP_NETWORK"
    },
    "destination": {
      "instance": "DESTINATION_INSTANCE",
      "ipAddress": "DESTINATION_IP_ADDRESS"
    },
    "protocol": "PROTOCOL"
  }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 GCP_NETWORK
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果您指定的来源 IP 地址是 Google Cloud 外部的外部 IP 地址,则必须将 networkType 指定为 NON_GCP_NETWORK。将以下命令中的值替换为 Google Cloud 网络的值。

  POST https://reachability.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "networkType": "NON_GCP_NETWORK",

    },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "network": "DESTINATION_NETWORK",
      "port": "DESTINATION_PORT",
    },
    "protocol": "PROTOCOL",
  }'

Python

以下示例代码在两个 IP 地址之间创建一个测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "projectId": "SOURCE_IP_PROJECT_ID"
  },
  "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
      "projectId": "DESTINATION_IP_PROJECT_ID"
  },
  "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_IP_PROJECT_ID:来源 IP 地址的项目 ID。
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • DESTINATION_IP_PROJECT_ID:目标 IP 地址的项目 ID。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

如果 VPC 网络未知,或者您没有访问网络的权限,则可以将网络指定为 GCP_NETWORK,而不是提供网络 URI。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

以下示例在两个 IP 地址之间创建一个测试:

test_input = {
    "source": {
        "ipAddress": "SOURCE_IP_ADDRESS",
        "networkType": "GCP_NETWORK"
    },
    "destination": {
        "ipAddress": "DESTINATION_IP_ADDRESS",
        "port": "DESTINATION_PORT",
        "projectId": "DESTINATION_IP_PROJECT_ID"
    },
    "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
  parent="projects/PROJECT_ID/locations/global",
  testId="TEST_ID",
  body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 GCP_NETWORK
  • DESTINATION_IP_ADDRESS:目标虚拟机的 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • DESTINATION_IP_PROJECT_ID:目标 IP 地址的项目 ID。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

如果您指定的来源 IP 地址是 Google Cloud 外部的外部 IP 地址,则必须将 networkType 指定为 NON_GCP_NETWORK

在共享 VPC 网络中测试 IP 地址

如果拥有共享 VPC 网络,则可以从宿主项目或服务项目创建并运行测试。

以下示例展示了两种情况,并使用了在服务项目中分配的目标 IP 地址。对于每种情况,Google Cloud 控制台中的字段值略有不同。不过,Google Cloud CLI 和 API 调用的命令选项是相同的。

控制台:从宿主

  1. 在 Google Cloud 控制台中,从宿主项目前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 IP 地址
    2. 输入来源 IP 地址。
    3. 选中这是 Google Cloud 中使用的 IP 地址复选框。
    4. 如果这是内部 IP 地址,无法从互联网访问,请选择该地址所在的 VPC 网络。
    5. 如果您的专用 IP 地址在 RFC 1918 地址空间之外,请选中我确认来源端点位于 RFC 1918 地址空间之外的范围内,然后选择包含该 IP 地址的目标网络。
  6. 目标部分,执行以下操作:
    1. 目标端点菜单中,选择 IP 地址
    2. 输入目标 IP 地址。
    3. 选中这是 Google Cloud 中使用的 IP 地址复选框。
    4. 如果这是内部 IP 地址,无法从互联网访问,请选择该地址所在的 VPC 网络。
    5. 如果您的专用 IP 地址在 RFC 1918 地址空间之外,请选中我确认来源端点位于 RFC 1918 地址空间之外的范围内,然后选择包含该 IP 地址的目标网络。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

控制台:从服务

  1. 在 Google Cloud 控制台中,从服务项目前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 IP 地址
    2. 输入来源 IP 地址
    3. 选中这是 Google Cloud 中使用的 IP 地址复选框。
    4. 如果这是内部 IP 地址,无法从互联网访问,请选择该地址所在的 VPC 网络。
  6. 目标部分,执行以下操作:
    1. 目标端点菜单中,选择 IP 地址
    2. 输入目标 IP 地址
    3. 选中这是 Google Cloud 中使用的 IP 地址复选框。
    4. 指定该 IP 地址所在的目标 IP 地址或服务项目
    5. 如果您的专用 IP 地址在 RFC 1918 地址空间之外,请选中标记为 I confirm that the source endpoint resides in a range outside of the RFC 1918 address space(我确认来源端点位于 RFC 1918 地址空间之外的范围内)的复选框,然后选择包含该 IP 地址的目标网络。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

输入以下命令,可测试主机中两个专用 IP 地址以及目标 IP 地址所在的服务项目中的两个专用 IP 地址。将命令选项的变量替换为 VPC 网络中的值。

因为目标 IP 地址在服务项目中,所以请指定服务项目以及宿主项目的网络 URI。在这种情况下,default 表示 host-project 的默认 VPC 网络。

gcloud network-management connectivity-tests create NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --source-project=SOURCE_PROJECT \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-network=DESTINATION_NETWORK \
    --destination-project=DESTINATION_PROJECT \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_PROJECT:来源端点的项目 ID。
  • DESTINATION_IP_ADDRESS:您要在服务项目中测试的内部或外部目标 IP 地址。
  • DESTINATION_NETWORK:宿主项目的 VPC 网络的 URI,例如 projects/host-project/global/networks/default
  • DESTINATION_PROJECT:目标端点的项目 ID,例如名为 service-project 的项目,表示此共享 VPC 网络使用的服务项目。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

API

使用 projects.locations.global.connectivityTests.create 方法

  POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
    {
      "source": {
        "ipAddress": "SOURCE_IP_ADDRESS",
        "projectId": "SOURCE_PROJECT",
      },
      "destination": {
        "ipAddress": "DESTINATION_IP_ADDRESS",
        "projectId": "DESTINATION_PROJECT",
        "network": "DESTINATION_NETWORK",
        "port": "DESTINATION_PORT",
      },
      "protocol": "PROTOCOL",
    }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_PROJECT:来源端点的项目 ID。
  • DESTINATION_IP_ADDRESS:您要在服务项目中测试的内部或外部目标 IP 地址。
  • DESTINATION_PROJECT:目标端点的项目 ID,例如名为 service-project 的项目,表示此共享 VPC 网络使用的服务项目。
  • DESTINATION_NETWORK:宿主项目的 VPC 网络的 URI,例如 projects/host-project/global/networks/default
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码在两个 IP 地址之间创建一个测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "projectId": "SOURCE_IP_PROJECT_ID"
  },
  "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "projectId": "DESTINATION_IP_PROJECT_ID",
      "network": "DESTINATION_NETWORK",
      "port": "DESTINATION_PORT",
  },
  "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_IP_PROJECT_ID:来源端点的项目 ID。
  • DESTINATION_IP_ADDRESS:您要在服务项目中测试的内部或外部目标 IP 地址。
  • DESTINATION_IP_PROJECT_ID:目标端点的项目 ID,例如名为 service-project 的项目,表示此共享 VPC 网络使用的服务项目。
  • DESTINATION_NETWORK:宿主项目的 VPC 网络的 URI,例如 projects/host-project/global/networks/default
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

从虚拟机到 Google 管理的服务的测试

本部分介绍如何进行从您的 VPC 网络中的虚拟机到在 Google 拥有的 VPC 网络中运行的服务的测试。例如,您可以按照本部分中的步骤测试与 Cloud SQL 实例或 GKE 集群控制平面的连接。您还可以使用 Google 管理的服务端点作为来源,并使用您的 VPC 网络中的端点作为目标来运行测试。

默认情况下,Connectivity Tests 会尝试使用 Google 管理的服务端点的专用 IP 地址运行测试。如果端点没有专用 IP 地址,则 Connectivity Tests 会使用公共 IP 地址。 Connectivity Tests 会分析数据包能否到达端点,包括分析 Google 拥有的 VPC 网络中的配置。如果在项目中检测到配置问题,此分析会在分析 Google 拥有的网络配置之前停止。

如需进行从虚拟机到由 Google 管理的服务的测试,请参阅以下说明。

控制台

在“Connectivity Tests”的主页面上

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 来源部分,执行以下操作:

    1. 来源端点菜单中,选择虚拟机实例
    2. 来源虚拟机实例菜单中,选择特定的来源虚拟机实例。
    3. 来源网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个唯一标识来源位置的虚拟机网络接口。

    4. 可选:从列表中选择来源 IP 地址。默认值为来源虚拟机实例的 IP 地址。

  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择一种由 Google 管理的服务资源,例如 GKE 集群控制平面
    2. 目标 GKE 集群控制平面菜单中,选择要测试与 GKE 控制平面的连接的集群。
    3. 可选:从列表中选择目标 GKE 集群控制平面 IP 地址。默认值为来源虚拟机实例的 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

在“网络接口详情”页面上

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    前往“虚拟机实例”

  2. 如果尚未选择,请选择包含要为其运行测试的实例的项目。
  3. 点击要用于运行测试的实例。
  4. 对于网络接口,选择要用于运行测试的网络接口。
  5. 网络分析部分,点击创建 Connectivity Tests 测试
  6. 测试名称字段中,输入测试的名称。
  7. 协议列表中,选择一个协议。
  8. 来源部分,选择当前网络接口
  9. 目标部分,执行以下操作:
    1. 目标端点菜单中,选择一种由 Google 管理的服务资源,例如 GKE 集群控制平面
    2. 目标 GKE 集群控制平面菜单中,选择要测试与 GKE 控制平面的连接的集群。
    3. 可选:从列表中选择目标 GKE 集群控制平面 IP 地址。默认值为来源虚拟机实例的 IP 地址。
  10. 目标端口字段中,输入指定目标的目标端口。
    1. 点击创建
    2. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

按照以下指南替换命令选项的变量:

gcloud network-management connectivity-tests create NAME \
    --source-instance=SOURCE_INSTANCE \
    --source-ip-address=SOURCE_IP_ADDRESS \
      DESTINATION_RESOURCE_FLAG=DESTINATION_ENDPOINT \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_RESOURCE_FLAG:用于指定由 Google 管理的服务资源类型的标志。

    如需了解可用选项,请参阅以下内容:

    • --destination-gke-master-cluster
    • --destination-cloud-sql-instance

    如需了解详情,请参阅 gcloud network-management connectivity-tests create 参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI,例如标志 --destination-gke-master-clusterprojects/myproject/locations/us-central1/clusters/cluster-1

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。

  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

API

使用 projects.locations.global.connectivityTests.create 方法

 POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
   {
     "source": {
       "instance": "SOURCE_INSTANCE",
       "ipAddress": "SOURCE_IP_ADDRESS",
     },
     "destination": {
       "DESTINATION_RESOURCE_FIELD": "DESTINATION_ENDPOINT",
       "port": DESTINATION_PORT
     },
     "protocol": "PROTOCOL",
   }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_RESOURCE_FIELD:用于指定由 Google 管理的服务资源类型的字段。

    如需了解可用选项,请参阅以下内容:

    • gkeMasterCluster
    • cloudSqlInstance

    如需了解详情,请参阅端点参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如,字段 gkeMasterClusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。

  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码可在虚拟机实例和由 Google 管理的服务端点之间创建测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "instance":
          "SOURCE_INSTANCE",
      "ipAddress":
          "SOURCE_IP_ADDRESS",
      "projectId":
          "SOURCE_INSTANCE_PROJECT_ID"
  },
  "destination": {
      "DESTINATION_RESOURCE_FIELD":
          "DESTINATION_ENDPOINT",
      "port":
          "DESTINATION_PORT"
  },
  "protocol":
      "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • SOURCE_INSTANCE_PROJECT_ID:来源虚拟机的项目 ID。
  • DESTINATION_RESOURCE_FIELD:用于指定由 Google 管理的服务资源类型的字段。

    如需了解可用选项,请参阅以下内容:

    • gkeMasterCluster
    • cloudSqlInstance

    如需了解详情,请参阅端点参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如,字段 gkeMasterClusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。

  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

  • PROJECT_ID:您要在其中创建测试的项目的 ID。

  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

从虚拟机到 Private Service Connect 端点的测试

本部分介绍如何进行从虚拟机到 Private Service Connect 端点的测试。

例如,您可以按照本部分中的步骤测试数据包是否可以发送到使用 Private Service Connect 的已发布服务。Connectivity Tests 会分析数据包能否到达端点,包括分析连接的端点、已发布的服务和代理连接。如果与使用 Private Service Connect 的已发布服务的连接未被接受,则分析会提前结束。

您可以测试与以下各项的连接:

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 来源部分,执行以下操作:

    1. 来源端点菜单中,选择虚拟机实例
    2. 来源虚拟机实例菜单中,选择特定的来源虚拟机实例。
    3. 来源网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个唯一标识来源位置的虚拟机网络接口。

    4. 可选:从列表中选择来源 IP 地址。默认值为来源虚拟机实例的 IP 地址。

  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择 PSC 端点
    2. 目标 PSC 端点菜单中,选择 PSC 端点。

      如果目标端点位于当前项目以外的项目中,请选择端点在“PROJECT_NAME”以外的项目中。然后,在目标端点项目字段中,选择端点所在的项目。

  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-instance=SOURCE_INSTANCE \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-network=DESTINATION_NETWORK \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_IP_ADDRESS:您要测试的端点或后端的 IP 地址。
  • DESTINATION_NETWORK:目标 IP 地址所在 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果端点或后端用于访问已发布的服务,则必须指定 DESTINATION_NETWORK,因为端点或后端具有内部 IP 地址。

API

以下示例测试会确定现有网络配置是否允许虚拟机 instance1 对 Private Service Connect 端点的 IP 地址进行 ping 操作。

使用 projects.locations.global.connectivityTests.create 方法

 POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
   {
     "source": {
       "instance": "SOURCE_INSTANCE",
       "ipAddress": "SOURCE_IP_ADDRESS",
     },
    "destination": {
      "forwardingRule": "DESTINATION_FORWARDING_RULE",
      "port": "DESTINATION_PORT",
     },
     "protocol": "PROTOCOL",
   }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_IP_ADDRESS:您要测试的端点或后端的 IP 地址。
  • DESTINATION_NETWORK:目标 IP 地址所在 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果端点或后端用于访问已发布的服务,则必须指定 DESTINATION_NETWORK,因为端点或后端具有内部 IP 地址。

Python

以下示例代码创建虚拟机实例和 Private Service Connect 端点之间的测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "instance":
          "SOURCE_INSTANCE",
      "ipAddress":
          "SOURCE_IP_ADDRESS",
      "projectId":
          "SOURCE_INSTANCE_PROJECT_ID"
  },
  "destination": {
      "forwardingRule": "DESTINATION_FORWARDING_RULE",
      "port": "DESTINATION_PORT",
  },
  "protocol":
      "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • SOURCE_INSTANCE_PROJECT_ID:来源虚拟机的项目 ID。
  • DESTINATION_IP_ADDRESS:您要测试的端点或后端的 IP 地址。
  • DESTINATION_NETWORK:目标 IP 地址所在 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

如果端点或后端用于访问已发布的服务,则必须指定 DESTINATION_NETWORK,因为端点或后端具有内部 IP 地址。

从 App Engine 标准环境版本到目标的测试

本部分介绍如何测试从 App Engine 标准环境版本到虚拟机实例、IP 地址或 Google 代管式服务的连接。

App Engine 标准环境应用由包含一项或多项服务的单个应用资源组成。在每项服务中,您可以部署该服务的多个“版本”,您可以测试从 App Engine 标准环境服务到虚拟机实例、IP 地址或 Google 代管式服务的可达性。

如需查看详细的配置分析,您必须将服务配置为使用无服务器 VPC 访问通道连接器。服务的每个版本的 Connectivity Tests 测试结果可能有所不同。您只能测试使用 UDP 或 TCP 协议的测试数据包的可达性。

测试从 App Engine 标准环境服务版本到虚拟机实例的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 输入测试的名称。
  4. 选择一个协议。
  5. 来源端点菜单中,选择 App Engine
    1. App Engine 服务菜单中,选择要通过其测试连接的特定 App Engine 标准环境服务。例如,选择 helloworld-service
      1. 如果源端点位于当前项目以外的项目中,请选中端点位于“PROJECT_NAME”以外的项目中复选框。
      2. 选择存在端点的项目。
    2. App Engine 版本菜单中,选择您要从其中测试连接的 App Engine 标准环境服务的版本。
  6. 目标部分,从列表中选择一个目标虚拟机实例

    如果虚拟机实例具有多个网络接口,请选择一个虚拟机网络接口,以唯一标识目标位置。

  7. 可选:从列表中选择目标 IP 地址。默认值为目标虚拟机实例的 IP 地址。

  8. 目标端口字段中,输入指定目标的目标端口。

  9. 点击创建

  10. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-app-engine-version=APP_ENGINE_VERSION \
    --destination-instance=DESTINATION_INSTANCE \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • APP_ENGINE_VERSION:来源 App Engine 标准环境版本的 URI,例如 apps/myproject/services/service-name/versions/version-name
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

API

使用 projects.locations.global.connectivityTests.create 方法

  POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "appEngineVersion": {
        "uri": "APP_ENGINE_VERSION",
        },
    },
    "destination": {
      "instance": "DESTINATION_INSTANCE",
      "ipAddress": "DESTINATION_IP_ADDRESS",
    },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • APP_ENGINE_VERSION:来源 App Engine 标准环境版本的 URI,例如 apps/myproject/services/service-name/versions/version-name
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

测试从某个 App Engine 标准环境服务版本到 IP 地址的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 输入测试的名称。
  4. 选择一个协议。
  5. 来源端点菜单中,选择一个 App Engine
    1. App Engine 服务菜单中,选择要通过其测试连接的特定 App Engine 标准环境服务。例如,选择 helloworld-service
      1. 如果来源端点位于当前项目以外的项目中,请选择端点位于“PROJECT_NAME”以外的项目中
      2. 选择存在端点的项目。
    2. App Engine 版本菜单中,选择您要从其中测试连接的 App Engine 标准环境服务的版本。
  6. 对于目标,选择 IP 地址,然后输入一个 IP 地址。
  7. 输入一个目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-app-engine-version=APP_ENGINE_VERSION \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • APP_ENGINE_VERSION:来源 App Engine 标准环境版本的 URI,例如 apps/myproject/services/service-name/versions/version-name
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

API

使用 projects.locations.global.connectivityTests.create 方法

  POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "appEngineVersion": {
        "uri": "APP_ENGINE_VERSION",
        },
    },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
    },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • APP_ENGINE_VERSION:来源 App Engine 标准环境版本的 URI,例如 apps/myproject/services/service-name/versions/version-name
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

测试从 App Engine 标准环境服务版本到 Google 代管式服务之间的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 输入测试的名称。
  4. 选择一个协议。
  5. 来源端点菜单中,选择一个 App Engine
    1. App Engine 服务菜单中,选择要通过其测试连接的特定 App Engine 标准环境服务。例如,选择 helloworld-service
      1. 如果来源端点位于当前项目以外的项目中,请选择端点位于“PROJECT_NAME”以外的项目中
      2. 选择存在端点的项目。
    2. App Engine 版本菜单中,选择您要从其中测试连接的 App Engine 标准环境服务的版本。
  6. 目标部分,执行以下操作:
    1. 目标端点菜单中,选择一种由 Google 管理的服务资源,例如 GKE 集群控制平面
    2. 目标 GKE 集群控制平面菜单中,选择要测试与 GKE 控制平面的连接的集群。
    3. 可选:从列表中选择目标 GKE 集群控制平面 IP 地址。默认值为来源虚拟机实例的 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-app-engine-version=APP_ENGINE_VERSION \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
      DESTINATION_RESOURCE_FLAG=DESTINATION_ENDPOINT \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • APP_ENGINE_VERSION:来源 App Engine 标准环境版本的 URI,例如 apps/myproject/services/servicename/versions/version-number
  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。
  • DESTINATION_RESOURCE_FLAG:用于指定由 Google 管理的服务资源类型的标志。

    如需了解可用选项,请参阅以下内容:

    • --destination-gke-master-cluster
    • --destination-cloud-sql-instance

    如需了解详情,请参阅 gcloud network-management connectivity-tests create 参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如标志 --destination-gke-master-clusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅适用于 TCP 或 UDP 协议。默认值为 80 端口。

  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

API

使用 projects.locations.global.connectivityTests.create 方法

  POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "appEngineVersion": {
        "uri": "APP_ENGINE_VERSION",
        },
    },
    "destination": {
      "DESTINATION_RESOURCE_FIELD": "DESTINATION_ENDPOINT",
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": DESTINATION_PORT,
    },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • APP_ENGINE_VERSION:来源 App Engine 标准环境版本的 URI,例如 apps/myproject/services/servicename/versions/version-number
  • DESTINATION_RESOURCE_FIELD:用于指定由 Google 管理的服务资源类型的字段。

    如需了解可用选项,请参阅以下内容:

    • gkeMasterCluster
    • cloudSqlInstance

    如需了解详情,请参阅端点参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如,字段 gkeMasterClusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅适用于 TCP 或 UDP 协议。默认值为 80 端口。

  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

测试从 Cloud Functions 函数到目标位置的连接

本部分介绍如何测试从特定 Google Cloud 区域中部署的 Cloud Functions 函数到虚拟机实例、IP 地址或 Google 代管式服务的连接。例如,您可以按照本部分中的步骤测试从 Cloud Functions 函数(部署在 us-central1 中,作为来源)到 VPC 网络中的端点(作为目标)的连接。

如需查看详细的配置分析,请确保您的 Cloud Functions 函数处于活跃状态,并且已为 Cloud Functions 函数配置无服务器 VPC 访问通道连接器

Cloud Functions 的出站流量设置控制来自 Cloud Functions 函数的出站 HTTP 请求的路由,并控制通过连接器路由到您的 VPC 网络的流量类型。如需了解详情,请参阅 Cloud Functions 出站流量设置

测试从 Cloud Functions 函数到虚拟机实例的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 Cloud Functions(第 1 代)
    2. Cloud Functions 函数菜单中,选择要测试其连接的特定 Cloud Functions 函数。例如,选择 function-1
    3. Cloud Functions 函数位置菜单中,选择部署了该 Cloud Functions 函数的 Google Cloud 区域。您可以将 Cloud Functions 函数部署到配置不同但名称相同的多个区域中。
  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择虚拟机实例
    2. 目标虚拟机实例菜单中,选择一个虚拟机实例。
    3. 目标网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个唯一标识目标位置的虚拟机网络接口。

    4. 可选:从列表中选择目标 IP 地址。默认值是目标虚拟机实例的 IP 地址。

  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-cloud-function=SOURCE_CLOUD_FUNCTION \
    --destination-instance=DESTINATION_INSTANCE \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_CLOUD_FUNCTION:Cloud Functions 函数的 URI,例如 projects/myproject/locations/us-central1/functions/function-1
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

API

使用 projects.locations.global.connectivityTests.create 方法

POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
{
  "source": {
    "cloudFunction": {
      "uri": "SOURCE_CLOUD_FUNCTION",
      },
  },
  "destination": {
    "instance": "DESTINATION_INSTANCE",
    "ipAddress": "DESTINATION_IP_ADDRESS",
  },
  "protocol": "PROTOCOL",
}'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_CLOUD_FUNCTION:Cloud Functions 函数的 URI,例如 projects/myproject/locations/us-central1/functions/function-1
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

测试从 Cloud Functions 函数到 IP 地址的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 Cloud Functions(第 1 代)
    2. Cloud Functions 函数菜单中,选择要测试其连接的特定 Cloud Functions 函数。例如,选择 function-1
    3. Cloud Functions 函数位置菜单中,选择部署了该 Cloud Functions 函数的 Google Cloud 区域。您可以将 Cloud Functions 函数部署到配置不同但名称相同的多个区域中。
  6. 对于目标,选择 IP 地址,然后输入一个 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续前往本页面后面的查看测试结果部分。

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-cloud-function=SOURCE_CLOUD_FUNCTION \
    --destination-ip-address==DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_CLOUD_FUNCTION:Cloud Functions 函数的 URI,例如 projects/myproject/locations/us-central1/functions/function-1
  • DESTINATION_IP_ADDRESS:您要测试的目标 IP 地址。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

API

使用 projects.locations.global.connectivityTests.create 方法

POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
{
  "source": {
    "cloudFunction": {
      "uri": "SOURCE_CLOUD_FUNCTION",
    },
  },
  "destination": {
    "ipAddress": "DESTINATION_IP_ADDRESS",
  },
  "protocol": "PROTOCOL",
}'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_CLOUD_FUNCTION:Cloud Functions 函数的 URI,例如 projects/myproject/locations/us-central1/functions/function-1
  • DESTINATION_IP_ADDRESS:您要测试的目标 IP 地址。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

测试从 Cloud Functions 函数到由 Google 代管式服务的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 Cloud Functions(第 1 代)
    2. Cloud Functions 函数菜单中,选择要测试其连接的特定 Cloud Functions 函数。例如,选择 function-1
    3. Cloud Functions 函数位置菜单中,选择部署了该 Cloud Functions 函数的 Google Cloud 区域。您可以将 Cloud Functions 函数部署到配置不同但名称相同的多个区域中。
  6. 目标部分,执行以下操作:
    1. 对于目标端点菜单,选择一种 Google 管理的服务资源,例如 Cloud SQL 实例
    2. 目标 Cloud SQL 实例菜单中,选择要从中测试连接的 Cloud SQL 实例。
    3. 可选:从列表中选择目标 Cloud SQL 实例 IP 地址。默认值为 Cloud Function 的源 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续前往本页面后面的查看测试结果部分。

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-cloud-function=SOURCE_CLOUD_FUNCTION \
      DESTINATION_RESOURCE_FLAG=DESTINATION_ENDPOINT \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_CLOUD_FUNCTION:Cloud Functions 函数的 URI,例如 projects/myproject/locations/us-central1/functions/function-1
  • DESTINATION_RESOURCE_FLAG:用于指定由 Google 管理的服务资源类型的标志。

    如需了解可用选项,请参阅以下内容:

    • --destination-gke-master-cluster
    • --destination-cloud-sql-instance

    如需了解详情,请参阅 gcloud network-management connectivity-tests create 参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如标志 --destination-gke-master-clusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_IP_ADDRESS:您要测试的内部或外部目标 IP 地址。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅适用于 TCP 或 UDP 协议。默认值为 80 端口。

  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

从 Cloud Run 修订版本到目标位置进行测试

本部分介绍如何测试从 Cloud Run 修订版本到虚拟机实例、IP 地址或 Google 代管式服务的连接。

您可以在单个项目中部署多项 Cloud Run 服务。每项 Cloud Run 服务在 *.run.app 网域的唯一子网域上都有一个 HTTPS 端点。Cloud Run 服务的每个部署都会创建一个新的不可变修订版本。您可以测试从修订版本到虚拟机实例、IP 地址或 Google 代管式服务的可达性。如需查看详细的配置分析,您必须为修订版本配置无服务器 VPC 访问通道连接器。各个修订版本的 Connectivity Tests 测试结果可能有所不同。

例如,名为 cloud_run_test 的 Cloud Run 服务有一个修订版本 first-revision 配置为使用无服务器 VPC 访问通道连接器,另一个修订版本 second-revision 未配置为使用无服务器 VPC 访问通道连接器。对于 first-revision,可能可以执行总体可达性结果,但对于 second-revision,则可能无法访问。

创建 Connectivity Tests 时,您可以从 Cloud Run 服务的修订版本列表中进行选择。

测试从 Cloud Run 服务的修订版本到虚拟机实例的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 输入测试的名称。
  4. 选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 Cloud Run
    2. Cloud Run 服务菜单中,选择要通过其测试连接的特定 Cloud Run 服务。例如,选择 helloworld-run
      1. 如果来源端点位于当前项目以外的项目中,请选择端点位于“PROJECT_NAME”以外的项目中
      2. 选择存在端点的项目。
    3. Cloud Run 修订版本菜单中,选择您要测试的 Cloud Run 修订版本。
  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择虚拟机实例
    2. 目标虚拟机实例菜单中,选择特定的目标虚拟机实例。
    3. 目标网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个虚拟机网络接口,以唯一标识目标位置。

    4. 可选:从列表中选择目标 IP 地址。默认值是目标虚拟机实例的 IP 地址。

  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-cloud-run-revision=CLOUD_RUN_REVISION \
    --destination-instance=DESTINATION_INSTANCE \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • CLOUD_RUN_REVISION:来源 Cloud Run 修订版本的 URI,例如 projects/myproject/locations/us-central1/revisions/cloudrun-revision
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

API

使用 projects.locations.global.connectivityTests.create 方法

POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
{
  "source": {
    "cloudRunRevision": {
      "uri": "CLOUD_RUN_REVISION",
      },
  },
    "destination": {
      "instance": "DESTINATION_INSTANCE",
      "ipAddress": "DESTINATION_IP_ADDRESS"
      },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • CLOUD_RUN_REVISION:来源 Cloud Run 修订版本的 URI,例如 projects/myproject/locations/us-central1/revisions/cloudrun-revision
  • DESTINATION_INSTANCE:目标虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-2
  • DESTINATION_IP_ADDRESS:您要测试的目标虚拟机实例的 IP 地址。该 IP 地址应该是目标虚拟机实例的 IP 地址之一。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

测试从 Cloud Run 服务修订版本到 IP 地址的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 输入测试的名称。
  4. 选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 Cloud Run
    2. Cloud Run 服务菜单中,选择要通过其测试连接的特定 Cloud Run 服务。例如,选择 helloworld-run
      1. 如果来源端点位于当前项目以外的项目中,请选择端点位于“PROJECT_NAME”以外的项目中
      2. 选择存在端点的项目。
    3. Cloud Run 修订版本菜单中,选择您要测试的 Cloud Run 修订版本。
  6. 对于目标,选择 IP 地址,然后输入一个 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-cloud-run-revision=CLOUD_RUN_REVISION \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • CLOUD_RUN_REVISION:来源 Cloud Run 修订版本的 URI,例如 projects/myproject/locations/us-central1/revisions/cloudrun-revision
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

API

使用 projects.locations.global.connectivityTests.create 方法

POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
{
  "source": {
    "cloudRunRevision": {
      "uri": "CLOUD_RUN_REVISION",
      },
  },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • CLOUD_RUN_REVISION:来源 Cloud Run 修订版本的 URI,例如 projects/myproject/locations/us-central1/revisions/cloudrun-revision
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

测试从 Cloud Run 服务修订版本到 Google 代管式服务的连接

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 输入测试的名称。
  4. 选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 Cloud Run
    2. Cloud Run 服务菜单中,选择要通过其测试连接的特定 Cloud Run 服务。例如,选择 helloworld-run
      1. 如果来源端点位于当前项目以外的项目中,请选择端点位于“PROJECT_NAME”以外的项目中
      2. 选择存在端点的项目。
    3. Cloud Run 修订版本菜单中,选择您要测试的 Cloud Run 修订版本。
  6. 目标部分,执行以下操作:
    1. 目标端点菜单中,选择一种由 Google 管理的服务资源,例如 GKE 集群控制平面
    2. 目标 GKE 集群控制平面菜单中,选择要测试与 GKE 控制平面的连接的集群。
    3. 可选:从列表中选择目标 GKE 集群控制平面 IP 地址。默认值为来源虚拟机实例的 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-cloud-run-revision=CLOUD_RUN_REVISION \
      DESTINATION_RESOURCE_FLAG=DESTINATION_ENDPOINT \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • CLOUD_RUN_REVISION:来源 Cloud Run 修订版本的 URI,例如 projects/myproject/locations/us-central1/revisions/cloudrun-revision
  • PROJECT_NAME:端点所在的项目名称,例如 myproject
  • DESTINATION_RESOURCE_FLAG:用于指定由 Google 管理的服务资源类型的标志。

    如需了解可用选项,请参阅以下内容:

    • --destination-gke-master-cluster
    • --destination-cloud-sql-instance

    如需了解详情,请参阅 gcloud network-management connectivity-tests create 参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如标志 --destination-gke-master-clusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅适用于 TCP 或 UDP 协议。默认值为 80 端口。

  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

API

使用 projects.locations.global.connectivityTests.create 方法

POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
{
  "source": {
    "cloudRunRevision": {
      "uri": "CLOUD_RUN_REVISION",
      },
  },
    "destination": {
      "DESTINATION_RESOURCE_FIELD": "DESTINATION_ENDPOINT",
      "port": DESTINATION_PORT,
    },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • PROJECT_ID:来源 Cloud Functions 函数的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • CLOUD_RUN_REVISION:来源 Cloud Run 修订版本的 URI,例如 projects/myproject/locations/us-central1/revisions/cloudrun-revision
  • DESTINATION_RESOURCE_FIELD:用于指定由 Google 管理的服务资源类型的字段。

    如需了解可用选项,请参阅以下内容:

    • gkeMasterCluster
    • cloudSqlInstance

    如需了解详情,请参阅端点参考文档

  • DESTINATION_ENDPOINT:目标端点的 URI(例如,字段 gkeMasterClusterprojects/myproject/locations/us-central1/clusters/cluster-1)。

  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅适用于 TCP 或 UDP 协议。默认值为 80 端口。

  • PROTOCOL:无服务器 VPC 访问通道连接器支持的网络协议 - TCPUDP

测试从 VPC 网络到非 Google Cloud 网络的连接

如需测试 VPC 网络与非 Google Cloud 网络之间的连接,请按照以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,选择 IP 地址,然后输入 IP 地址。
    1. 如果 VPC 网络位于其他项目中,请选择这是 Google Cloud 中使用的 IP 地址。然后,在来源 IP 地址或服务项目字段中,选择网络所在的项目。
    2. 如果您的专用 IP 地址不在 RFC 1918 地址空间内,请选中标有我确认来源端点位于 RFC 1918 地址空间范围之外的复选框。选择包含 IP 地址的来源网络。
  6. 对于目标,选择 IP 地址,然后输入一个外部 IP 地址。
  7. 取消选中这是 Google Cloud 中使用的 IP 地址
  8. 目标端口字段中,输入指定目标的目标端口。
  9. 点击创建
  10. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

输入以下命令,在内部 IP 地址和外部 IP 地址之间进行测试。将命令选项的变量替换为 VPC 网络中的值。

gcloud network-management connectivity-tests create NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --source-network=SOURCE_NETWORK \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK:来源 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

API

本示例测试从来源 IP 地址到目标 IP 地址进行 ping 的能力。

使用 projects.locations.global.connectivityTests.create 方法

  POST https://reachability.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "network": "SOURCE_NETWORK"
    },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
    },
      "protocol": "PROTOCOL".
  }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK:来源 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码在两个 IP 地址之间创建一个测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "projectId": "SOURCE_IP_PROJECT_ID"
  },
  "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
  },
  "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_IP_PROJECT_ID:来源 IP 地址的项目 ID。
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

以下示例在两个 IP 地址之间创建一个测试:

test_input = {
    "source": {
        "ipAddress": "SOURCE_IP_ADDRESS",
        "networkType": "GCP_NETWORK"
    },
    "destination": {
        "ipAddress": "DESTINATION_IP_ADDRESS",
        "port": "DESTINATION_PORT",
    },
    "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
  parent="projects/PROJECT_ID/locations/global",
  testId="TEST_ID",
  body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 GCP_NETWORK
  • DESTINATION_IP_ADDRESS:目标 IP 地址
  • DESTINATION_PORT:目标 TCP 或 UDP 端口号。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

从一个 VPC spoke 到连接到同一 Network Connectivity Center hub 的另一个 VPC spoke 进行测试

如需从 Network Connectivity Center hub 中的一个 VPC spoke 到连接到同一 hub 的另一个 VPC spoke 进行测试,请按照以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 来源部分,选择 IP 地址,然后输入来自来源 spoke VPC 网络的 IP 地址。
  6. 目标部分,选择 IP 地址,然后输入您要测试的另一个 spoke VPC 网络中的 IP 地址。
  7. 目标端口字段中,输入指定目标的目标端口。
  8. 点击创建
  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

输入以下命令以测试两个 spoke。将命令选项的变量替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --source-network=SOURCE_NETWORK \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK:来源 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_IP_ADDRESS:您要测试的另一个 spoke VPC 网络中的目标 IP 地址。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

API

本示例测试从来源 IP 地址到目标 IP 地址进行 ping 的能力。

使用 projects.locations.global.connectivityTests.create 方法

  POST https://reachability.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "network": "SOURCE_NETWORK"
    },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
    },
      "protocol": "PROTOCOL".
  }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK:来源 IP 地址所在的 VPC 网络的 URI,例如 projects/myproject/global/networks/default
  • DESTINATION_IP_ADDRESS:您要测试的另一个 spoke VPC 网络中的目标 IP 地址。
  • DESTINATION_PORT:目标 TCP 或 UDP 端口号。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码在两个 IP 地址之间创建一个测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create 方法

test_input = {
  "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "projectId": "SOURCE_IP_PROJECT_ID"
  },
  "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
  },
  "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_IP_PROJECT_ID:来源 IP 地址的项目 ID。
  • DESTINATION_IP_ADDRESS:您要测试的另一个 spoke VPC 网络中的目标 IP 地址。
  • DESTINATION_PORT:目标 TCP 或 UDP 端口号。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源端点和目标端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目标 IP 地址自动选择这些参数。

以下示例在两个 IP 地址之间创建一个测试:

test_input = {
    "source": {
        "ipAddress": "SOURCE_IP_ADDRESS",
        "networkType": "GCP_NETWORK"
    },
    "destination": {
        "ipAddress": "DESTINATION_IP_ADDRESS",
        "port": "DESTINATION_PORT",
    },
    "protocol": "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
  parent="projects/PROJECT_ID/locations/global",
  testId="TEST_ID",
  body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您要测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 GCP_NETWORK
  • DESTINATION_IP_ADDRESS:目标虚拟机的 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

从虚拟机到非 Google Cloud 网络的测试

此测试分析从来源虚拟机到 Google 网络边缘位置的连接。

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 来源部分,执行以下操作:

    1. 来源端点菜单中,选择虚拟机实例
    2. 来源虚拟机实例菜单中,选择特定的来源虚拟机实例。
    3. 来源网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个唯一标识来源位置的虚拟机网络接口。

    4. 可选:从列表中选择来源 IP 地址。默认值为来源虚拟机实例的 IP 地址。

  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择 IP 地址
    2. 输入外部目标 IP 地址
    3. 取消选中这是 Google Cloud 中使用的 IP 地址
  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

如需在虚拟机和外部 IP 地址之间进行测试,请输入以下命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-instance=SOURCE_INSTANCE \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \
    --protocol=PROTOCOL

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:您要测试的来源虚拟机实例的 IP 地址;该 IP 地址应为来源虚拟机实例的 IP 地址之一。
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

API

以下示例测试确定现有网络配置是否允许虚拟机 instance1 ping 目标 IP 地址。

使用 projects.locations.global.connectivityTests.create 方法

 POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
   {
     "source": {
       "instance": "SOURCE_INSTANCE",
       "ipAddress": "SOURCE_IP_ADDRESS",
     },
    "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
     },
     "protocol": "PROTOCOL",
   }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码创建了虚拟机实例和外部 IP 地址之间的测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "instance":
          "SOURCE_INSTANCE",
      "ipAddress":
          "SOURCE_IP_ADDRESS",
      "projectId":
          "SOURCE_INSTANCE_PROJECT_ID"
  },
  "destination": {
      "ipAddress": "DESTINATION_IP_ADDRESS",
      "port": "DESTINATION_PORT",
  },
  "protocol":
      "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • SOURCE_INSTANCE_PROJECT_ID:来源虚拟机的项目 ID。
  • DESTINATION_IP_ADDRESS:作为测试目标的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

从虚拟机或 IP 地址到负载均衡器的测试

本部分介绍如何测试从虚拟机或 IP 地址到 Google Cloud 负载均衡器的连接。

Connectivity Tests 配置分析支持跟踪传送至所有类型的 Google Cloud 负载均衡器的模拟数据包。外部应用负载均衡器的跟踪记录路径也适用于外部代理网络负载均衡器。如需了解详情,请参阅 Cloud Load Balancing 概览

您可以测试与以下各项的连接:

从虚拟机到负载均衡器的测试

本部分分析了从源虚拟机到负载均衡器的连接。

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 来源部分,执行以下操作:

    1. 来源端点菜单中,选择虚拟机实例
    2. 来源虚拟机实例菜单中,选择特定的来源虚拟机实例。
    3. 来源网络接口菜单中,选择网络接口。

      如果虚拟机实例具有多个网络接口,请选择一个唯一标识来源位置的虚拟机网络接口。

    4. 可选:从列表中选择来源 IP 地址。默认值为来源虚拟机实例的 IP 地址。

  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择负载均衡器
    2. 目标负载均衡器菜单中,选择负载均衡器。

      如果目标端点位于当前项目以外的项目中,请选择端点在“PROJECT_NAME”以外的项目中。然后,在目标端点项目字段中,选择端点所在的项目。

    3. 选择目标转发规则

  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

如需在虚拟机和负载均衡器之间进行测试,请输入以下命令。

gcloud network-management connectivity-tests create NAME \
    --source-instance=SOURCE_INSTANCE \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --protocol=PROTOCOL \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • DESTINATION_IP_ADDRESS:您要用于测试的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。

API

使用 projects.locations.global.connectivityTests.create 方法

 POST https: //networkmanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
   {
     "source": {
       "instance": "SOURCE_INSTANCE",
       "ipAddress": "SOURCE_IP_ADDRESS",
     },
    "destination": {
      "forwardingRule": "DESTINATION_FORWARDING_RULE",
      "port": "DESTINATION_PORT",
     },
     "protocol": "PROTOCOL",
   }'

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。
  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • DESTINATION_FORWARDING_RULE:表示端点的目标转发规则。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

Python

以下示例代码可在虚拟机实例和负载均衡器端点之间创建测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

test_input = {
  "source": {
      "instance":
          "SOURCE_INSTANCE",
      "ipAddress":
          "SOURCE_IP_ADDRESS",
      "projectId":
          "SOURCE_INSTANCE_PROJECT_ID"
  },
  "destination": {
      "forwardingRule": "DESTINATION_FORWARDING_RULE",
      "port": "DESTINATION_PORT",
  },
  "protocol":
      "PROTOCOL",
}

request = api.projects().locations().global_().connectivityTests().create(
    parent="projects/PROJECT_ID/locations/global",
    testId="TEST_ID",
    body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_INSTANCE:来源虚拟机的 URI,例如 projects/myproject/zones/us-east1-b/instances/instance-1
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • SOURCE_INSTANCE_PROJECT_ID:来源虚拟机的项目 ID。
  • DESTINATION_FORWARDING_RULE:表示端点的目标转发规则。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

从 IP 地址到负载均衡器的测试

控制台

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 选择创建 Connectivity Tests 测试
  3. 测试名称字段中,输入测试的名称。
  4. 协议列表中,选择一个协议。
  5. 对于来源,请进行以下设置:
    1. 来源端点菜单中,选择 IP 地址
    2. 来源 IP 地址字段中,输入来源 IP 地址。
      1. 如果 VPC 网络位于其他项目中,请选择这是 Google Cloud 中使用的 IP 地址。然后,在来源 IP 地址或服务项目字段中,选择网络所在的项目。
      2. 如果 IP 地址不在 RFC 1918 地址空间内,请选中我确认源端点位于 RFC 1918 地址空间外的范围内。然后,在来源网络列表中,选择包含来源 IP 地址的网络。
  6. 目标部分,执行以下操作:

    1. 目标端点菜单中,选择负载均衡器
    2. 目标负载均衡器菜单中,选择负载均衡器端点。

      如果目标端点位于当前项目以外的项目中,请选择端点在“PROJECT_NAME”以外的项目中。然后,在目标端点项目字段中,选择端点所在的项目。

    3. 选择目标转发规则

  7. 目标端口字段中,输入指定目标的目标端口。

  8. 点击创建

  9. 测试完成后,系统会加载 Connectivity Tests 的主页面,并显示包含此测试和其他测试的列表。继续查看测试结果

gcloud

使用 gcloud network-management connectivity-tests create 命令。将示例值替换为来自 VPC 网络的值。

gcloud network-management connectivity-tests create NAME \
    --source-project=SOURCE_PROJECT \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --protocol=PROTOCOL \
    --destination-ip-address=DESTINATION_IP_ADDRESS \
    --destination-port=DESTINATION_PORT \

替换以下内容:

  • NAME:Connectivity Tests 测试的名称。
  • SOURCE_PROJECT:来源端点的项目 ID。
  • SOURCE_IP_ADDRESS:要从中测试的来源虚拟机实例的 IP 地址。该 IP 地址应该是来源虚拟机实例的 IP 地址之一。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • DESTINATION_IP_ADDRESS:您要测试的外部目标 IP 地址。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。

如果端点用于访问代管式服务或其他 VPC 网络中的服务,您必须指定 DESTINATION_NETWORK,因为该端点具有内部 IP 地址。

API

本示例测试从来源 IP 地址到负载均衡器端点进行 ping 的能力。

使用 projects.locations.global.connectivityTests.create 方法

如果您指定的来源 IP 地址是 Google Cloud 外部的外部 IP 地址,则必须将 networkType 指定为 NON_GCP_NETWORK。将以下命令中的值替换为 Google Cloud 网络的值。

  POST https://reachability.googleapis.com/v1/projects/PROJECT_ID/locations/global/connectivityTests?testId=TEST_ID'
  {
    "source": {
      "ipAddress": "SOURCE_IP_ADDRESS",
      "networkType": "NON_GCP_NETWORK",
    },
    "destination": {
      "forwardingRule": "DESTINATION_FORWARDING_RULE",
      "port": "DESTINATION_PORT",
    },
    "protocol": "PROTOCOL",
  }'

替换以下内容:

  • SOURCE_IP_ADDRESS:您用于测试的来源 IP 地址。
  • DESTINATION_FORWARDING_RULE:表示端点的目标转发规则。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP

如果端点用于访问已发布的服务,则必须指定 DESTINATION_NETWORK,因为端点具有内部 IP 地址。

Python

以下示例代码创建了 IP 地址和负载均衡器端点之间的测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 create

如果您指定的来源 IP 地址是 Google Cloud 外部的外部 IP 地址,则必须将 networkType 指定为 NON_GCP_NETWORK

test_input = {
    "source": {
        "ipAddress": "SOURCE_IP_ADDRESS",
        "networkType": "NON_GCP_NETWORK"
    },
    "destination": {
        "forwardingRule": "DESTINATION_FORWARDING_RULE",
        "port": "DESTINATION_PORT",
        "projectId": "DESTINATION_IP_PROJECT_ID"
    },
    "protocol": "PROTOCOL",
}

  request = api.projects().locations().global_().connectivityTests().create(
  parent="projects/PROJECT_ID/locations/global",
  testId="TEST_ID",
  body=test_input)

print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • SOURCE_IP_ADDRESS:您用于测试的来源 IP 地址。
  • SOURCE_NETWORK_TYPE:来源所在的网络类型。在这种情况下,请使用值 NON_GCP_NETWORK
  • DESTINATION_FORWARDING_RULE:表示端点的目标转发规则。
  • DESTINATION_PORT:目标的 IP 协议端口。此选项仅对 TCP 或 UDP 协议有效。
  • DESTINATION_IP_PROJECT_ID:目标 IP 地址的项目 ID。
  • PROTOCOL:连接测试的受支持的协议。默认协议为 TCP
  • PROJECT_ID:您要在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

如果端点用于访问已发布的服务,则必须指定 DESTINATION_NETWORK,因为端点具有内部 IP 地址。

您无需确认您的 IP 地址是否在 Google Cloud 中,或者来源和目的地端点是否在 RFC 1918 地址空间之外。系统会根据您的来源和目的地 IP 地址自动选择这些参数。

从非 Google Cloud 网络到 VPC 网络的测试

此过程与在 VPC 网络中的专用 IP 地址之间进行测试的过程相同,但以下步骤除外。此过程适用于 Google Cloud 控制台、Google Cloud CLI、API 示例和 Python 示例。

  1. 如果来源地址不在 Google Cloud 中,但不是来自对等(本地)网络,请指定一个外部 IP 地址。
  2. 如果来源地址来自对等(本地)网络,您必须选择其他非 Google Cloud 网络

从非 Google Cloud 网络到非 Google Cloud 网络的测试

此过程与在 VPC 网络中的专用 IP 地址之间进行测试的过程相同,但以下步骤除外。此过程适用于 Google Cloud 控制台、Google Cloud CLI、API 示例和 Python 示例。

  1. 指定来源 IP 地址和目标 IP 地址的外部 IP 地址。
  2. 在 Google Cloud 控制台中,取消选中这是 Google Cloud 中使用的 IP 地址

查看测试结果

本部分介绍如何查看 Connectivity Tests 测试的结果。

控制台

您可以在多个不同页面上查看测试。

在“Connectivity Tests”的主页面上

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 对于结果详情列,选择一个测试,然后点击查看
  3. 系统会显示测试的信息面板。您可以在测试路径中查看每个 Google Cloud 资源的总体结果和结果卡片。您可以点击指向某些 Google Cloud 资源(例如虚拟机实例或路由)详情页面的链接。如果测试包含多个跟踪记录,您可以从跟踪记录结果列表中选择一个跟踪记录。

    如果测试符合实时数据平面分析的条件,您可以查看丢包和延迟时间指标。

  4. 如需展开或关闭结果卡,请点击结果卡右侧的箭头。

  5. 如需解读测试结果,请参阅配置分析状态

  6. 如需关闭信息面板,请点击页面右上角的隐藏信息面板

在“Connectivity Tests 测试详情”页面上

或者,从 Google Cloud 控制台的主页面点击测试名称,并在 Connectivity Tests 测试详情页面上查看其结果。

在“网络接口详情”页面上

您也可以在 Compute Engine 虚拟机实例的网络接口的网络接口详情页面上查看结果。此页面仅会列出将当前网络接口用作来源或目标的测试。

如需查看结果,您可以在结果详情列中选择查看,或点击测试的名称。

gcloud

如需查看测试结果,请输入以下命令。使用您要查看的测试 ID。

gcloud network-management connectivity-tests describe NAME

NAME 替换为 Connectivity Tests 测试的名称。

API

使用 projects.locations.global.connectivityTests.get 方法查看测试结果。

  GET https://networkmanagement.googleapis.com/v1/{name=projects/PROJECT_ID/locations/global/connectivityTests/TEST_ID}

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

Python

以下示例代码输出了测试结果。如需了解详情,请参阅 Python 版 Google API 客户端库中的 get

project_id = "PROJECT_ID"
test_id= "TEST_ID"
request = api.projects().locations().global_().connectivityTests().get(
      name='projects/%s/locations/global/connectivityTests/%s' %
      (project_id, test_id))
print(json.dumps(request.execute(), indent=4))

替换以下内容:

  • PROJECT_ID:在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

重新运行一个或多个测试

如果您在测试路径中更改了 Google Cloud 资源并且想要查看最新的网络配置结果,则可能需要重新运行 Connectivity Tests 测试。您可以同时重新运行一个或多个测试。

Connectivity Tests 测试基于执行时的网络配置快照。重新运行测试会覆盖之前的测试结果。如果您想保留较早的结果,请改为创建新测试。

如需在 rerun 测试操作正在运行时检查其状态,请参阅检查正在运行的测试操作

控制台

在“Connectivity Tests”的主页面上

  1. 在 Google Cloud 控制台中,前往 Connectivity Tests 页面。

    前往 Connectivity Tests

  2. 从可用的 Connectivity Tests 列表中选择一个或多个测试。
  3. 点击 重新运行

从“Connectivity Tests”详情页面

  1. 在上面的 Connectivity Tests 主页面中,点击测试的名称。
  2. Connectivity Tests 测试详情页面的顶部,点击 重新运行

在“网络接口详情”页面上

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    前往“虚拟机实例”

  2. 如果尚未选择,请选择包含要为其重新运行测试的实例的项目。
  3. 点击要用于重新运行测试的实例。
  4. 对于网络接口,选择要用于重新运行测试的网络接口。
  5. 对于网络分析,点击 Connectivity Tests
  6. 从可用的 Connectivity Tests 列表中选择一个或多个测试。
  7. 点击 重新运行

gcloud

如需重新运行 Connectivity Tests 测试,请输入以下命令。使用您要重新运行的测试 ID。

gcloud network-management connectivity-tests rerun NAME

NAME 替换为 Connectivity Tests 测试的名称。

API

Network Management API 创建 connectivityTests 资源后,会一直保留该测试资源,直到您将其删除。因此,您可以重新运行测试。

如果您不想创建永久性测试,则可以使用 API 创建测试,并在查看测试结果后将其删除。

使用 projects.locations.global.connectivityTests.rerun 方法重新运行测试。

  POST https://networkmanagement.googleapis.com/v1/{name=projects/*/locations/global/connectivityTests/*}:rerun
    {
      "name": {projects/PROJECT_ID/connectivityTests/{TEST_ID}}
    }

替换以下内容:

  • PROJECT_ID:来源虚拟机的项目 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID。

Python

以下示例代码可以重新运行测试。如需了解详情,请参阅 Python 版 Google API 客户端库中的 rerun

project_id = "PROJECT_ID"
test_id = "TEST_ID"
request = api.projects().locations().global_().connectivityTests().rerun(name='projects/%s/locations/global/connectivityTests/%s' % (project_id, test_id))
print(json.dumps(request.execute(), indent=4))

替换以下值:

  • PROJECT_ID:在其中创建测试的项目的 ID。
  • TEST_ID:您正在运行的 Connectivity Tests 对象(测试)的 ID

后续步骤