使用 DNS64 和 NAT64 配置仅限 IPv6 的子网和实例

本页面介绍了如何创建仅限 IPv6 的子网和实例,然后配置 DNS64 和 NAT64,以便您可以通过仅限 IPv6 的实例访问 IPv4 目标。

如需大致了解 Google Cloud中的 IPv6 到 IPv4 连接,请参阅适用于 6to4 连接的 DNS64 和 NAT64

准备工作

本页面上的说明要求您拥有自定义模式虚拟私有云 (VPC) 网络,以便您可以创建具有 IPv6 地址范围的子网。如需了解详情,请参阅创建具有仅限 IPv6 的子网的自定义模式 VPC 网络

如果您要创建支持具有内部 IPv6 地址的子网的 VPC 网络,则必须在创建网络时配置 ULA 内部 IPv6 范围。如果您有现有网络,可以为网络分配内部 IPv6 范围

创建仅限 IPv6 的子网和实例

本部分介绍如何创建仅限 IPv6 的子网和实例。如果您已经拥有仅限 IPv6 的子网和实例,可以继续配置 DNS64 和 NAT64

创建仅限 IPv6 的子网

您可以创建启用了外部或内部 IPv6 地址的仅限 IPv6 的子网。

如需创建仅限 IPv6 的子网,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,进入 VPC 网络页面。

    进入 VPC 网络页面

  2. 如需查看 VPC 网络详情页面,请点击 VPC 网络的名称。

  3. 子网标签页中,点击 添加子网。在显示的面板中:

    1. 提供名称。
    2. 选择区域。
    3. IP 栈类型字段中,选择 IPv6(单栈)
    4. 选择 IPv6 访问权限类型:内部外部

      如果您要将访问权限类型设置为内部,但内部选项不可用,请检查是否为网络分配了内部 IPv6 范围

    5. 点击添加

gcloud

使用 gcloud compute networks subnets create 命令

gcloud compute networks subnets create SUBNET \
    --network=NETWORK \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=IPv6_ACCESS_TYPE \
    --region=REGION

请替换以下内容:

  • SUBNET:新子网的名称。
  • NETWORK:包含新子网的 VPC 网络的名称。
  • IPv6_ACCESS_TYPE:IPv6 访问权限类型。访问权限类型可以是 EXTERNALINTERNAL
  • REGION:要在其中创建新子网的 Google Cloud 区域。

API

subnetworks.insert 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "network": "NETWORK_URL",
  "name": "SUBNET"
  "stackType": IPV6_ONLY,
  "ipv6AccessType": IPv6_ACCESS_TYPE
}

请替换以下内容:

  • PROJECT_ID:包含要修改 VPC 网络的项目的 ID。
  • REGION:在其中添加子网的 Google Cloud 区域的名称。
  • NETWORK_URL:在其中添加子网的 VPC 网络的网址。
  • SUBNET:子网的名称。
  • IPv6_ACCESS_TYPE:IPv6 访问权限类型。 访问权限类型可以是 EXTERNALINTERNAL

创建仅限 IPv6 的实例

控制台

  1. 转到创建实例页面。

    转到“创建实例”

  2. 输入实例的名称。

  3. 选择一个包含配置了 IPv6 范围的子网的区域。

  4. 可选操作:更改此实例的可用区。如果您选择不限,Google 会根据机器类型和可用性为您自动选择可用区。

  5. 展开高级选项部分。

  6. 展开网络,然后执行以下操作:

    1. 网络接口部分中,点击网络接口名称以修改网络接口的设置。

    2. 对于网络子网,选择要使用的网络和子网。

      选择仅限 IPv6 的子网。子网的 IPv6 访问权限类型决定了实例是接收内部 IPv6 地址还是外部 IPv6 地址。

    3. 对于 IP 栈类型,选择 IPv6(单栈)

    4. 对于接口的 IPv6 地址,请根据连接的子网的访问权限类型执行以下操作:

      1. 对于主要内部 IPv6 地址,选择以下选项之一:
        • 自动分配,可自动分配新的临时内部 IPv6 地址
        • 列表中的预留静态内部 IPv6 地址
        • 预留静态内部 IPv6 地址,可预留并分配新的静态内部 IPv6 地址
      2. 对于外部 IPv6 地址,选择以下选项之一:
        • 自动分配,可自动分配新的临时外部 IPv6 地址
        • 列表中的预留静态外部 IPv6 地址
        • 预留静态外部 IPv6 地址,可预留并分配新的静态外部 IPv6 地址
    5. 如需完成网络接口的修改,请点击完成

  7. 继续进行实例创建过程。

  8. 点击创建

gcloud

使用 gcloud compute instances create 命令来创建实例。

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --network-interface=network=NETWORK,subnet=SUBNET,stack-type=IPV6_ONLY

替换以下内容:

  • INSTANCE_NAME:实例的名称。
  • ZONE:在其中创建实例的可用区,例如 europe-west1-b。实例的区域是根据地区推断出来的。
  • NETWORK:要在其中创建实例的网络的名称。
  • SUBNET:要在其中创建实例的子网的名称。

API

使用 instances.insert 方法创建实例。

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
  {
     "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
     "name": "NAME",
     "disks": [
       {
         "initializeParams": {
           "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
         },
         "boot": true
       }
     ],
     "networkInterfaces": [
       {
         "subnetwork": "regions/REGION/subnetworks/SUBNET",
         "stackType": "IPV6_ONLY"
       }
     ]
   }
   

替换以下内容:

  • PROJECT_ID:包含实例的项目的 ID。
  • ZONE:包含实例的可用区。
  • MACHINE_TYPE_ZONE:包含新实例将使用的机器类型的可用区。
  • MACHINE_TYPE:新实例的机器类型(预定义自定义)。例如 c3-standard-4
  • NAME:实例的名称。
  • IMAGE_PROJECT(可选):包含映像的映像项目
  • IMAGE(可选):指定以下其中一项:
    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20241009
    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项会通过最新的未弃用的操作系统映像创建实例。例如,如果您指定 family/debian-12,则 Compute Engine 会使用 Debian 12 映像系列中最新版本的操作系统映像创建实例。如需详细了解如何使用映像系列,请参阅映像系列最佳实践
  • REGION:包含实例的区域。
  • SUBNET:网络接口所在的子网。

配置 DNS64 和 NAT64

本部分介绍如何同时配置 DNS64 和 NAT64,以便您从仅限 IPv6 的实例访问 IPv4 目标。

创建 DNS64 服务器政策

创建并配置 DNS64 服务器政策,以便 Cloud DNS 为每个 IPv4 目标提供合成 IPv6 地址。

如需详细了解如何创建和管理 DNS64 服务器政策,请参阅配置 DNS64

如需创建 DNS64 服务器政策,请执行以下操作。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud DNS 页面。

    转到 Cloud DNS

  2. DNS 服务器政策标签页上,点击创建政策

  3. 名称字段中,输入政策的名称。

  4. 可选:在说明字段中,输入政策的说明。

  5. 对于 DNS64,选择开启以启用 DNS64。

  6. 网络字段中,选择您要在其中创建政策的 VPC 网络。选择包含仅限 IPv6 的子网和实例的网络。

gcloud

如需创建 DNS64 服务器政策,请运行 gcloud dns policies create 命令

gcloud beta dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --enable-dns64-all-queries

替换以下内容:

  • NAME:政策的名称。
  • DESCRIPTION:政策的说明。
  • VPC_NETWORK_LIST:DNS 服务器政策绑定到的 VPC 网络的逗号分隔列表。指定包含仅限 IPv6 的子网和实例的网络。

API

如需创建 DNS64 服务器政策,请使用 policies.create 方法

POST https://dns.googleapis.com/dns/beta/projects/PROJECT_ID/policies
{
  "kind": "dns#policy",
  "networks": [
    {
      "kind": "dns#policyNetwork",
      "networkUrl": "NETWORK_URL"
    }
  ],
  "dns64Config":
    {
        "scope":
        {
          allQueries: true,
        }
    }
  }

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • NETWORK_URL:DNS 服务器政策必须绑定到的 VPC 网络的完全限定网址,格式如下:https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME。指定包含仅限 IPv6 的子网和实例的网络。

创建 Cloud NAT 网关以启用 NAT64

在包含仅限 IPv6 的子网和实例的 VPC 网络和区域中创建 Cloud NAT 网关,以配置 Public NAT。

如需详细了解如何创建和管理 Cloud NAT 网关,请参阅使用 Public NAT 设置和管理网络地址转换

如需为 NAT64 创建 Cloud NAT 网关,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击开始使用 创建 Cloud NAT 网关

  3. 网关名称字段中,输入网关的名称。

  4. NAT 类型列表中,选择公共

  5. 选择 Cloud Router 部分中,配置以下内容:

    1. 网络字段中,选择您要在其中创建网关的 VPC 网络。
    2. 区域字段中,为网关设置区域。
    3. Cloud Router 字段中,在该区域中选择或创建 Cloud Router 路由器。
  6. Cloud NAT 映射部分的来源端点类型中,确保选择了虚拟机实例、GKE 节点、无服务器选项。

  7. 来源 IP 版本字段中,选择 IPv6 子网范围,然后配置要为其使用 Cloud NAT 的来源 IPv6 子网范围。

    • 如需为区域中所有子网的内部和外部 IP 范围使用 Cloud NAT,请选择所有子网
    • 如需限制哪些子网可以使用 Cloud NAT,请选择自定义,然后执行以下操作:
      1. 子网部分中,选择一个子网。
      2. 可选:如果您想指定其他子网,请点击添加子网,然后添加其他子网。
  8. 为 Cloud NAT 网关配置任何其他选项。如需了解详情,请参阅 Cloud NAT 文档中的创建 Cloud NAT 网关

  9. 点击创建

gcloud

本部分介绍了如何创建 Cloud NAT 网关,并将其所有配置选项都设置为默认值。如需详细了解如何自定义网关配置,请参阅为 Cloud NAT 网关自定义配置设置

如需创建 Cloud NAT 网关,请使用 gcloud compute routers nats create 命令

  1. 在您要使用 Cloud NAT 网关的区域中创建 Cloud Router 路由器。您需要此 Cloud Router 路由器才能创建 Cloud NAT 网关。

  2. 为 IPv6 来源子网范围配置 Cloud NAT(预览版)。

    以下配置会为区域中的所有 IPv6 子网范围(仅限 IPv6 和双栈子网)启用 NAT。或者,您也可以使用 --nat64-custom-v6-subnet-ip-ranges 标志为特定子网配置 NAT。

    gcloud beta compute routers nats create NAT_CONFIG \
        --router=NAT_ROUTER \
        --region=REGION \
        --auto-allocate-nat-external-ips \
        --nat64-all-v6-subnet-ip-ranges
    

    替换以下内容:

    • NAT_CONFIG:NAT 配置的名称。
    • NAT_ROUTER:您在上一步中创建的 Cloud Router 路由器的名称。
    • REGION:您要在其中使用 Cloud NAT 网关的区域。

API

如需使用 API 创建 Cloud Router 路由器和 Cloud NAT 网关,请使用 routers.insert 方法并设置 nats[] 字段。

本部分介绍了如何创建 Cloud NAT 网关,并将其所有配置选项都设置为默认值。如需详细了解如何自定义网关配置,请参阅创建 Cloud NAT 网关

如需详细了解如何创建 Cloud Router 路由器,请参阅创建 Cloud Router 路由器以将 VPC 网络连接到对等网络

以下配置会为区域中的所有 IPv6 子网范围启用 NAT。或者,您也可以通过将 sourceSubnetworkIpRangesToNat64 设置为 LIST_OF_IPV6_SUBNETWORKS 并在 nats[].nat64Subnetworks[] 字段中指定子网来为特定子网配置 NAT。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers
{
  "name": "ROUTER_NAME",
  "network": "NETWORK",
  "bgp": {
    "asn": "ASN_NUMBER"
  },
  "nats": [
    {
      "name": NAT_CONFIG,
      "sourceSubnetworkIpRangesToNat64": ALL_IPV6_SUBNETWORKS,
      "natIpAllocateOption": AUTO_ONLY
    }
  ]
}

替换以下内容:

  • PROJECT_ID:包含 VPC 网络的项目的 ID。
  • REGION:您希望 Cloud Router 路由器和 Cloud NAT 网关所在的区域。
  • ROUTER_NAME:Cloud Router 路由器的名称;此名称显示在 Google Cloud 控制台中,Google Cloud CLI 会使用此名称引用该 Cloud Router 路由器。
  • NETWORK:要在其中创建 Cloud Router 路由器和 Cloud NAT 网关的 VPC 网络。
  • ASN_NUMBER:您正在配置的 Cloud Router 路由器的专用 ASN64512-655344200000000-4294967294);此 ASN 可以是您尚未在同一区域和网络中用作对等 ASN 的任何专用 ASN,例如,65001;Cloud Router 要求您使用专用 ASN,但您的本地 ASN 可以是公共的,也可以是专用的。
  • NAT_CONFIG:NAT 配置的名称。

后续步骤