Todos os produtos
Search
Central de documentação

Cloud Enterprise Network:Troca segura de tráfego com um roteador de trânsito Enterprise

Última atualização: Aug 25, 2026

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.

image

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.

    Nota

    O 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.

  1. Faça login no CEN console.

  2. Na página Instances, clique em Create CEN Instance.

  3. 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.

    • Tag: Insira tags para a instância CEN. Neste exemplo, deixe este parâmetro vazio.

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.

  1. Faça login no CEN console.

  2. Na página CEN Instance, selecione a instância CEN criada na Etapa 1 e clique no ID da instância.

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

  4. 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.

  1. Faça login no CEN console.

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

  3. Na aba Basic Settings > Transit Router, localize o roteador de trânsito na região de destino. Na coluna Actions, clique em Create Connection > Create Intra-Region Connection.

  4. 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-secure

    attachment-workload-a

    attachment-workload-b

    Tag

    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

    Nota

    Ative 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.

  1. Configure as tabelas de rotas na VPC-secure:

    1. 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.

    2. 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.

    3. 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).

  2. 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, selecione attachment-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

attachment-secure (roteador de trânsito)

vSwitch2

routetable_workload-to-secure

0.0.0.0/0

ECS-secure

vSwitch3

VPC-workload-a

  • vSwitch4

  • vSwitch5

  • vSwitch6

Tabela de rotas do sistema

0.0.0.0/0

attachment-workload-a (roteador de trânsito)

VPC-workload-b

  • vSwitch7

  • vSwitch8

  • vSwitch9

Tabela de rotas do sistema

0.0.0.0/0

attachment-workload-b (roteador de trânsito)

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.

  1. Faça login no CEN console.

  2. Na página CEN Instance, clique no ID da sua instância CEN.

  3. Acesse a aba Basic Information > Transit Router e clique no ID do roteador de trânsito que deseja gerencie.

  4. 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.

  5. Associe as conexões attachment-workload-a e attachment-workload-b a 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.

    1. 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.

    2. 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-a e attachment-workload-b a esta tabela de rotas personalizada.

    3. Na página de detalhes da tabela de rotas, clique na aba Route Entry e clique em Add Route Entry.

    4. 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.

  6. Associe uma tabela de rotas personalizada à VPC-secure e configure entradas de rota.

    1. 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.

    2. 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-secure a esta tabela de rotas personalizada.

    3. Na página de detalhes da tabela de rotas, clique na aba Route Propagation e clique em Enable Route Propagation.

    4. 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-a e attachment-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-secure

    TR_routetable_secure-to-workload

    10.1.0.0/24

    attachment-workload-a

    10.1.1.0/24

    attachment-workload-a

    10.1.2.0/24

    attachment-workload-a

    10.2.0.0/24

    attachment-workload-b

    10.2.1.0/24

    attachment-workload-b

    10.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.

  1. 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.

    Nota

    Se 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.
  2. 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
  3. 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 5

    Descrição do parâmetro: -i 5 especifique 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.1

    A 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.

Nota

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&regionId=${var.default_region}&instanceId=${alicloud_instance.main[0].id}"
}
output "ecs2_login_address" {
  value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.default_region}&instanceId=${alicloud_instance.main[1].id}"
}
output "ecs3_login_address" {
  value = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=${var.default_region}&instanceId=${alicloud_instance.main[2].id}"
}

Etapa 2: Testar e verifique

  1. 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&regionId=cn-hangzhou&instanceId=i-bp1xxx"
    ecs2_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-hangzhou&instanceId=i-bp1xxx"
    ecs3_login_address = "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs&regionId=cn-hangzhou&instanceId=i-bp1xxx"
  2. Na ECS2, execute o comando mtr para testar o caminho de tráfego da ECS2 para a ECS3:

    Use o mtr

    mtr 10.2.0.1 -i 5

    Descrição do parâmetro: -i 5 especifique 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.1

    O 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