Um roteador de trânsito da edição Enterprise oferece gerenciamento flexível de rotas e permite criar uma cadeia de services que direciona o tráfego para um servidor de segurança para filtragem. Isso aumenta a segurança da rede ao garantir a comunicação apenas do tráfego filtrado.
Caso de uso
Este tópico demonstra como usar um roteador de trânsito da edição Enterprise para proteger o tráfego dentro de uma região. Uma empresa possui três Virtual Private Clouds (VPCs) isoladas na região China (Hangzhou), e a VPC-secure contém um service de segurança. Para suportar o crescimento dos negócios e aumentar a segurança da rede, a empresa deseja ativar a comunicação entre a VPC-workload-a e a VPC-workload-b. No entanto, o service de segurança na VPC-secure deve primeiro filtrar e depois encaminhar todo o tráfego entre elas.
Conecte a VPC-workload-a e a VPC-workload-b a um roteador de trânsito da edição Enterprise. Em seguida, crie regras de roteamento personalizadas no roteador de trânsito para proteger a comunicação entre elas.
Pré-requisitos
Verifique se a VPC que hospeda seu service de segurança está em uma região compatível com o Transit Router Enterprise Edition. Para obter mais informações sobre as regiões e zonas compatíveis com o Transit Router Enterprise Edition, consulte Supported regions and zones for Transit Router Enterprise Edition.
-
Crie três Virtual Private Clouds (VPCs) na região China (Hangzhou) e implante uma instância ECS em cada uma. Para obter mais informações, consulte Create an IPv4-only VPC.
A VPC deve ter vSwitches suficientes na zona compatível com o roteador de trânsito da edição Enterprise. Cada vSwitch precisa ter pelo menos um endereço IP ocioso. Para obter mais informações sobre como criar um vSwitch, consulte Create a vSwitch.
Se o roteador de trânsito da edição Enterprise estiver implantado em uma região que suporta apenas uma zona, por exemplo, China (Nanjing - Local Region), a VPC deve ter pelo menos um vSwitch nessa zona.
Caso o roteador de trânsito da edição Enterprise esteja implantado em uma região com suporte a múltiplas zonas, como China (Shanghai), a VPC necessita de pelo menos dois vSwitches nessas zonas. Os vSwitches devem estar em zonas diferentes.
Por exemplo, ao criar uma VPC na região China (Hangzhou), ela deve possuir pelo menos um vSwitch na Zona I e outro na Zona J. Cada vSwitch requer no mínimo um endereço IP disponível.
NotaO Transit Router Enterprise Edition cria uma interface de rede elástica (ENI) em um vSwitch dentro de uma zona. A ENI funciona como ponto de entrada para o tráfego da VPC para a instância do Transit Router Enterprise Edition. Cada ENI consome um endereço IP.
Neste exemplo, a VPC-secure contém três vSwitches: o vSwitch1 destina-se à implantação do service de segurança, enquanto o vSwitch2 e o vSwitch3 servem para conexão com o Transit Router Enterprise Edition. A tabela a seguir apresenta o plano de rede para as três VPCs. Ao planejar sua rede, garanta que os blocos CIDR das redes interconectadas não se sobreponham. Para todas as três instâncias ECS, selecione a imagem Alibaba Cloud Linux.
VPC
vSwitch
Zona do vSwitch
Bloco CIDR
Endereço ECS
VPC-secure
Bloco CIDR: 10.0.0.0/16
vSwitch1
Zone I
10.0.0.0/24
ECS-secure: 10.0.0.1
vSwitch2
Zone J
10.0.1.0/24
vSwitch3
Zone K
10.0.2.0/24
VPC-workload-a
Bloco CIDR: 10.1.0.0/16
vSwitch4
Zone I
10.1.0.0/24
ECS-workload-a: 10.1.0.1
vSwitch5
Zone J
10.1.1.0/24
vSwitch6
Zone K
10.1.2.0/24
VPC-workload-b
Bloco CIDR: 10.2.0.0/16
vSwitch7
Zone I
10.2.0.0/24
ECS-workload-b: 10.2.0.1
vSwitch8
Zone J
10.2.1.0/24
vSwitch9
Zone K
10.2.2.0/24
Confirme se as regras do grupo de segurança para as instâncias ECS na VPC-secure, VPC-workload-a e VPC-workload-b permitem tráfego ICMP de entrada. Para obter mais informações, consulte Query security group rules e Add a security group rule.
Introdução
Este tópico descreve como configure o ambiente no console e com o Terraform. Selecione o método conforme necessário.
Console
Etapa 1: Criar uma instância CEN
Uma instância Cloud Enterprise Network (CEN) é um recurso básico para criar e gerencie uma rede integrada. Crie uma instância CEN antes de conectar instâncias de rede usando um roteador de trânsito da edição Enterprise.
Faça login no CEN console.
Na página Instances, 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. Neste exemplo, insira
CEN-intra-region-secure-communication.Description: Insira uma descrição para a instância CEN.
Resource Group: Selecione o grupo de recursos ao qual a instância CEN pertence. Neste exemplo, nenhum grupo de recursos é selecionado, portanto, a instância CEN pertencerá ao grupo de recursos padrão após a criação.
Após a criação da instância CEN, a lista de instâncias CEN conterá uma instância chamada CEN-intra-region-secure-communication com o status Available.
Etapa 2: Criar uma instância de roteador de trânsito
Para conectar instâncias de rede usando um roteador de trânsito da edição Enterprise, crie primeiro uma instância de roteador de trânsito na mesma região das instâncias de rede.
Faça login no CEN console.
Na página CEN Instance, selecione a instância CEN criada na Etapa 1 e clique no ID da instância.
Na aba , clique em Create Transit Router.
-
Na caixa de diálogo Create Transit Router, configure os parâmetros do roteador de trânsito e clique em OK.
Parâmetro
Descrição
Configuração
Region
Selecione a região onde deseja implantar a instância do roteador de trânsito.
Neste exemplo, China (Hangzhou) está selecionado.
Edition
A edição da instância do roteador de trânsito.
O sistema determina e exibe automaticamente a edição da instância do roteador de trânsito na região atual.
Enable Multicast
Especifica se o recurso de multicast deve ser ativado para o roteador de trânsito.
Neste exemplo, o recurso de multicast permanece desativado (configuração padrão).
Name
Insira um nome para a instância do roteador de trânsito.
Neste exemplo, insira
TR-intra-region-secure-communication.Description
Insira uma descrição para a instância do roteador de trânsito.
Insira uma descrição para o roteador de trânsito.
Tag
Adicione uma tag ao roteador de trânsito da edição Enterprise.
Neste exemplo, este parâmetro permanece vazio.
Transit Router CIDR
Insira um bloco CIDR para o roteador de trânsito.
Para obter mais informações, consulte Transit router CIDR block.
Este exemplo não especifica um bloco CIDR para o roteador de trânsito.
Após a criação do roteador de trânsito, a lista de roteadores de trânsito conterá um roteador de trânsito da edição Enterprise chamado TR-intra-region-secure-communication na região China (Hangzhou) e com o status Available.
Etapa 3: Conectar as instâncias VPC
Conecte as instâncias de rede que precisam se comunicar ao roteador de trânsito da edição Enterprise.
Faça login no CEN console.
Na página CEN Instance, clique no ID da instância CEN que deseja gerencie.
Na aba , localize o roteador de trânsito na região de destino. Na coluna Actions, clique em Create Connection > Create Intra-Region Connection.
-
Na página Create Intra-Region Connection, configure os parâmetros a seguir e clique em OK.
Conecte a VPC-secure, a VPC-workload-a e a VPC-workload-b ao roteador de trânsito da edição Enterprise usando os parâmetros descritos na tabela a seguir.
Parâmetro
Descrição
VPC-secure
VPC-workload-a
VPC-workload-b
Network Type
Selecione o tipo de instância de rede a ser conectada.
VPC
VPC
VPC
Region
Selecione a região da instância de rede.
China (Hangzhou)
China (Hangzhou)
China (Hangzhou)
Transit Router
O sistema exibe automaticamente as instâncias de roteador de trânsito na região selecionada.
Account
Selecione o tipo de conta proprietária da instância de rede.
Your Account
Your Account
Your Account
Billing Method
O valor padrão é Pay-As-You-Go.
Attachment Name
Insira um nome para a conexão da instância de rede.
attachment-secureattachment-workload-aattachment-workload-bTag
Adicione uma tag à conexão da instância de rede.
Neste exemplo, este parâmetro permanece vazio.
Neste exemplo, este parâmetro permanece vazio.
Neste exemplo, este parâmetro permanece vazio.
Networks
Selecione a instância de rede a ser conectada.
Selecione VPC-secure.
Selecione VPC-workload-a.
Selecione VPC-workload-b.
VSwitch
Selecione um vSwitch em uma zona compatível com o roteador de trânsito.
Para implementar recuperação de desastres no nível de zona, caso possua vSwitches em múltiplas zonas suportadas, selecione um vSwitch de cada zona.
China (Hangzhou) Zone J: Selecione vSwitch2.
China (Hangzhou) Zone K: Selecione vSwitch3.
China (Hangzhou) Zone I: Selecione vSwitch4.
China (Hangzhou) Zone J: Selecione vSwitch5.
China (Hangzhou) Zone I: Selecione vSwitch7.
China (Hangzhou) Zone J: Selecione vSwitch8.
Advanced Settings
Para VPC-secure, VPC-workload-a e VPC-workload-b, desative as três configurações avançadas a seguir.
Associate with Default Route Table of Transit Router
Propagate system routes to transit router route table
Auto-add transit router routes to all VPC route tables
NotaAtive essas configurações permite que VPC-secure, VPC-workload-a e VPC-workload-b aprendam automaticamente as rotas umas das outras e se comuniquem, o que ignora a inspeção de segurança necessária. Portanto, desative essas configurações e configure manualmente tabelas de rotas e adicione entradas de rota para personalizar a conectividade e ative a inspeção segura de tráfego.
Após a criação das conexões, a aba Intra-region Connection conterá três anexos de VPC:
|
Name |
Instância de rede |
Detalhes do anexo - vSwitch |
|
attachment-secure |
VPC-secure |
vSwitch2, vSwitch3 |
|
attachment-workload-a |
VPC-workload-a |
vSwitch4, vSwitch5 |
|
attachment-workload-b |
VPC-workload-a |
vSwitch7, vSwitch8 |
Etapa 4: Adicionar rotas às VPCs
Adicione entradas de rota à VPC-secure, VPC-workload-a e VPC-workload-b para direcionar o tráfego delas ao roteador de trânsito da edição Enterprise. Isso permite gerencie o tráfego dentro do roteador de trânsito para inspecionar o tráfego com segurança.
-
Configure as tabelas de rotas na VPC-secure:
Na VPC-secure, crie duas tabelas de rotas personalizadas. Defina Associated Resource Type como vSwitch e nomeie as tabelas de rotas como routetable_secure-to-workload e routetable_workload-to-secure.
-
Associate a routetable_secure-to-workload com o vSwitch1 e add a route entry:
Destination CIDR Block: Insira
0.0.0.0/0.Next Hop Type: Selecione Transit Router.
Transit Router: Selecione
attachment-secure.
-
Associe a routetable_workload-to-secure aos vSwitch2 e vSwitch3 e adicione uma entrada de rota:
Destination CIDR Block: Insira
0.0.0.0/0.Next Hop Type: Selecione ECS Instance.
ECS Instance: Selecione ECS-secure (a instância ECS de segurança).
-
Nas tabelas de rotas do sistema da VPC-workload-a e da VPC-workload-b, adicione a seguinte entrada de rota para direcionar o tráfego entre a VPC-workload-a e a VPC-workload-b ao roteador de trânsito:
Destination CIDR Block: Insira 0.0.0.0/0.
Next Hop Type: Selecione Transit Router.
Transit Router: Ao configurar a tabela de rotas do sistema para a VPC-workload-a, selecione
attachment-workload-a. Ao configurar a tabela de rotas do sistema para a VPC-workload-b, selecioneattachment-workload-b.
Após a adição das entradas de rota, a nova configuração de roteamento para cada VPC será a seguinte:
Instância de rede | vSwitch | Tabela de rotas associada | Entrada de rota | Próximo salto |
VPC-secure | vSwitch1 | routetable_secure-to-workload | 0.0.0.0/0 |
|
vSwitch2 | routetable_workload-to-secure | 0.0.0.0/0 | ECS-secure | |
vSwitch3 | ||||
VPC-workload-a |
| Tabela de rotas do sistema | 0.0.0.0/0 |
|
VPC-workload-b |
| Tabela de rotas do sistema | 0.0.0.0/0 |
|
Etapa 5: Configure rotas do roteador de trânsito
Depois que o tráfego das VPCs entra no roteador de trânsito da edição Enterprise, personalize a conectividade criando tabelas de rotas e adicionando entradas de rota. Essa configuração guiará primeiro o tráfego da VPC-workload-a e da VPC-workload-b para a VPC-secure para inspeção e, em seguida, encaminhará o tráfego filtrado da VPC-secure para seu destino final.
Faça login no CEN console.
Na página CEN Instance, clique no ID da sua instância CEN.
Acesse a aba e clique no ID do roteador de trânsito que deseja gerencie.
Na aba Route Table, crie duas tabelas de rotas personalizadas para o roteador de trânsito da edição Enterprise. Nomeie-as como TR_routetable_workload-to-secure e TR_routetable_secure-to-workload. Para obter mais informações, consulte Custom route tables.
-
Associe as conexões
attachment-workload-aeattachment-workload-ba uma tabela de rotas personalizada do roteador de trânsito da edição Enterprise e configure uma entrada de rota para a tabela de rotas.Na aba Route Table, selecione a tabela de rotas personalizada TR_routetable_workload-to-secure, 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 serem associadas a esta tabela de rotas personalizada e clique em OK.
Neste exemplo, associe as conexões
attachment-workload-aeattachment-workload-ba esta tabela de rotas personalizada. Na página de detalhes da tabela de rotas, clique na aba Route Entry e clique em Add Route Entry.
-
Na caixa de diálogo Add Route Entry, defina os parâmetros a seguir e clique em OK.
Destination CIDR: Neste exemplo, insira 0.0.0.0/0.
Blackhole Route: Se você selecione esta opção, todo o tráfego destinado a esta rota será descartado. Neste exemplo, selecione No.
Next Hop: Neste exemplo, selecione
attachment-secure.
Para obter mais informações, consulte Add a custom route entry.
Após concluir essas etapas, o roteador de trânsito encaminha todo o tráfego da VPC-workload-a e da VPC-workload-b para a VPC-secure.
-
Associe uma tabela de rotas personalizada à VPC-secure e configure entradas de rota.
Na aba Route Table, selecione a tabela de rotas personalizada TR_routetable_secure-to-workload, clique na aba Route Table Association e, em seguida, clique em Create Association.
-
Na caixa de diálogo Add Association, selecione a conexão de instância de rede a ser associada à tabela de rotas personalizada e clique em OK.
Neste exemplo, associe
attachment-securea esta tabela de rotas personalizada. Na página de detalhes da tabela de rotas, clique na aba Route Propagation e clique em Enable Route Propagation.
-
Na caixa de diálogo Enable Route Propagation, selecione as conexões de instância de rede cujas rotas deseja propagar para esta tabela de rotas e, em seguida, clique em OK.
Neste exemplo, o Attachment está definido como
attachment-workload-aeattachment-workload-b. Uma vez associada, a tabela de rotas aprende as rotas para a VPC-workload-a e a VPC-workload-b. A VPC-secure pode então se comunicar com a VPC-workload-a e a VPC-workload-b consultando esta tabela de rotas.
Após a criação das entradas de rota, as entradas de rota para o roteador de trânsito da edição Enterprise serão as seguintes:
Nome da tabela de rotas
Bloco CIDR de destino
Próximo salto
TR_routetable_workload-to-secure
0.0.0.0/0
attachment-secureTR_routetable_secure-to-workload
10.1.0.0/24
attachment-workload-a10.1.1.0/24
attachment-workload-a10.1.2.0/24
attachment-workload-a10.2.0.0/24
attachment-workload-b10.2.1.0/24
attachment-workload-b10.2.2.0/24
attachment-workload-b
Etapa 6: Testar e verifique
Após concluir as etapas anteriores, a VPC-secure, a VPC-workload-a e a VPC-workload-b podem se comunicar com segurança pelo caminho esperado. As etapas a seguir descrevem como testar o caminho de tráfego entre as VPCs.
-
Faça login na ECS-secure e execute o comando a seguir para ative o encaminhamento de IP. Para saber como fazer login em uma instância ECS, consulte Connection methods.
NotaSe o encaminhamento de IP não estiver ativado, a VPC-workload-a pode se comunicar com a VPC-secure e a VPC-workload-b pode se comunicar com a VPC-secure. No entanto, a VPC-workload-a e a VPC-workload-b não conseguem se comunicar entre si.
echo 1 > /proc/sys/net/ipv4/ip_forward # Enable IP forwarding. This command takes effect temporarily and the setting is lost after a restart. -
Faça login na ECS-workload-a e instale o mtr. O mtr é uma ferramenta de diagnóstico de rede que combina os recursos de ping e traceroute para analisar a latência do caminho de rede e a perda de pacotes em tempo real. Neste tópico, use o mtr para identificar o caminho do tráfego.
yum install -y mtr -
Na ECS-workload-a, execute o comando mtr para testar o caminho de tráfego da ECS-workload-a para a ECS-workload-b:
Use o mtr
mtr 10.2.0.1 -i 5Descrição do parâmetro:
-i 5especifique que uma solicitação de ping é enviada a cada 5 segundos.My traceroute [v0.92] iZxxxvZ (10.1.0.1) 2024-12-04T20:40:46+0800 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 10.0.0.1 0.0% 9 3.8 3.8 3.8 4.1 0.1 2. 10.0.0.1 0.0% 9 5.0 4.0 3.8 5.0 0.4 3. 10.2.0.1 0.0% 9 8.2 8.3 8.2 8.6 0.1A saída do comando mostra que a rede encaminha pacotes da ECS-workload-a para a ECS-workload-b através de 10.0.0.1 (ECS-secure). Isso confirma que o tráfego entre a VPC-workload-a e a VPC-workload-b passa pela instância ECS de segurança (ECS-secure).
Terraform
Use o Terraform para construir o ambiente do cenário deste tópico. Para obter informações sobre como instale e configure o Terraform, consulte Install Terraform.
As etapas a seguir usam um host Linux executando o Terraform v1.9.8 como exemplo. Antes de começar, certifique-se de ter concluído a Authentication.
Este tutorial cria recursos faturáveis. Para evitar cobranças desnecessárias, libere esses recursos prontamente quando não precisar mais deles.
Etapa 1: Crie recursos
O código Terraform a seguir é usado neste cenário:
variable "pname" {
description = "The prefix name for the resources"
type = string
default = "tf-CenSec"
}
variable "default_region" {
description = "Default region"
type = string
default = "cn-hangzhou"
}
variable "az" {
description = "List of availability zones to use"
type = list(string)
default = ["cn-hangzhou-i", "cn-hangzhou-j", "cn-hangzhou-k"]
}
variable "vpc_count" {
description = "Number of VPCs to create"
type = number
default = 3
}
provider "alicloud" {
region = var.default_region
}
# VPC
resource "alicloud_vpc" "main" {
count = var.vpc_count
vpc_name = "${var.pname}-vpc${count.index + 1}"
cidr_block = "10.${count.index}.0.0/16"
}
# vSwitch
resource "alicloud_vswitch" "main" {
count = var.vpc_count * length(var.az)
vpc_id = alicloud_vpc.main[floor(count.index / length(var.az))].id
cidr_block = "10.${floor(count.index / length(var.az))}.${count.index % length(var.az)}.0/24"
zone_id = var.az[count.index % length(var.az)]
vswitch_name = "${var.pname}-vsw${count.index + 1}"
}
# ECS
resource "alicloud_instance" "main" {
count = var.vpc_count
instance_name = "${var.pname}-ecs${count.index + 1}"
instance_type = "ecs.e-c1m1.large"
security_groups = [alicloud_security_group.main[count.index].id]
vswitch_id = alicloud_vswitch.main[count.index * length(var.az)].id
image_id = "aliyun_3_x64_20G_qboot_alibase_20230727.vhd"
system_disk_category = "cloud_essd"
private_ip = "10.${count.index}.0.1"
instance_charge_type = "PostPaid"
user_data = base64encode(<<-EOT
#!/bin/bash
${count.index == 0 ? "echo 1 > /proc/sys/net/ipv4/ip_forward" : ""}
yum install -y traceroute
yum install -y mtr
EOT
) # Enable IP forwarding for ECS1.
}
# Security group
resource "alicloud_security_group" "main" {
count = var.vpc_count
security_group_name = "${var.pname}-${count.index + 1}"
vpc_id = alicloud_vpc.main[count.index].id
}
resource "alicloud_security_group_rule" "allow_inbound_ssh" {
count = var.vpc_count
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "22/22"
priority = 1
security_group_id = alicloud_security_group.main[count.index].id
cidr_ip = "0.0.0.0/0"
}
resource "alicloud_security_group_rule" "allow_inbound_icmp" {
count = var.vpc_count
type = "ingress"
ip_protocol = "icmp"
nic_type = "intranet"
policy = "accept"
port_range = "-1/-1"
priority = 1
security_group_id = alicloud_security_group.main[count.index].id
cidr_ip = "0.0.0.0/0"
}
resource "alicloud_security_group_rule" "allow_all_outbound" {
count = var.vpc_count
type = "egress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "1/65535"
priority = 1
security_group_id = alicloud_security_group.main[count.index].id
cidr_ip = "0.0.0.0/0"
}
# CEN
resource "alicloud_cen_instance" "cen1" {
cen_instance_name = var.pname
}
# Transit router
resource "alicloud_cen_transit_router" "tr1" {
transit_router_name = var.pname
cen_id = alicloud_cen_instance.cen1.id
}
# Attach attach1 to vSwitch2 and vSwitch3 in VPC1.
resource "alicloud_cen_transit_router_vpc_attachment" "attach1" {
cen_id = alicloud_cen_instance.cen1.id
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
vpc_id = alicloud_vpc.main[0].id
zone_mappings {
zone_id = var.az[1]
vswitch_id = alicloud_vswitch.main[1].id # vSwitch2, vpc1-2
}
zone_mappings {
zone_id = var.az[2]
vswitch_id = alicloud_vswitch.main[2].id # vSwitch3, vpc1-3
}
transit_router_vpc_attachment_name = "attach1"
}
# Attach attach2 to vSwitch4 and vSwitch5 in VPC2.
resource "alicloud_cen_transit_router_vpc_attachment" "attach2" {
cen_id = alicloud_cen_instance.cen1.id
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
vpc_id = alicloud_vpc.main[1].id
zone_mappings {
zone_id = var.az[0]
vswitch_id = alicloud_vswitch.main[3].id # vSwitch4, vpc2-1
}
zone_mappings {
zone_id = var.az[1]
vswitch_id = alicloud_vswitch.main[4].id # vSwitch5, vpc2-2
}
transit_router_vpc_attachment_name = "attach2"
}
# Attach attach3 to vSwitch7 and vSwitch8 in VPC3.
resource "alicloud_cen_transit_router_vpc_attachment" "attach3" {
cen_id = alicloud_cen_instance.cen1.id
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
vpc_id = alicloud_vpc.main[2].id
zone_mappings {
zone_id = var.az[0]
vswitch_id = alicloud_vswitch.main[6].id # vSwitch7, vpc3-1
}
zone_mappings {
zone_id = var.az[1]
vswitch_id = alicloud_vswitch.main[7].id # vSwitch8, vpc3-2
}
transit_router_vpc_attachment_name = "attach3"
}
# Create two route tables for VPC1.
resource "alicloud_route_table" "rt" {
count = 2
vpc_id = alicloud_vpc.main[0].id
route_table_name = "${var.pname}-rt${count.index}"
associate_type = "VSwitch"
}
# Associate rt1 with vSwitch1, and rt2 with vSwitch2 and vSwitch3.
locals {
# Map of route tables and vSwitches.
rt_attachments = {
"rt1_vsw1" = {
route_table_index = 0
vswitch_index = 0
}
"rt2_vsw2" = {
route_table_index = 1
vswitch_index = 1
}
"rt2_vsw3" = {
route_table_index = 1
vswitch_index = 2
}
}
}
resource "alicloud_route_table_attachment" "rt_attach" {
for_each = local.rt_attachments
vswitch_id = alicloud_vswitch.main[each.value.vswitch_index].id
route_table_id = alicloud_route_table.rt[each.value.route_table_index].id
}
# Route entries for VPC1.
resource "alicloud_route_entry" "rt-entry1" { # The next hop is the transit router.
route_table_id = alicloud_route_table.rt[0].id
destination_cidrblock = "0.0.0.0/0"
nexthop_type = "Attachment"
nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
}
resource "alicloud_route_entry" "rt-entry2" { # The next hop is ECS1.
route_table_id = alicloud_route_table.rt[1].id
destination_cidrblock = "0.0.0.0/0"
nexthop_type = "Instance"
nexthop_id = alicloud_instance.main[0].id # ecs1
}
# Route entries for VPC2 and VPC3.
resource "alicloud_route_entry" "rt-entry4" {
route_table_id = alicloud_vpc.main[1].route_table_id
destination_cidrblock = "0.0.0.0/0"
nexthop_type = "Attachment"
nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
}
resource "alicloud_route_entry" "rt-entry5" {
route_table_id = alicloud_vpc.main[2].route_table_id
destination_cidrblock = "0.0.0.0/0"
nexthop_type = "Attachment"
nexthop_id = alicloud_cen_transit_router_vpc_attachment.attach3.transit_router_attachment_id
}
# Create two new transit router route tables.
resource "alicloud_cen_transit_router_route_table" "tr_rt1" {
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
transit_router_route_table_name = "tr_rt1"
}
resource "alicloud_cen_transit_router_route_table" "tr_rt2" {
transit_router_id = alicloud_cen_transit_router.tr1.transit_router_id
transit_router_route_table_name = "tr_rt2"
}
# Associate tr_rt1 with attach2 and attach3.
resource "alicloud_cen_transit_router_route_table_association" "ass1" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt1.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
}
resource "alicloud_cen_transit_router_route_table_association" "ass2" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt1.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach3.transit_router_attachment_id
}
# Associate tr_rt2 with attach1.
resource "alicloud_cen_transit_router_route_table_association" "ass3" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt2.transit_router_route_table_id
transit_router_attachment_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
}
# Transit router route entries.
resource "alicloud_cen_transit_router_route_entry" "tr_rt1_entry1" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt1.transit_router_route_table_id
transit_router_route_entry_destination_cidr_block = "0.0.0.0/0"
transit_router_route_entry_next_hop_type = "Attachment"
transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach1.transit_router_attachment_id
}
resource "alicloud_cen_transit_router_route_entry" "tr_rt2_entry1" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt2.transit_router_route_table_id
transit_router_route_entry_destination_cidr_block = "10.1.0.0/16"
transit_router_route_entry_next_hop_type = "Attachment"
transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach2.transit_router_attachment_id
}
resource "alicloud_cen_transit_router_route_entry" "tr_rt2_entry2" {
transit_router_route_table_id = alicloud_cen_transit_router_route_table.tr_rt2.transit_router_route_table_id
transit_router_route_entry_destination_cidr_block = "10.2.0.0/16"
transit_router_route_entry_next_hop_type = "Attachment"
transit_router_route_entry_next_hop_id = alicloud_cen_transit_router_vpc_attachment.attach3.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.main[0].id}"
}
output "ecs2_login_address" {
value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[1].id}"
}
output "ecs3_login_address" {
value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[2].id}"
}
Etapa 2: Testar e verifique
-
Faça login na instância ECS2 (chamada
tf-CenSec-ecs2):Nas saídas do Terraform, localize o endereço de login para a ECS2. Copie o endereço para o seu navegador. Ao fazer login, selecione Temporary SSH Key como método de autenticação.
Após a execução do Terraform, ele produz uma saída semelhante à seguinte. Neste exemplo,
ecs2_login_addressé o endereço de login para a ECS2.Outputs: ecs1_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-hangzhou&instanceId=i-bp1xxx" ecs2_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-hangzhou&instanceId=i-bp1xxx" ecs3_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=cn-hangzhou&instanceId=i-bp1xxx" -
Na ECS2, execute o comando
mtrpara testar o caminho de tráfego da ECS2 para a ECS3:Use o mtr
mtr 10.2.0.1 -i 5Descrição do parâmetro:
-i 5especifique que uma solicitação de ping é enviada a cada 5 segundos.My traceroute [v0.92] iZbp1xxx (10.1.0.1) 2024-12-04T20:40:46+0800 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 10.0.0.1 0.0% 9 3.8 3.8 3.8 4.1 0.1 2. 10.0.0.1 0.0% 9 5.0 4.0 3.8 5.0 0.4 3. 10.2.0.1 0.0% 9 8.2 8.3 8.2 8.6 0.1O resultado mostra que a rede encaminha pacotes da ECS2 para a ECS3 através de 10.0.0.1 (ECS1). Isso confirma que o tráfego entre a VPC2 e a VPC3 passa pela instância ECS de segurança (ECS1).
Etapa 3: Liberar os recursos
Após concluir a verificação, caso não precise mais dos recursos, execute o comando a seguir para liberá-los e evitar cobranças adicionais.
terraform destroy --auto-approve