Use um transit router da Enterprise Edition para ative a comunicação IPv6 entre VPCs em diferentes regiões.
O código de exemplo neste tópico permite execução com um único clique em. Execute agora
Cenário
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.
É 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.
Faça login no console VPC.
Na barra de navegação superior, selecione a região onde a VPC está localizada.
Na página VPC, localize a VPC desejada e clique em Enable IPv6 na coluna IPv6 CIDR.
-
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.
-
Atribua um endereço IPv6 a cada instância ECS. Para mais informações, consulte Assign an IPv6 address to an existing instance.
NotaCaso já tenha atribuído um endereço IPv6 à instância ECS durante a criação, pule esta etapa.
-
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 0Na saída,
inet6 240b:xxx:b0b6:838representa 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 0Na 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.
Faça login no console CEN.
Na página CEN Instance, clique em no ID da instância CEN que deseja gerencie.
Na aba , clique em Create Transit Router.
-
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.
Faça login no console CEN.
Na página CEN Instance, clique em no ID da instância CEN que deseja gerencie.
Na aba , localize um dos transit routers criados na Etapa 3. Na coluna Actions, clique em Create Connection.
-
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.
Faça login no console CEN.
Na página CEN Instance, clique em no ID da instância CEN que deseja gerencie.
Na aba , localize um dos transit routers criados na Etapa 3. Na coluna Actions do transit router, clique em Create Connection.
-
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.
Faça login no console CEN.
Na página CEN Instance, localize a instância CEN desejada e clique em no respectivo ID.
Na aba , encontre o transit router na região China (Hangzhou) e clique em no seu ID.
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.
-
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/24e172.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/24e10.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.
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.
Faça login na instância ECS1 na VPC1. Para mais informações, consulte Connection methods.
-
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.
Alguns recursos neste tutorial geram custos. Libere-os quando não forem mais necessários para evitar despesas desnecessárias.
Etapa 1: Crie recursos
-
Crie um diretório para este cenário e acesse-o.
mkdir tf-CenIpv6 && cd tf-CenIpv6 -
Crie um arquivo
main.tfpara defina os recursos.touch main.tf -
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®ionId=${var.hangzhou_region_id}&instanceId=${alicloud_instance.ecs1.id}" } output "ecs2_login_address" { value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.shanghai_region_id}&instanceId=${alicloud_instance.ecs2.id}" } -
Inicialize o Terraform no diretório.
terraform init -
Crie os recursos. O Terraform exibirá primeiro uma prévia do plano. Após confirme, insira
yespara 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.
-
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®ionId=cn-hangzhou&instanceId=i-bp1g" ecs2_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-shanghai&instanceId=i-uf6j" -
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 0Na saída,
inet6 240b:xxx:xxx:a97c:9875 prefixlen 128 scopeid 0x0<global>corresponde ao endereço IPv6 global atribuído à ECS2. -
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®ionId=cn-hangzhou&instanceId=i-bp1g4zxxx" ecs2_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-shanghai&instanceId=i-uf6ja1xxx" -
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:9875As 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