Todos os produtos
Search
Central de documentação

Cloud Enterprise Network:Ative comunicação IPv6 inter-região entre VPCs

Última atualização: Sep 02, 2026

Use um transit router da Enterprise Edition para ative a comunicação IPv6 entre VPCs em diferentes regiões.

Nota

O código de exemplo neste tópico permite execução com um único clique em. Execute agora

Cenário

image

Uma empresa possui duas VPCs IPv4: a VPC1 na região China (Hangzhou) e a VPC2 na região China (Shanghai). Ambas as VPCs contêm instâncias ECS com aplicações implantadas. A empresa precisa ative a comunicação IPv6 entre essas VPCs para apoiar o crescimento dos negócios.

Procedimento

Há dois métodos de configuração disponíveis: console e Terraform. Escolha o que melhor atende às suas necessidades.

Console

Pré-requisitos

  • Você crie uma VPC IPv4 na região China (Hangzhou) e outra na região China (Shanghai). Ambas as VPCs possuem instâncias ECS com aplicações implantadas. Para mais informações, consulte Create a VPC with an IPv4 CIDR block.

  • Você crie uma instância do Cloud Enterprise Network (CEN). Para mais informações, consulte Create a CEN instance.

Etapa 1: Ative IPv6 para as VPCs

Para permitir a comunicação IPv6, habilite primeiro o IPv6 tanto na VPC1 quanto na VPC2.

Importante

É possível habilitar o IPv6 para VPCs e vSwitches durante a criação. Caso já tenha habilitado o IPv6 e atribuído blocos CIDR IPv6 às suas VPCs e vSwitches, pule esta etapa.

  1. Faça login no console VPC.

  2. Na barra de navegação superior, selecione a região onde a VPC está localizada.

  3. Na página VPC, localize a VPC desejada e clique em Enable IPv6 na coluna IPv6 CIDR.

  4. Na caixa de diálogo Enable IPv6, defina IPv6 CIDR Block Type como Assign BGP (Multi-ISP), selecione Automatically enable IPv6 for all vSwitches in the VPC e clique em OK.

    • Se você não selecionar Automatically enable IPv6 for all vSwitches in the VPC, será necessário habilitar o IPv6 individualmente para cada vSwitch. Para mais informações, consulte Enable IPv6 for a vSwitch.

    • Após habilitar o IPv6 para a VPC e seus vSwitches, o sistema atribui um bloco CIDR IPv6 a cada um. Visualize os blocos CIDR IPv6 atribuídos na coluna IPv6 CIDR nas páginas VPC e vSwitch.

Etapa 2: Configure endereços IPv6 para as instâncias ECS

Recursos que se comunicam via IPv6 devem possuir endereços IPv6. Configure endereços IPv6 para as instâncias ECS1 e ECS2 neste cenário. Ambas utilizam o sistema operacional Alibaba Cloud Linux 3.2104 LTS 64 bits.

  1. Atribua um endereço IPv6 a cada instância ECS. Para mais informações, consulte Assign an IPv6 address to an existing instance.

    Nota

    Caso já tenha atribuído um endereço IPv6 à instância ECS durante a criação, pule esta etapa.

  2. Configure o endereço IPv6 em cada instância ECS. Para mais informações, consulte Enable IPv6 communication.

    Após a configuração, os endereços IPv6 das instâncias ECS1 e ECS2 aparecem conforme as figuras a seguir.

    Endereço IPv6 da ECS1

    [root@iZ5txxx ipZ ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.xxx.109  netmask 255.255.255.0  broadcast 10.xxx.255
            inet6 240b:xxx:b0b6:838  prefixlen 128  scopeid 0x0<global>
            inet6 fe80::xxx:44b2  prefixlen 64  scopeid 0x20<link>
            ether 00:xxx:44:b2  txqueuelen 1000  (Ethernet)
            RX packets 2864  bytes 476397 (465.2 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3255  bytes 475131 (463.9 KiB)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0

    Na saída, inet6 240b:xxx:b0b6:838 representa o endereço IPv6 global obtido pela ECS1.

    Endereço IPv6 da ECS2

    [root@iZxxx byZ ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.xxx.27  netmask 255.255.255.0  broadcast 192.xxx.255
            inet6 fe80::xxx:0:21c  prefixlen 64  scopeid 0x20<link>
            inet6 240b:xxx:xxx:a97c:9875  prefixlen 128  scopeid 0x0<global>
            ether xxx:1c  txqueuelen 1000  (Ethernet)
            RX packets 2063  bytes 387038 (377.9 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2560  bytes 378127 (369.2 KiB)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0

    Na saída, inet6 240b:xxx:xxx:a97c:9875 prefixlen 128 scopeid 0x0<global> corresponde ao endereço IPv6 global atribuído à ECS2.

Etapa 3: Crie instâncias de transit router

Dentro da sua instância CEN, crie um transit router na região China (Hangzhou) e outro na região China (Shanghai). Esses transit routers permitem a comunicação inter-região entre suas VPCs.

  1. Faça login no console CEN.

  2. Na página CEN Instance, clique em no ID da instância CEN que deseja gerencie.

  3. Na aba Basic Settings > Transit Router, clique em Create Transit Router.

  4. Na caixa de diálogo Create Transit Router, configure o transit router e clique em OK.

    Ao criar uma instância de transit router, configure apenas a Region. Mantenha os demais parâmetros com seus valores padrão. Para mais informações, consulte Create a transit router instance.

Etapa 4: Crie conexões de VPC

Para estabelecer a comunicação inter-região, conecte primeiro suas VPCs aos respectivos transit routers.

  1. Faça login no console CEN.

  2. Na página CEN Instance, clique em no ID da instância CEN que deseja gerencie.

  3. Na aba Basic Settings > Transit Router, localize um dos transit routers criados na Etapa 3. Na coluna Actions, clique em Create Connection.

  4. Na página Connection with Peer Network Instance, configure as definições de conexão e clique em OK.

    Conecte a VPC1 ao transit router na região China (Hangzhou) e a VPC2 ao transit router na região China (Shanghai) utilizando os parâmetros abaixo. Mantenha os demais parâmetros com seus valores padrão. Para mais informações, consulte Create a VPC connection.

    Parâmetro

    Descrição

    VPC1

    VPC2

    Network Type

    Selecione VPC.

    Region

    Selecione a região da instância de rede que deseja conectar.

    Selecione China (Hangzhou).

    Selecione China (Shanghai).

    IPv6

    Habilita o IPv6 para a conexão da VPC. Desativado por padrão.

    Ative este recurso para permitir comunicação IPv6 através do transit router da Enterprise Edition.

    Nota

    É possível habilitar o recurso IPv6 em uma conexão VPC existente. Para mais informações, consulte Enable IPv6 for an existing VPC connection.

    Ative este recurso.

    Ative este recurso.

    Transit Router

    O sistema exibe automaticamente o transit router criado na região atual.

    Account

    Selecione o tipo de conta proprietária da instância de rede.

    Selecione Your Account.

    Selecione Your Account.

    Networks

    Selecione a VPC que deseja conectar.

    Selecione VPC1.

    Selecione VPC2.

    vSwitch

    Selecione vSwitches nas zonas de disponibilidade suportadas pelo transit router.

    • Se o transit router da Enterprise Edition suportar apenas uma zona de disponibilidade na região atual, selecione um vSwitch nessa zona.

    • Caso o transit router da Enterprise Edition suporte múltiplas zonas de disponibilidade na região atual, selecione pelo menos um vSwitch em duas zonas distintas. Esses vSwitches garantem recuperação de desastres no nível de zona para o tráfego entre a VPC e o transit router. Selecionar um vSwitch em cada zona reduz desvios de tráfego, diminui a latência de transmissão e melhora o desempenho.

    Se não houver um vSwitch na zona de disponibilidade necessária, crie um novo. Para mais informações, consulte Create a vSwitch.

    Advanced Settings

    Mantenha as configurações padrão, que ativam os três recursos avançados.

Etapa 5: Crie uma conexão inter-região

Após conectar as VPCs aos respectivos transit routers da Enterprise Edition, crie uma conexão inter-região para viabilizar a comunicação entre elas.

  1. Faça login no console CEN.

  2. Na página CEN Instance, clique em no ID da instância CEN que deseja gerencie.

  3. Na aba Basic Settings > Transit Router, localize um dos transit routers criados na Etapa 3. Na coluna Actions do transit router, clique em Create Connection.

  4. Na página Connection with Peer Network Instance, configure a conexão inter-região e clique em OK.

    A tabela a seguir lista apenas os parâmetros principais. Mantenha os demais parâmetros com seus valores padrão. Para mais informações, consulte Create an inter-region connection by using an Enterprise Edition transit router.

    Parâmetro

    Descrição

    Network Type

    Selecione Inter-region Connection.

    Region

    Selecione uma das regiões que deseja conectar.

    Neste tópico, selecione China (Hangzhou).

    Peer Region

    Selecione a outra região que deseja conectar.

    Neste tópico, selecione China (Shanghai).

    Bandwidth Allocation Mode

    Escolha o modo de alocação de largura de banda para a conexão inter-região.

    Neste tópico, selecione Pay-By-Data-Transfer. A cobrança ocorre conforme a transferência real de dados na conexão inter-região.

    Bandwidth

    Insira o valor de largura de banda para a conexão inter-região. Unidade: Mbit/s.

    Caso selecione Pay-By-Data-Transfer como modo de alocação, este valor representa a largura de banda máxima da conexão inter-região.

    Default Line Type

    Defina o tipo de linha para a conexão inter-região.

    Mantenha o valor padrão. Para detalhes sobre tipos de linha, consulte Line types.

    Advanced Settings

    Mantenha as configurações padrão, que ativam os três recursos avançados.

Etapa 6: Ative sincronização de rotas

Ative a sincronização de rotas nas conexões da VPC1 e da VPC2 para que o transit router anuncie rotas IPv6 para as VPCs.

  1. Faça login no console CEN.

  2. Na página CEN Instance, localize a instância CEN desejada e clique em no respectivo ID.

  3. Na aba Basic Settings > Transit Router, encontre o transit router na região China (Hangzhou) e clique em no seu ID.

  4. Na aba Intra-Region Connections, localize a conexão da VPC1 e ative a sincronização de rotas para a instância de rede na coluna Route Synchronization.

  5. Repita os mesmos passos para ativar a sincronização de rotas na conexão da VPC2 no transit router da região China (Shanghai).

    Com a sincronização de rotas ativada, o transit router da Enterprise Edition sincroniza automaticamente as rotas para as instâncias de rede. Clique em Details na coluna Route Synchronization para acesse a aba Network Instance Route Table e verifique o status da sincronização.

    Entradas de rota da VPC1

    Na aba Network Instance Route Information do transit router, filtre a instância de rede referente à VPC1. A VPC1 aprendeu as seguintes entradas de rota via CEN a partir da VPC na região China (Shanghai):

    • Rotas IPv4: 172.16.0.0/24 e 172.16.1.0/24. O tipo de rota é CEN, o próximo salto é China (Shanghai) e o tipo de próximo salto é VPC.

    • Rotas IPv6: duas rotas 240x:xxxx:xxxx::/64. O tipo de rota é CEN, o próximo salto é China (Shanghai) e o tipo de próximo salto é VPC.

    Entradas de rota da VPC2

    Nas informações de rota da instância de rede da VPC2, as entradas cujo tipo de rota é CEN, próximo salto é China (Hangzhou) e tipo de próximo salto é VPC correspondem às rotas aprendidas da VPC1. Elas incluem os blocos CIDR IPv4 (como 10.0.0.0/24 e 10.0.1.0/24) e os blocos CIDR IPv6 (blocos /64 iniciados com 240). O status dessas entradas é Available, indicando que a VPC2 recebeu com sucesso as rotas publicadas pela VPC1.

Etapa 7: Testar a conectividade

A comunicação IPv6 entre a VPC1 e a VPC2 está agora habilitada. Verifique a conectividade conforme descrito abaixo.

Importante

Por padrão, as regras de grupo de segurança não permitem tráfego IPv6. Antes de prosseguir, garanta que as regras de grupo de segurança da ECS1 e da ECS2 permitam comunicação IPv6. Para mais informações, consulte View security group rules e Add a security group rule.

Por exemplo, adicione uma regra de grupo de segurança para permitir tráfego ICMP (IPv6) de entrada proveniente do bloco CIDR ::/0 a fim de testar a conectividade IPv6.

  1. Faça login na instância ECS1 na VPC1. Para mais informações, consulte Connection methods.

  2. Execute o comando a seguir para enviar ping da instância ECS1 para a instância ECS2 na VPC2 e validar a conectividade.

    ping6 <IPv6 address of ECS2>

    As respostas exibidas na figura confirme o êxito da comunicação IPv6 entre as VPCs.

    [root@iZ5ts             hipZ ~]# ping6 240b:xxx:xxx:xxx:xxx:a97c:9875
    PING 240b:                          a97c:9875(240b:4xxx:xxx:xxx:xxx:a97c:9875) 56 data bytes
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=1 ttl=62 time=192 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=2 ttl=62 time=191 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=3 ttl=62 time=191 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=4 ttl=62 time=191 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=5 ttl=62 time=191 ms
    ^Z
    [2]+  Stopped                 ping6 240b:xxx:xxx:xxx:xxx:a97c:9875

Terraform

Use o Terraform para construir o ambiente deste cenário. Para instruções sobre instalação e configuração do Terraform, consulte Instale Terraform.

Os passos a seguir descrevem como execute o Terraform v1.9.8 em um host Linux. Antes de começar, certifique-se de ter concluído a Authentication.

Nota

Alguns recursos neste tutorial geram custos. Libere-os quando não forem mais necessários para evitar despesas desnecessárias.

Etapa 1: Crie recursos

  1. Crie um diretório para este cenário e acesse-o.

    mkdir tf-CenIpv6 && cd tf-CenIpv6
  2. Crie um arquivo main.tf para defina os recursos.

    touch main.tf
  3. Abra o arquivo main.tf, copie e cole o código abaixo nele e salve o arquivo. Este arquivo contém os recursos e suas configurações para este cenário.

    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 # The mask for the IPv6 CIDR block of the vSwitch.
    }
    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 the system route table ID of the transit router.
    data "alicloud_cen_transit_router_route_tables" "tr1" { # Get the system route table of the transit router.
      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.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.hangzhou_region_id}&instanceId=${alicloud_instance.ecs1.id}"
    }
    
    output "ecs2_login_address" {
      value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.shanghai_region_id}&instanceId=${alicloud_instance.ecs2.id}"
    }
  4. Inicialize o Terraform no diretório.

    terraform init
  5. Crie os recursos. O Terraform exibirá primeiro uma prévia do plano. Após confirme, insira yes para iniciar a criação dos recursos.

    terraform apply

Etapa 2: Verifique conectividade

A comunicação IPv6 entre a VPC1 e a VPC2 está agora habilitada. Verifique a conectividade conforme descrito abaixo.

  1. Faça login na instância ECS2 (nome da instância: tf-CenIpv6-ecs2).

    Nos outputs do Terraform, localize a URL de login da ECS2, copie-a para o navegador e abra-a. Ao fazer login, selecione Temporary SSH key-based como método de autenticação.

    Outputs:
    
    ecs1_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-hangzhou&instanceId=i-bp1g"
    ecs2_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai&instanceId=i-uf6j"
  2. Na instância ECS2, execute o comando a seguir para visualize seu endereço IPv6:

    ifconfig
    [root@iZxxx byZ ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.xxx.27  netmask 255.255.255.0  broadcast 192.xxx.255
            inet6 fe80::xxx:0:21c  prefixlen 64  scopeid 0x20<link>
            inet6 240b:xxx:xxx:a97c:9875  prefixlen 128  scopeid 0x0<global>
            ether xxx:1c  txqueuelen 1000  (Ethernet)
            RX packets 2063  bytes 387038 (377.9 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2560  bytes 378127 (369.2 KiB)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0

    Na saída, inet6 240b:xxx:xxx:a97c:9875 prefixlen 128 scopeid 0x0<global> corresponde ao endereço IPv6 global atribuído à ECS2.

  3. Faça login na instância ECS1 (nome da instância: tf-CenIpv6-ecs1).

    Nos outputs do Terraform, localize a URL de login da ECS1, copie-a para o navegador e abra-a. Ao fazer login, selecione Temporary SSH key-based como método de autenticação.

    Outputs:
    
    ecs1_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-hangzhou&instanceId=i-bp1g4zxxx"
    ecs2_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-shanghai&instanceId=i-uf6ja1xxx"
  4. Execute o comando a seguir para enviar ping da instância ECS1 para a instância ECS2 na VPC2 e validar a conectividade.

    ping6 <IPv6 address of ECS2>
    [root@iZ5ts             hipZ ~]# ping6 240b:xxx:xxx:xxx:xxx:a97c:9875
    PING 240b:                          a97c:9875(240b:4xxx:xxx:xxx:xxx:a97c:9875) 56 data bytes
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=1 ttl=62 time=192 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=2 ttl=62 time=191 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=3 ttl=62 time=191 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=4 ttl=62 time=191 ms
    64 bytes from 240b:xxx:xxx:xxx:xxx:a97c:9875: icmp_seq=5 ttl=62 time=191 ms
    ^Z
    [2]+  Stopped                 ping6 240b:xxx:xxx:xxx:xxx:a97c:9875

    As respostas exibidas na figura confirme o êxito da comunicação IPv6 entre as VPCs.

Etapa 3: Liberar recursos

Execute o comando a seguir para liberar os recursos quando não forem mais necessários.

terraform destroy --auto-approve