全部產品
Search
文件中心

Cloud Enterprise Network:使用企業版轉寄路由器實現跨地區VPC間的IPv6網路通訊

更新時間:Feb 27, 2025

企業版轉寄路由器執行個體建立後預設支援轉寄IPv6流量、學習並傳播IPv6路由。本文介紹如何使用企業版轉寄路由器實現跨地區VPC間的IPv6網路通訊。

說明

本教程所含範例程式碼支援一鍵運行,您可以直接運行代碼。一鍵運行

情境樣本

image

本文以上圖情境為例。某企業在阿里雲華東1(杭州)地區擁有VPC1(IPv4)、在華東2(上海)地區擁有VPC2(IPv4)。VPC執行個體下均使用Elastic Compute Service(Elastic Compute Service)產品部署了相關應用。因業務發展,企業希望VPC之間可以實現IPv6網路通訊。

操作步驟

本文提供控制台和Terraform兩種配置方式,請按需選擇。

控制台

準備工作

  • 您已經在阿里雲華東1(杭州)地區、華東2(上海)地區分別建立了一個VPC執行個體(IPv4),VPC執行個體中均使用ECS部署了相關應用。具體操作,請參見搭建IPv4專用網路

  • 您已經建立了雲企業網執行個體。具體操作,請參見建立雲企業網執行個體

步驟一:為VPC執行個體開啟IPv6功能

VPC執行個體需開啟IPv6功能後才支援IPv6網路通訊。根據以下步驟,分別為VPC1和VPC2開啟IPv6功能。

重要

建立VPC執行個體時支援為VPC執行個體和交換器執行個體開啟IPv6功能,如果您建立的VPC執行個體和交換器執行個體已經開啟了IPv6功能並分配了IPv6位址區段,可跳過本步驟。

  1. 登入專用網路管理主控台

  2. 在頂部功能表列,選擇VPC執行個體的地區。

  3. 專用網路頁面,找到目標VPC執行個體,在IPv6網段列單擊開通IPv6

  4. 開通IPv6對話方塊中,IPv6網段類型選擇分配BGP(多線),並選中自動開啟VPC內所有交換器IPv6功能,然後單擊確定

    • 如果您未選中自動開啟VPC內所有交換器IPv6功能,您需要為每個交換器單獨開通IPv6網段。具體操作,請參見交換器開通IPv6

    • 為VPC執行個體和交換器執行個體開啟IPv6功能後,系統會為VPC執行個體和交換器執行個體分配IPv6網段,您可以在專用網路交換器頁面的IPv6網段列查看已指派的IPv6網段資訊。下圖展示如何查看VPC執行個體的IPv6網段,交換器執行個體的IPv6網段查看方式與VPC執行個體類似,此處不再展示。ipV6網段

步驟二:為ECS執行個體配置IPv6地址

在進行IPv6網路互連前,請確保要互連的資源已經擁有IPv6地址。本文情境中需要為ECS1和ECS2分別配置IPv6地址,ECS1和ECS2均使用Alibaba Cloud Linux 3.2104 LTS 64位作業系統。

  1. 為ECS執行個體分配IPv6地址。具體操作,請參見為已有實例分配IPv6地址

    說明

    如果您在建立ECS執行個體時已經為其分配了IPv6地址,可跳過本步驟。

  2. 為ECS執行個體配置IPv6地址。具體操作,請參見IPv6通訊

    配置完成後,ECS1和ECS2的IPv6地址如下圖所示。

    ECS1的IPv6地址

    ECS1-IPv6

    ECS2的IPv6地址

    ECS2-IPv

步驟三:建立轉寄路由器執行個體

在雲企業網執行個體下,分別在華東1(杭州)地區和華東2(上海)地區建立轉寄路由器執行個體,以便通過轉寄路由器實現VPC執行個體間的跨地區互連。

  1. 登入雲企業網管理主控台

  2. 云企业网实例頁面,找到目標雲企業網執行個體,單擊目標執行個體ID。

  3. 基本資料 > 轉寄路由器頁簽,單擊建立轉寄路由器

  4. 建立轉寄路由器對話方塊,配置轉寄路由器執行個體資訊,然後單擊確認

    建立轉寄路由器執行個體時僅需要配置地區,其餘配置項保持預設狀態。更多資訊,請參見建立轉寄路由器執行個體

步驟四:建立VPC串連

在實現VPC執行個體跨地區互連前,您需要先將VPC執行個體串連至轉寄路由器中。

  1. 登入雲企業網管理主控台

  2. 云企业网实例頁面,找到目標雲企業網執行個體,單擊目標執行個體ID。

  3. 基本信息 > 转发路由器頁簽,找到步驟三中建立的任意一個轉寄路由器執行個體,在操作列單擊创建网络实例连接

  4. 连接网络实例頁面,根據以下資訊配置待串連的網路執行個體資訊,然後單擊确定创建

    根據下表資訊,將VPC1串連至華東1(杭州)地區的轉寄路由器、將VPC2串連至華東2(上海)地區的轉寄路由器。以下僅列舉本文強相關的配置項,其餘配置項保持預設狀態。更多資訊,請參見建立VPC串連

    配置項

    說明

    VPC1

    VPC2

    实例类型

    選擇Virtual Private Cloud

    地域

    選擇待串連的網路執行個體所在的地區。

    選擇華東1(杭州)

    選擇華東2(上海)

    IPv6支援

    選擇是否為VPC串連開啟IPv6功能。系統預設關閉該功能。

    如果VPC執行個體需通過企業版轉寄路由器實現IPv6網路通訊,則需開啟本功能。

    說明

    對於已經建立的VPC串連,支援單獨開啟IPv6功能。具體操作,請參見為VPC串連單獨開啟IPv6功能

    選擇開啟IPv6功能。

    選擇開啟IPv6功能。

    转发路由器

    系統自動顯示當前地區下已建立的轉寄路由器執行個體。

    资源归属UID

    選擇待串連的網路執行個體所屬的帳號類型。

    選擇同帳號

    選擇同帳號

    網路執行個體

    選擇待串連的VPC執行個體。

    選擇VPC1。

    選擇VPC2。

    交換器

    在轉寄路由器支援的可用性區域選擇交換器執行個體。

    • 如果企業版轉寄路由器在當前地區僅支援一個可用性區域,則您需要在當前可用性區域選擇一個交換器執行個體。

    • 如果企業版轉寄路由器在當前地區支援多個可用性區域,則您需要在至少2個可用性區域中各選擇一個交換器執行個體。在VPC和企業版轉寄路由器流量互連的過程中,這2個交換器執行個體可以實現可用性區域層級的容災。

      推薦您在每個可用性區域中都選擇一個交換器執行個體,以減少流量繞行,體驗更低傳輸時延以及更高效能。

    如果您在對應的可用性區域沒有交換器執行個體,需建立交換器執行個體。具體操作,請參見建立交換器

    高级配置

    本文保持預設配置,即選擇開啟三種進階功能。

步驟五:建立跨地區串連

將VPC執行個體串連至企業版轉寄路由器後,您還要建立跨地區串連才能實現VPC執行個體間的跨地區互連。

  1. 登入雲企業網管理主控台

  2. 云企业网实例頁面,找到目標雲企業網執行個體,單擊目標執行個體ID。

  3. 基本信息 > 转发路由器頁簽下,找到步驟三中建立的任意一個轉寄路由器執行個體,在轉寄路由器執行個體的操作列單擊创建网络实例连接

  4. 连接网络实例頁面,配置跨地區串連資訊,然後單擊确定创建

    以下僅列舉本文強相關的配置項,其餘配置項保持預設狀態。更多資訊,請參見使用企業版轉寄路由器建立跨地區串連

    配置項

    說明

    实例类型

    選擇跨地域连接

    地域

    選擇要互連的地區。

    本文選擇華東1(杭州)

    對端地區

    選擇要互連的對端地區。

    本文選擇華東2(上海)

    頻寬分配方式

    選擇跨地區串連的頻寬分配方式。

    本文選擇按流量付費,系統將按照跨地區串連實際使用的流量計費。

    頻寬

    輸入跨地區串連的頻寬值。單位:Mbps。

    按流量付費的頻寬分配方式下,該配置項表示跨地區串連的限速頻寬值。

    預設鏈路類型

    選擇跨地區串連的鏈路類型。

    本文保持預設值。鏈路類型說明,請參見鏈路類型

    高级配置

    本文保持預設配置,即選擇開啟三種進階功能。

步驟六:開啟路由同步

企業版轉寄路由器預設不向VPC執行個體傳播IPv6路由,您需要分別為VPC1串連和VPC2串連開啟路由同步功能,使企業版轉寄路由器可以向VPC執行個體傳播IPv6路由。

  1. 登入雲企業網管理主控台

  2. 雲企業網執行個體頁面,找到目標雲企業網執行個體,單擊目標執行個體ID。

  3. 基本資料 > 轉寄路由器頁簽,找到華東1(杭州)地區的轉寄路由器執行個體,單擊轉寄路由器執行個體ID。

  4. 地區內串連管理頁簽,找到VPC1串連,在路由同步列為網路執行個體開啟路由同步。

  5. 執行相同的操作,在華東2(上海)地區的轉寄路由器執行個體下為VPC2串連開啟路由同步功能。

    網路執行個體串連開啟路由同步後, 企業版轉寄路由器將自動向網路執行個體同步路由。您可以在路由同步列單擊詳情,跳轉至網路執行個體路由資訊頁簽查看路由同步情況。

    VPC1的路由條目

    image

    VPC2的路由條目

    image

步驟七:測試連通性

完成上述步驟後,VPC1和VPC2之間已經可以實現IPv6網路通訊了。以下內容介紹如何測試VPC執行個體間的IPv6網路連通性。

重要

預設情況下,安全性群組規則不允許IPv6網路通訊。在執行以下操作前,請確保ECS1和ECS3所屬的安全性群組規則允許IPv6網路通訊。具體操作,請參見查詢安全性群組規則添加安全性群組規則

例如安全性群組入方向開放ICMP(IPv6)協議,授權::/0網段,用於測試IPv6網路連通性。

  1. 登入VPC1下的ECS1執行個體。具體操作,請參見ECS遠端連線方式概述

  2. 執行以下命令,嘗試使用ECS1的IPv6地址訪問VPC2下的ECS3執行個體,驗證通訊是否正常。

    ping6 <ECS3的IPv6地址>

    如果ECS1可以收到如下所示的回複報文,則證明VPC執行個體之間已經可以進行IPv6網路通訊了。

    IPv

Terraform

您可以使用Terraform搭建本文樣本環境,關於Terraform的安裝和配置,請參考Install Terraform

下面步驟以Linux主機運行Terraform v1.9.8為例進行介紹,操作前請確保您已經完成Authentication

說明

本教程樣本包含的部分資源會產生一定費用,請在不需要時及時進行釋放或退訂。

第一步:建立資源

  1. 為本文的實踐情境建立一個目錄,並進入該目錄。

    mkdir tf-CenIpv6 && cd tf-CenIpv6
  2. 建立一個main.tf檔案,用於定義資源資訊。

    touch main.tf
  3. 開啟main.tf檔案,複製如下代碼,粘貼到檔案中並儲存。此檔案包含了本文實踐情境中需要用到的資源和對應配置。

    variable "pname" {
      description = "The prefix name for resources"
      type        = string
      default     = "tf-CenIpv6"
    }
    
    variable "default_region_id" {
      description = "The default region id"
      type        = string
      default     = "cn-hangzhou"
    }
    
    variable "hangzhou_region_id" {
      description = "The hangzhou region id"
      type        = string
      default     = "cn-hangzhou"
    }
    
    variable "shanghai_region_id" {
      description = "The shanghai region id"
      type        = string
      default     = "cn-shanghai"
    }
    
    variable "hangzhou_az_list" {
      description = "List of availability zones to use"
      type        = list(string)
      default     = ["cn-hangzhou-j", "cn-hangzhou-k"]
    }
    
    variable "shanghai_az_list" {
      description = "List of availability zones to use"
      type        = list(string)
      default     = ["cn-shanghai-m", "cn-shanghai-n"]
    }
    
    # --- provider ---
    provider "alicloud" { # default hangzhou
      region = var.default_region_id
    }
    
    provider "alicloud" {
      alias  = "hangzhou"
      region = var.hangzhou_region_id
    }
    
    provider "alicloud" {
      alias  = "shanghai"
      region = var.shanghai_region_id
    }
    
    # --- 2 vpc and 4 vsw ---
    resource "alicloud_vpc" "vpc1" {
      provider    = alicloud.hangzhou
      vpc_name    = "${var.pname}-vpc1"
      cidr_block  = "10.0.0.0/16"
      enable_ipv6 = true
    }
    resource "alicloud_vpc" "vpc2" {
      provider    = alicloud.shanghai
      vpc_name    = "${var.pname}-vpc2"
      cidr_block  = "172.16.0.0/16"
      enable_ipv6 = true
    }
    resource "alicloud_vswitch" "vsw1-1" {
      provider             = alicloud.hangzhou
      vpc_id               = alicloud_vpc.vpc1.id
      cidr_block           = "10.0.0.0/24"
      zone_id              = var.hangzhou_az_list[0]
      vswitch_name         = "${var.pname}-vsw1-1"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 1 # existed
    }
    resource "alicloud_vswitch" "vsw1-2" {
      provider             = alicloud.hangzhou
      vpc_id               = alicloud_vpc.vpc1.id
      cidr_block           = "10.0.1.0/24"
      zone_id              = var.hangzhou_az_list[1]
      vswitch_name         = "${var.pname}-vsw1-2"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 2
    }
    resource "alicloud_vswitch" "vsw2-1" {
      provider             = alicloud.shanghai
      vpc_id               = alicloud_vpc.vpc2.id
      cidr_block           = "172.16.0.0/24"
      zone_id              = var.shanghai_az_list[0]
      vswitch_name         = "${var.pname}-vsw2-1"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 3
    }
    resource "alicloud_vswitch" "vsw2-2" {
      provider             = alicloud.shanghai
      vpc_id               = alicloud_vpc.vpc2.id
      cidr_block           = "172.16.1.0/24"
      zone_id              = var.shanghai_az_list[1]
      vswitch_name         = "${var.pname}-vsw2-2"
      enable_ipv6          = true
      ipv6_cidr_block_mask = 4
    }
    
    # --- ecs1 ---
    resource "alicloud_instance" "ecs1" {
      provider             = alicloud.hangzhou
      instance_name        = "${var.pname}-ecs1"
      instance_type        = "ecs.e-c1m1.large"
      security_groups      = [alicloud_security_group.sg1.id]
      vswitch_id           = alicloud_vswitch.vsw1-1.id
      image_id             = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
      system_disk_category = "cloud_essd"
      private_ip           = "10.0.0.1"
      ipv6_address_count   = 1
      instance_charge_type = "PostPaid"
      user_data = base64encode(<<-EOT
        #!/bin/bash
        echo ecs_ok > /root/ok.txt
        sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6
      EOT
      )
    }
    
    # --- ecs2 ---
    resource "alicloud_instance" "ecs2" {
      provider             = alicloud.shanghai
      instance_name        = "${var.pname}-ecs2"
      instance_type        = "ecs.e-c1m1.large"
      security_groups      = [alicloud_security_group.sg2.id]
      vswitch_id           = alicloud_vswitch.vsw2-1.id
      image_id             = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
      system_disk_category = "cloud_essd"
      private_ip           = "172.16.0.1"
      ipv6_address_count   = 1
      instance_charge_type = "PostPaid"
      user_data = base64encode(<<-EOT
        #!/bin/bash
        echo ecs_ok > /root/ok.txt
        sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6
      EOT
      )
    }
    
    # sg
    resource "alicloud_security_group" "sg1" {
      provider = alicloud.hangzhou
      name     = "${var.pname}-sg1"
      vpc_id   = alicloud_vpc.vpc1.id
    }
    resource "alicloud_security_group_rule" "allow_inbound_ssh1" {
      provider          = alicloud.hangzhou
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.sg1.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_icmp1" {
      provider          = alicloud.hangzhou
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg1.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_ipv6_icmp1" {
      provider          = alicloud.hangzhou
      type              = "ingress"
      ip_protocol       = "all"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg1.id
      ipv6_cidr_ip      = "::/0"
    }
    
    resource "alicloud_security_group" "sg2" {
      provider = alicloud.shanghai
      name     = "${var.pname}-sg2"
      vpc_id   = alicloud_vpc.vpc2.id
    }
    resource "alicloud_security_group_rule" "allow_inbound_ssh2" {
      provider          = alicloud.shanghai
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "22/22"
      priority          = 1
      security_group_id = alicloud_security_group.sg2.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_icmp2" {
      provider          = alicloud.shanghai
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg2.id
      cidr_ip           = "0.0.0.0/0"
    }
    resource "alicloud_security_group_rule" "allow_inbound_ipv6_icmp2" {
      provider = alicloud.shanghai
    
      type              = "ingress"
      ip_protocol       = "all"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.sg2.id
      ipv6_cidr_ip      = "::/0"
    }
    
    
    # --- cen and tr ---
    resource "alicloud_cen_instance" "cen1" {
      cen_instance_name = "${var.pname}-cen1"
    }
    resource "alicloud_cen_transit_router" "tr1" {
      provider            = alicloud.hangzhou
      transit_router_name = "${var.pname}-tr1"
      cen_id              = alicloud_cen_instance.cen1.id
    }
    resource "alicloud_cen_transit_router" "tr2" {
      provider            = alicloud.shanghai
      transit_router_name = "${var.pname}-tr2"
      cen_id              = alicloud_cen_instance.cen1.id
    }
    # get tr sys table id
    data "alicloud_cen_transit_router_route_tables" "tr1" { # get tr sys table
      transit_router_id               = alicloud_cen_transit_router.tr1.transit_router_id
      transit_router_route_table_type = "System"
    }
    data "alicloud_cen_transit_router_route_tables" "tr2" {
      transit_router_id               = alicloud_cen_transit_router.tr2.transit_router_id
      transit_router_route_table_type = "System"
    }
    
    # tr-peer
    resource "alicloud_cen_transit_router_peer_attachment" "peer" {
      provider                      = alicloud.hangzhou
      cen_id                        = alicloud_cen_instance.cen1.id
      transit_router_id             = alicloud_cen_transit_router.tr1.transit_router_id
      peer_transit_router_region_id = var.shanghai_region_id
      peer_transit_router_id        = alicloud_cen_transit_router.tr2.transit_router_id
      bandwidth_type                = "DataTransfer"
      bandwidth                     = 1
      auto_publish_route_enabled    = true # default is false
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass_peer1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass_peer2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa_peer2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_peer_attachment.peer.transit_router_attachment_id
    }
    
    # cidr_list
    variable "cidr_list" {
      description = "The list of Private CIDR block"
      type        = list(string)
      default     = ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
    }
    
    # attach1
    resource "alicloud_cen_transit_router_vpc_attachment" "attach1" {
      provider          = alicloud.hangzhou
      cen_id            = alicloud_cen_instance.cen1.id
      transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
      vpc_id            = alicloud_vpc.vpc1.id
      zone_mappings {
        zone_id    = var.hangzhou_az_list[0]
        vswitch_id = alicloud_vswitch.vsw1-1.id
      }
      zone_mappings {
        zone_id    = var.hangzhou_az_list[1]
        vswitch_id = alicloud_vswitch.vsw1-2.id
      }
      transit_router_vpc_attachment_name    = "attach1"
      transit_router_vpc_attachment_options = { ipv6Support : "enable" }
      auto_publish_route_enabled            = true # default is false
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa1" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr1.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    resource "alicloud_route_entry" "vpc1_to_tr1" {
      provider              = alicloud.hangzhou
      count                 = 3
      route_table_id        = alicloud_vpc.vpc1.route_table_id
      destination_cidrblock = var.cidr_list[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
    }
    
    # attach2
    resource "alicloud_cen_transit_router_vpc_attachment" "attach2" {
      provider          = alicloud.shanghai
      cen_id            = alicloud_cen_instance.cen1.id
      transit_router_id = alicloud_cen_transit_router.tr2.transit_router_id
      vpc_id            = alicloud_vpc.vpc2.id
      zone_mappings {
        zone_id    = var.shanghai_az_list[0]
        vswitch_id = alicloud_vswitch.vsw2-1.id
      }
      zone_mappings {
        zone_id    = var.shanghai_az_list[1]
        vswitch_id = alicloud_vswitch.vsw2-2.id
      }
      transit_router_vpc_attachment_name    = "attach2"
      transit_router_vpc_attachment_options = { ipv6Support : "enable" }
      auto_publish_route_enabled            = true # default is false
    }
    resource "alicloud_cen_transit_router_route_table_association" "ass2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    resource "alicloud_cen_transit_router_route_table_propagation" "propa2" {
      transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr2.tables[0].id
      transit_router_attachment_id  = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    resource "alicloud_route_entry" "vpc2_to_tr2" {
      provider              = alicloud.shanghai
      count                 = 3
      route_table_id        = alicloud_vpc.vpc2.route_table_id
      destination_cidrblock = var.cidr_list[count.index]
      nexthop_type          = "Attachment"
      nexthop_id            = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
    }
    
    output "ecs1_login_address" {
      value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=${var.hangzhou_region_id}&instanceId=${alicloud_instance.ecs1.id}"
    }
    
    output "ecs2_login_address" {
      value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=${var.shanghai_region_id}&instanceId=${alicloud_instance.ecs2.id}"
    }
  4. 初始化目錄,完成Terraform的初始化配置。

    terraform init
  5. 建立資源。執行後Terraform會先預覽將要建立的資源,確認無誤後,輸入yes正式開始建立。

    terraform apply

第二步:驗證測試

完成上述步驟後,VPC1和VPC2之間已經可以實現IPv6網路通訊了。以下內容介紹如何測試VPC執行個體間的IPv6網路連通性。

  1. 登入ECS2執行個體(執行個體名稱為tf-CenIpv6-ecs2)。

    您可以在Terraform的Outputs輸出中,找到ECS2的登入地址並複製到瀏覽器開啟,登入時注意認證方式選擇臨時SSH密鑰認證

    image

  2. 在ECS2執行個體中,輸入如下命令查看ECS2的IPv6地址

    ifconfig

    ECS2-IPv

  3. 登入ECS1執行個體(執行個體名稱為tf-CenIpv6-ecs1)。

    您可以在Terraform的Outputs輸出中,找到ECS1的登入地址並複製到瀏覽器開啟,登入時注意認證方式選擇臨時SSH密鑰認證

    image

  4. 執行以下命令,嘗試使用ECS1的IPv6地址訪問VPC2下的ECS3執行個體,驗證通訊是否正常。

    ping6 <ECS2的IPv6地址>

    IPv

    如果ECS1可以收到如圖所示的回複報文,則證明VPC執行個體之間已經可以進行IPv6網路通訊了。

第三步:釋放資源

驗證完畢後,如果您不再使用資源,請執行以下命令釋放資源,防止繼續計費。

terraform destroy --auto-approve