A Cloud Enterprise Network (CEN) oferece políticas flexíveis de conectividade, isolamento e redirecionamento de tráfego dentro de uma região. Este tutorial descreve como permitir que VPCs isoladas acessem uma VPC de serviços compartilhados, mantendo-as isoladas entre si.
Contexto
Uma empresa possui três VPCs implantadas na região China (Hangzhou). A VPC3 hospeda serviços compartilhados. O objetivo é permitir que a VPC1 e a VPC2 acessem a VPC3, mantendo-as isoladas entre si.
Planejamento de rede
Use tabelas de rotas personalizadas da CEN, associações de tabela de rotas e aprendizado de rotas para configurar seus segmentos de rede e roteamento da seguinte forma:
Neste exemplo, todas as três VPCs e o transit router pertencem à mesma conta Alibaba Cloud. Para uma implantação entre contas, consulte a seção "Isolamento de rotas de VPC entre contas".
-
Ao conectar a VPC3 ao transit router, ative as configurações avançadas Associate with Default Route Table of Transit Router e Propagate system routes to transit router route table.
A tabela de rotas do sistema do transit router aprende automaticamente as rotas da VPC3, e a VPC3 encaminha o tráfego por meio dessa tabela.
-
Ao conectar a VPC1 e a VPC2 ao transit router, ative apenas a configuração avançada Propagate system routes to transit router route table. Em seguida, associe a VPC1 e a VPC2 a uma tabela de rotas personalizada no transit router e adicione uma entrada de rota personalizada apontando para a VPC3.
A tabela de rotas do sistema do transit router aprende as rotas da VPC1 e da VPC2. A VPC1 e a VPC2 encaminham o tráfego para a VPC3 por meio da tabela de rotas personalizada, impedindo a comunicação direta entre elas.
Adicione uma rota para 0.0.0.0/0 nas tabelas de rotas da VPC1, VPC2 e VPC3. Defina o próximo salto dessa rota como o transit router.
-
A tabela a seguir detalha o plano de rede das VPCs.
ImportanteAo planejar sua rede, certifique-se de que os blocos CIDR das VPCs não se sobreponham.
VPC
vSwitch
Zona do vSwitch
Bloco CIDR
ECS
VPC1
Bloco CIDR primário: 192.168.0.0/16
vSwitch1
Zona A
192.168.0.0/24
Endereço da ECS1:
192.168.0.224
vSwitch2
Zona B
192.168.1.0/24
VPC2
Bloco CIDR primário: 172.16.0.0/16
vSwitch3
Zona A
172.16.0.0/24
Endereço da ECS2:
172.16.0.222
vSwitch4
Zona B
172.16.1.0/24
VPC3
Bloco CIDR primário: 10.0.0.0/16
vSwitch5
Zona A
10.0.0.0/24
Endereço da ECS3:
10.0.0.112
vSwitch6
Zona B
10.0.1.0/24
Procedimento
Conclua este tutorial usando o console Alibaba Cloud ou o Terraform.
Console
Etapa 1: Criar uma instância CEN
Crie uma instância CEN antes de conectar suas instâncias de rede.
Faça login no console CEN.
Na página CEN Instance, clique em Create CEN Instance.
-
Na caixa de diálogo Create CEN Instance, configure os parâmetros a seguir e clique em OK.
Name: Insira um nome para a instância CEN.
Description: Insira uma descrição para a instância CEN.
Etapa 2: Criar conexões de VPC
Na página CEN Instance, clique no ID da sua instância CEN.
Na aba Basic Settings, na seção VPC, clique no ícone
.-
Na página Connection with Peer Network Instance, configure os parâmetros a seguir e clique em OK.
Instance Type: VPC vem selecionado por padrão.
Region: Selecione a região onde a instância de rede está implantada. Neste exemplo, China (Hangzhou) está selecionada.
Transit Router: O sistema cria automaticamente um transit router na região selecionada.
Account: Selecione o tipo de conta proprietária da instância de rede. Neste exemplo, usa-se o valor padrão Your Account.
Método de faturamento: O valor padrão é pagamento conforme o uso.
Connection Name: Insira um nome para a conexão.
Networks: Selecione o ID da VPC que deseja conectar. Neste exemplo, a VPC3 está selecionada.
-
vSwitch: Selecione instâncias de vSwitch em zonas compatíveis com o transit router.
Para regiões de zona única, selecione um vSwitch. Para regiões multizona, selecione pelo menos dois vSwitches em zonas diferentes. Para reduzir a latência, selecione um vSwitch por zona.
-
Advanced Settings: Neste exemplo, para a VPC3, ative apenas Associate with Default Route Table of Transit Router e Propagate system routes to transit router route table.
Três opções vêm ativadas por padrão: Associate with default route table of transit router (associa a conexão da VPC à tabela de rotas padrão do transit router), Propagate system routes to default route table of transit router (anuncia as rotas do sistema da VPC para o transit router, permitindo a comunicação com outras instâncias de rede anexadas) e Automatically create route that points to transit router and add to all route tables of current VPC (adiciona três rotas — 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — a todas as tabelas de rotas da VPC, com próximos saltos apontando para o transit router; por padrão, os transit routers não anunciam rotas para as VPCs). Para personalizar o roteamento, desmarque essas caixas de seleção e configure manualmente as associações e a propagação de rotas. Consulte Manage routes.
NotaPara tráfego IPv6, após criar a conexão da VPC, ative a route synchronization ou manually add IPv6 route entries apontando para a conexão da VPC na VPC.
-
Após criar a conexão para a VPC3, clique em Create More Connections.
Após criar as conexões de VPC, clique em Return to the List para voltar à página de detalhes da instância.
Etapa 3: Associar VPCs a uma tabela de rotas personalizada
Na página de detalhes da instância, localize o transit router criado e clique em seu ID.
Na página de detalhes do transit router, clique na aba Route Table.
No painel à esquerda da aba, clique em Create Route Table.
-
Na caixa de diálogo Create Route Table, configure os parâmetros a seguir e clique em OK.
Transit Router: O sistema seleciona automaticamente o transit router na região atual.
Name: Insira um nome para a tabela de rotas.
Description: Insira uma descrição para a tabela de rotas.
Multi-region ECMP Routing: Mantenha o valor padrão.
Clique em View Route Table Details para retornar à aba Route Table.
Na aba Route Table, selecione a tabela de rotas personalizada recém-criada, clique na aba Route Table Association e, em seguida, clique em Create Association.
-
Na caixa de diálogo Add Association, selecione as conexões de instância de rede a associar a esta tabela de rotas personalizada e clique em OK.
Após a associação, a VPC1 e a VPC2 encaminham o tráfego consultando esta tabela de rotas.
Na página de detalhes da tabela de rotas personalizada, clique na aba Route Entry e, em seguida, clique em Add Route Entry.
-
Na caixa de diálogo Add Route Entry, configure os parâmetros a seguir e clique em OK.
Route Table: O sistema seleciona automaticamente a tabela de rotas personalizada atual.
Transit Router ID: O sistema seleciona automaticamente o transit router na região atual.
Name: Insira um nome para a entrada de rota.
Destination CIDR: Insira o bloco CIDR de destino para a rota. Neste exemplo, insira 10.0.0.0/16.
Blackhole Route: Se você selecionar esta opção, todo o tráfego destinado a esta rota será descartado. Neste exemplo, selecione No.
Next Hop: Selecione o próximo salto para a rota. Neste exemplo, selecione a conexão da VPC3.
Description: Insira uma descrição para a entrada de rota.
Etapa 4: Adicionar uma rota padrão a cada VPC
No console VPC, adicione uma rota com destino 0.0.0.0/0 às tabelas de rotas da VPC1, VPC2 e VPC3. Defina o próximo salto da rota como o transit router.
Faça login no console VPC.
No painel de navegação à esquerda, clique em Route Table.
Na barra de navegação superior, selecione a região onde a tabela de rotas reside.
-
Na página Route Table, localize a tabela de rotas desejada e clique em seu ID.
Neste exemplo, selecione a tabela de rotas da VPC3.
Na página de detalhes da tabela de rotas, na aba Route Entry List, clique em Custom Route e, em seguida, clique em Add Route Entry.
-
No painel Add Route Entry, configure os parâmetros a seguir e clique em OK.
Name: Insira um nome para a entrada de rota.
Destination CIDR Block: Insira o bloco CIDR de destino. Neste exemplo, insira 0.0.0.0/0.
Next Hop Type: Selecione o tipo do próximo salto. Neste exemplo, selecione Transit Router.
Transit Router: Selecione a conexão da instância de rede. Neste exemplo, selecione a conexão da VPC3.
Para obter mais informações sobre os parâmetros, consulte Manage network traffic by using a custom route table.
-
Repita da etapa 4 à etapa 6 para adicionar uma rota com destino 0.0.0.0/0 e o próximo salto apontando para o transit router na VPC1 e na VPC2.
Visualize as informações de roteamento da VPC1, VPC2, VPC3 e das tabelas de rotas do transit router na página de detalhes do transit router no console CEN.
-
Na página de detalhes do transit router, clique em Network Instance Route Table para visualizar as rotas da VPC1, VPC2 e VPC3.
Na página de detalhes do transit router, clique em Network Instance Route Table.
-
Na lista suspensa Networks, selecione o ID da VPC1, VPC2 ou VPC3 para visualizar suas rotas.
Figura 1. Rotas da VPC1
Informações de rota da VPC1: Na aba Route Information da instância do transit router, selecione a instância de rede VPC correspondente. As entradas de rota incluem:
Bloco CIDR de destino
0.0.0.0/0: rota personalizada, não anunciada. O próximo salto é a conexão do transit router.Bloco CIDR de destino
100.64.0.0/10: rota do sistema, não anunciada.Bloco CIDR de destino
192.168.0.0/24: rota do sistema, anunciada.Bloco CIDR de destino
192.168.1.0/24: rota do sistema, anunciada.
Figura 2. Rotas da VPC2
As informações de rota da VPC2 contêm as seguintes quatro entradas de rota:
Bloco CIDR de destino
0.0.0.0/0: rota personalizada, não anunciada. O próximo salto é a instância de conexão inter-regional.Bloco CIDR de destino
100.64.0.0/10: rota do sistema, não anunciada.Bloco CIDR de destino
172.16.0.0/24: rota do sistema, anunciada.Bloco CIDR de destino
172.16.1.0/24: rota do sistema, anunciada.
Figura 3. Rotas da VPC3
Na página de detalhes do transit router, clique na aba Route Information, selecione a instância de rede VPC e a tabela de rotas correspondente e visualize as entradas de rota:
0.0.0.0/0: rota personalizada, não anunciada. O próximo salto é a conexão do transit router (tr-attach).10.0.0.0/24: rota do sistema, anunciada.10.0.1.0/24: rota do sistema, anunciada.100.64.0.0/10: rota do sistema, não anunciada.
-
Na aba Route Table, visualize as rotas que a tabela de rotas do sistema do transit router aprendeu da VPC1, VPC2 e VPC3.
Na página de detalhes do transit router, clique em Route Table.
-
Na aba Route Table, visualize as entradas de rota na tabela de rotas.
Figura 4. Tabela de rotas do sistema
Detalhes das entradas de rota da tabela de rotas do sistema (tipo: System): todas as entradas de rota são do tipo de aprendizado automático e contêm os seguintes blocos CIDR de destino e instâncias de conexão de próximo salto:
10.0.0.0/24e10.0.1.0/24: o próximo salto é attach3 (correspondente à vpc3).172.16.0.0/24e172.16.1.0/24: o próximo salto é attach2 (correspondente à vpc2).192.168.0.0/24e192.168.1.0/24: o próximo salto é attach1 (correspondente à vpc1).
Figura 5. Tabela de rotas personalizada
A página de detalhes da tabela de rotas personalizada do transit router mostra que o tipo da tabela de rotas é Custom e o status é Available. A lista de entradas de rota contém uma rota estática: o bloco CIDR de destino é
10.0.0.0/16, e o próximo salto aponta para a conexão da instância de rede da VPC3.
-
Etapa 5: Testar a conectividade de rede
Teste a conectividade entre a VPC1, a VPC2 e a VPC3.
Antes de começar, verifique se as regras do grupo de segurança das instâncias ECS na VPC1, VPC2 e VPC3 permitem a comunicação entre as instâncias. Para obter mais informações, consulte View security group rules.
Faça login na instância ECS na VPC1. Para obter mais informações, consulte Connection methods for ECS instances.
-
Execute o comando ping no endereço IP da instância ECS na VPC3 para testar a conectividade entre a VPC1 e a VPC3.
A saída confirma que a VPC1 e a VPC3 podem se comunicar.
[root@iZrxxx3iiZ ~]# ping 10.0.0.112 PING 10.0.0.112 (10.0.0.112) 56(84) bytes of data. 64 bytes from 10.0.0.112: icmp_seq=1 ttl=64 time=0.835 ms 64 bytes from 10.0.0.112: icmp_seq=2 ttl=64 time=0.582 ms 64 bytes from 10.0.0.112: icmp_seq=3 ttl=64 time=0.587 ms 64 bytes from 10.0.0.112: icmp_seq=4 ttl=64 time=0.584 ms ^C --- 10.0.0.112 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3112ms rtt min/avg/max/mdev = 0.582/0.647/0.835/0.108 ms [root@iZrj9fxxxmr3iiZ ~]# -
Faça login na instância ECS na VPC2 e execute o comando ping no endereço IP da instância ECS na VPC3 para testar a conectividade entre a VPC2 e a VPC3.
A saída confirma que a VPC2 e a VPC3 podem se comunicar.
[root@iZrxxx a81Z ~]# ping 10.0.0.112 PING 10.0.0.112 (10.0.0.112) 56(84) bytes of data. 64 bytes from 10.0.0.112: icmp_seq=1 ttl=64 time=1.17 ms 64 bytes from 10.0.0.112: icmp_seq=2 ttl=64 time=0.931 ms 64 bytes from 10.0.0.112: icmp_seq=3 ttl=64 time=0.923 ms 64 bytes from 10.0.0.112: icmp_seq=4 ttl=64 time=0.938 ms ^C --- 10.0.0.112 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3035ms rtt min/avg/max/mdev = 0.923/0.992/1.178/0.111 ms [root@iZrj906fxxx LZ ~]# -
Faça login na instância ECS na VPC1 e execute o comando ping no endereço IP da instância ECS na VPC2 para testar a conectividade entre a VPC1 e a VPC2.
A saída confirma que a VPC1 e a VPC2 não conseguem se comunicar.
[root@iZrjxxx r3iiZ ~]# ping 172.16.0.222 PING 172.16.0.222 (172.16.0.222) 56(84) bytes of data. ^Z [5]+ Stopped ping 172.16.0.222 [root@iZrj9f7xxx3iiZ ~]#
Isolamento de rotas de VPC entre contas
O mecanismo de roteamento e isolamento descrito neste tutorial aplica-se igualmente a implantações entre contas. O isolamento ainda é obtido ativando apenas o aprendizado de rotas (Propagate system routes to transit router route table) para a VPC1 e a VPC2, associando-as a uma tabela de rotas personalizada e adicionando uma rota personalizada para a VPC3 nessa tabela. Esse mecanismo independe da conta Alibaba Cloud à qual as VPCs pertencem.
Pré-requisito: Antes de criar uma conexão de VPC entre contas, a conta proprietária da VPC deve conceder autorização à conta proprietária do transit router. Para obter instruções, consulte Cross-account authorization for network instances.
Diferença de configuração: Na Etapa 2: Criar conexões de VPC, no campo Account, selecione Different Account em vez de Your Account e insira o ID da conta principal da conta Alibaba Cloud proprietária da VPC. Todos os outros itens de configuração permanecem iguais aos do cenário de mesma conta. Para obter detalhes sobre os parâmetros, consulte Create a VPC connection.
Responsabilidade pela operação: Da Etapa 1 à Etapa 3 (criação da instância CEN, do transit router, das conexões de VPC e da tabela de rotas personalizada com suas entradas de rota), todas as ações ocorrem na conta proprietária do transit router. A Etapa 4: Adicionar uma rota padrão a cada VPC deve ser executada pela própria conta de cada VPC, no respectivo console VPC.
Isolamento de VPC entre contas usando mapas de rotas
Depois que uma VPC entre contas se conecta à CEN, ela fica totalmente conectada a todas as outras instâncias de VPC no transit router por padrão. Para isolar seletivamente uma VPC entre contas de instâncias de VPC específicas, configure um mapa de rotas na tabela de rotas do transit router em vez de usar o método de tabela de rotas personalizada e associação descrito anteriormente neste tópico. Esse mecanismo difere do isolamento baseado em tabela de rotas personalizada descrito em Isolamento de rotas de VPC entre contas: ele alcança o isolamento filtrando anúncios de rota no plano de controle, sem alterar a tabela de rotas usada pelo anexo de VPC.
Como funciona: Um mapa de rotas controla quais rotas o transit router anuncia para um determinado anexo de VPC. Ao criar um mapa de rotas Deny que corresponda ao tráfego entre dois anexos de VPC, o transit router deixa de anunciar as rotas correspondentes. Assim, as duas instâncias de VPC perdem a conectividade, mesmo que as tabelas de rotas subjacentes não sofram alterações.
Antes de começar: Um mapa de rotas entra em vigor apenas para anúncios de rota posteriores à sua criação. Se já existir uma entrada de rota na tabela que permita a comunicação entre as duas instâncias de VPC, exclua-a primeiro. Caso contrário, a rota existente continuará funcionando e o isolamento não terá efeito.
Para configurar um mapa de rotas de negação:
-
Crie um mapa de rotas na tabela de rotas do transit router com as seguintes configurações:
Action: Deny.
Priority: 20. Um valor menor indica maior prioridade.
Direction: Egress from the regional gateway (o mapa de rotas filtra as rotas conforme elas são anunciadas para fora da região).
Source instance IDs: o ID do anexo da VPC entre contas, por exemplo,
vpc-xxx.Destination instance IDs: o ID do anexo da VPC que você deseja isolar da VPC de origem, por exemplo,
vpc-yyy.
NotaEm alguns casos, a lista suspensa Source instance IDs na página de criação de mapa de rotas no console não exibe opções selecionáveis, mesmo que a conexão da VPC já esteja associada à tabela de rotas. Se isso ocorrer, chame a operação CreateCenRouteMap e passe o ID da instância da VPC no formato
vpc-xxxpara criar o mapa de rotas. Após o mapa de rotas entrar em vigor, faça login na instância ECS na VPC de origem e execute o comando ping para testar a conectividade com uma instância ECS na VPC isolada. O comando ping deve falhar (100% de perda de pacotes), confirmando que o isolamento do mapa de rotas está ativo.
Terraform
Use o Terraform para construir o ambiente deste tutorial. Para obter instruções sobre instalação e configuração do Terraform, consulte Install Terraform.
O procedimento a seguir descreve como executar o Terraform v1.9.8 em um host Linux. Antes de começar, certifique-se de ter configurado a Authentication.
Alguns recursos neste tutorial geram custos. Para evitar cobranças inesperadas, libere os recursos quando não forem mais necessários.
Etapa 1: Criar recursos
O código a seguir define todos os recursos para este cenário. Salve-o como um arquivo .tf em um novo diretório.
variable "pname" {
description = "The prefix name for the resources"
type = string
default = "tf-CenSharedVpc"
}
variable "default_region" {
description = "Default region"
type = string
default = "cn-hangzhou"
}
variable "az_list" {
description = "List of availability zones to use"
type = list(string)
default = ["cn-hangzhou-j", "cn-hangzhou-k"]
}
variable "vpc_cidr_list" {
description = "List of VPC CIDR block"
type = list(string)
default = ["192.168.0.0/16", "172.16.0.0/16", "10.0.0.0/16"]
}
variable "vsw_cidr_list" {
description = "List of VSW CIDR block"
type = list(string)
default = [
"192.168.0.0/24", "192.168.1.0/24",
"172.16.0.0/24", "172.16.1.0/24",
"10.0.0.0/24", "10.0.1.0/24"
]
}
variable "ecs_ip_list" {
description = "List of ECS ip"
type = list(string)
default = ["192.168.0.124", "172.16.0.222", "10.0.0.112"]
}
provider "alicloud" {
region = var.default_region
}
# --- 3vpc 6vsw 3ecs
resource "alicloud_vpc" "vpc" {
count = length(var.vpc_cidr_list)
vpc_name = "${var.pname}-vpc${count.index + 1}"
cidr_block = var.vpc_cidr_list[count.index]
}
resource "alicloud_vswitch" "vsw" {
count = length(var.vsw_cidr_list)
vpc_id = alicloud_vpc.vpc[floor(count.index / length(var.az_list))].id
cidr_block = var.vsw_cidr_list[count.index]
zone_id = var.az_list[count.index % length(var.az_list)]
vswitch_name = "${var.pname}-vsw${count.index + 1}"
}
resource "alicloud_instance" "ecs" {
count = length(var.vpc_cidr_list)
instance_name = "${var.pname}-ecs${count.index + 1}"
instance_type = "ecs.e-c1m1.large"
security_groups = [alicloud_security_group.sg[count.index].id]
vswitch_id = alicloud_vswitch.vsw[count.index * length(var.az_list)].id
image_id = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
system_disk_category = "cloud_essd"
private_ip = var.ecs_ip_list[count.index]
instance_charge_type = "PostPaid"
}
# --- 3 sg
resource "alicloud_security_group" "sg" {
count = length(var.vpc_cidr_list)
name = "${var.pname}-${count.index + 1}"
vpc_id = alicloud_vpc.vpc[count.index].id
}
resource "alicloud_security_group_rule" "allow_inbound_ssh" {
count = length(var.vpc_cidr_list)
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "22/22"
priority = 1
security_group_id = alicloud_security_group.sg[count.index].id
cidr_ip = "0.0.0.0/0"
}
resource "alicloud_security_group_rule" "allow_inbound_icmp" {
count = length(var.vpc_cidr_list)
type = "ingress"
ip_protocol = "icmp"
nic_type = "intranet"
policy = "accept"
port_range = "-1/-1"
priority = 1
security_group_id = alicloud_security_group.sg[count.index].id
cidr_ip = "0.0.0.0/0"
}
# --- cen and tr
resource "alicloud_cen_instance" "cen" {
cen_instance_name = "${var.pname}-cen1"
}
resource "alicloud_cen_transit_router" "tr" {
transit_router_name = "${var.pname}-tr"
cen_id = alicloud_cen_instance.cen.id
}
data "alicloud_cen_transit_router_route_tables" "tr" { # get tr sys table
transit_router_id = alicloud_cen_transit_router.tr.transit_router_id
transit_router_route_table_type = "System"
}
# 3 attach
resource "alicloud_cen_transit_router_vpc_attachment" "attach" {
count = length(var.vpc_cidr_list)
cen_id = alicloud_cen_instance.cen.id
transit_router_id = alicloud_cen_transit_router.tr.transit_router_id
vpc_id = alicloud_vpc.vpc[count.index].id
zone_mappings {
zone_id = var.az_list[0]
vswitch_id = alicloud_vswitch.vsw[count.index * length(var.az_list)].id
}
zone_mappings {
zone_id = var.az_list[1]
vswitch_id = alicloud_vswitch.vsw[count.index * length(var.az_list) + 1].id
}
transit_router_vpc_attachment_name = "attach${count.index + 1}"
}
# 3 propa
resource "alicloud_cen_transit_router_route_table_propagation" "propa" {
count = length(var.vpc_cidr_list)
transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr.tables[0].id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach[count.index].transit_router_attachment_id
}
# 1 custom_table
resource "alicloud_cen_transit_router_route_table" "custom_table" { # create tr custom_table
transit_router_id = alicloud_cen_transit_router.tr.transit_router_id
transit_router_route_table_name = "custom_table"
}
resource "alicloud_cen_transit_router_route_entry" "tr_entry" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.custom_table.transit_router_route_table_id
transit_router_route_entry_destination_cidr_block = "10.0.0.0/16"
transit_router_route_entry_next_hop_type = "Attachment"
transit_router_route_entry_name = "entry1_name"
transit_router_route_entry_description = "entry1_desc"
transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach[2].transit_router_attachment_id
}
# associate attach1\2 custom_table
resource "alicloud_cen_transit_router_route_table_association" "ass1" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.custom_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach[0].transit_router_attachment_id
}
resource "alicloud_cen_transit_router_route_table_association" "ass2" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.custom_table.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach[1].transit_router_attachment_id
}
# ass attach3 sys_table
resource "alicloud_cen_transit_router_route_table_association" "ass3" {
transit_router_route_table_id = data.alicloud_cen_transit_router_route_tables.tr.tables[0].id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach[2].transit_router_attachment_id
}
# vpc entry
resource "alicloud_route_entry" "vpc_entry" {
count = length(var.vpc_cidr_list)
route_table_id = alicloud_vpc.vpc[count.index].route_table_id
destination_cidrblock = "0.0.0.0/0"
nexthop_type = "Attachment"
nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach[count.index].transit_router_attachment_id
}
output "ecs1_login_address" {
value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.ecs[0].id}"
}
output "ecs2_login_address" {
value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.ecs[1].id}"
}
output "ecs3_login_address" {
value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.ecs[2].id}"
}
Etapa 2: Testar a conectividade de rede
Siga estas etapas para testar a conectividade entre a VPC1, a VPC2 e a VPC3.
-
Faça login na instância ECS1 na VPC1 (nome da instância:
tf-CenSharedVpc-ecs1).Encontre a URL de login da ECS1 nas saídas do Terraform. Abra a URL no navegador e use a autenticação Temporary SSH Key-based.
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-hangzhou&instanceId=i-bp1ct8xxx" ecs3_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-hangzhou&instanceId=i-bp1iiwxxx" -
Execute o comando ping no endereço IP da instância ECS3 na VPC3 para testar a conectividade entre a VPC1 e a VPC3.
ping 10.0.0.112A saída confirma que a VPC1 e a VPC3 podem se comunicar.
[root@iZrxxx3iiZ ~]# ping 10.0.0.112 PING 10.0.0.112 (10.0.0.112) 56(84) bytes of data. 64 bytes from 10.0.0.112: icmp_seq=1 ttl=64 time=0.835 ms 64 bytes from 10.0.0.112: icmp_seq=2 ttl=64 time=0.582 ms 64 bytes from 10.0.0.112: icmp_seq=3 ttl=64 time=0.587 ms 64 bytes from 10.0.0.112: icmp_seq=4 ttl=64 time=0.584 ms ^C --- 10.0.0.112 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3112ms rtt min/avg/max/mdev = 0.582/0.647/0.835/0.108 ms [root@iZrj9fxxxmr3iiZ ~]# -
Faça login na instância ECS2 (
tf-CenSharedVpc-ecs2) na VPC2 e execute o comando ping no endereço IP da instância ECS3 na VPC3 para testar a conectividade entre a VPC2 e a VPC3.ping 10.0.0.112A saída confirma que a VPC2 e a VPC3 podem se comunicar.
[root@iZrxxx a81Z ~]# ping 10.0.0.112 PING 10.0.0.112 (10.0.0.112) 56(84) bytes of data. 64 bytes from 10.0.0.112: icmp_seq=1 ttl=64 time=1.17 ms 64 bytes from 10.0.0.112: icmp_seq=2 ttl=64 time=0.931 ms 64 bytes from 10.0.0.112: icmp_seq=3 ttl=64 time=0.923 ms 64 bytes from 10.0.0.112: icmp_seq=4 ttl=64 time=0.938 ms ^C --- 10.0.0.112 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3035ms rtt min/avg/max/mdev = 0.923/0.992/1.178/0.111 ms [root@iZrj906fxxx LZ ~]# -
Faça login na instância ECS1 (
tf-CenSharedVpc-ecs1) na VPC1. Execute o comando ping no endereço IP da instância ECS2 na VPC2 para testar a conectividade entre a VPC1 e a VPC2.ping 172.16.0.222A saída confirma que a VPC1 e a VPC2 não conseguem se comunicar.
[root@iZrjxxx r3iiZ ~]# ping 172.16.0.222 PING 172.16.0.222 (172.16.0.222) 56(84) bytes of data. ^Z [5]+ Stopped ping 172.16.0.222 [root@iZrj9f7xxx3iiZ ~]#
Etapa 3: Limpar recursos
Após a verificação, execute o comando a seguir para liberar os recursos.
terraform destroy --auto-approve