企業版轉寄路由器提供靈活的路由管理能力,通過企業版轉寄路由器您可以將訪問流量引導至安全管控伺服器上進行流量過濾,只允許過濾後的流量相互連信,提高網路的安全性。本文為您介紹如何通過企業版轉寄路由器實現流量安全互訪。
說明
本教程所含範例程式碼支援一鍵運行,您可以直接運行代碼。一鍵運行
情境樣本
本文以同地區網路互連為例,為您介紹如何使用企業版轉寄路由器實現流量安全互訪。某企業在阿里雲華東1(杭州)地區已經部署了3個VPC,其中VPC1部署有安全管控服務,3個VPC之間互不相通。出於業務發展和網路環境安全性考慮,企業希望VPC2和VPC3之間可以相互連信,且VPC2和VPC3之間的訪問流量,需先經過VPC1中的安全管控服務過濾後,再進行通訊。
企業可以將要互相通訊的VPC2和VPC3串連至企業版轉寄路由器中,通過在企業版轉寄路由器中自訂路由策略,實現VPC2和VPC3之間安全互訪的需求。
前提條件
在您應用本情境時,需確保安全管控服務所屬的Virtual Private Cloud(Virtual Private Cloud)執行個體所在的地區支援企業版轉寄路由器,以便實現流量安全互訪。企業版轉寄路由器支援的地區和可用性區域,請參見企業版轉寄路由器支援的地區和可用性區域。
您已經在華東1(杭州)地區建立了3個VPC,且3個VPC中均部署有Elastic Compute Service執行個體。具體操作,請參見搭建IPv4專用網路。
請確保每個VPC在企業版轉寄路由器支援的可用性區域中擁有足夠的交換器執行個體,且每個交換器執行個體擁有至少一個閒置IP地址。
例如,您在華東1(杭州)地區建立了1個VPC,則該VPC需在可用性區域B和可用性區域C中各擁有至少一個交換器執行個體,且每個交換器執行個體擁有至少一個閒置IP地址。
說明
企業版轉寄路由器會在可用性區域的交換器執行個體上建立彈性網卡ENI(Elastic Network Interface),作為VPC向企業版轉寄路由器執行個體發送流量的入口,每個ENI會佔用一個IP地址。
本樣本中,VPC1中擁有3個交換器執行個體,交換器1用於部署安全管控服務,交換器2和交換器3用於串連企業版轉寄路由器。本樣本3個VPC網路規劃如下表所示,在您規劃網路時請確保要互連的網段沒有重疊。3台ECS的鏡像都選擇Alibaba Cloud Linux。
VPC | 交換器 | 交換器可用性區域 | 網段規劃 | ECS地址 |
VPC1 網段:10.0.0.0/16 | 交換器1 | 可用性區域I | 10.0.0.0/24 | ECS1 10.0.0.1 |
交換器2 | 可用性區域J | 10.0.1.0/24 |
交換器3 | 可用性區域K | 10.0.2.0/24 |
VPC2 網段:10.1.0.0/16 | 交換器4 | 可用性區域I | 10.1.0.0/24 | ECS2 10.1.0.1 |
交換器5 | 可用性區域J | 10.1.1.0/24 |
交換器6 | 可用性區域K | 10.1.2.0/24 |
VPC3 網段:10.2.0.0/16 | 交換器7 | 可用性區域I | 10.2.0.0/24 | ECS3 10.2.0.1 |
交換器8 | 可用性區域J | 10.2.1.0/24 |
交換器9 | 可用性區域K | 10.2.2.0/24 |
您已經瞭解VPC1、VPC2、VPC3中的ECS執行個體所應用的安全性群組規則,並確保安全性群組規則允許入方向的ICMP協議。具體操作,請參見查詢安全性群組規則和添加安全性群組規則。
開始配置
本文提供控制台和Terraform兩種配置方式,請按需選擇。
步驟一:建立雲企業網執行個體
雲企業網執行個體是建立和管理一體化網路的基礎資源,在企業版轉寄路由器串連網路執行個體前,需要先建立一個雲企業網執行個體。
- 登入雲企業網管理主控台。
在雲企業網執行個體頁面,單擊建立雲企業網執行個體。
在创建云企业网实例對話方塊,根據以下資訊進行配置,然後單擊确认。
步驟二:建立轉寄路由器執行個體
在企業版轉寄路由器串連網路執行個體前,您需要在雲企業網執行個體中在網路執行個體所屬地區建立轉寄路由器執行個體。
- 登入雲企業網管理主控台。
在云企业网实例頁面,選擇在步驟一中建立的雲企業網執行個體,單擊雲企業網執行個體ID。
在頁簽,單擊创建转发路由器。
在创建转发路由器對話方塊,配置轉寄路由器執行個體資訊,然後單擊确认。
配置項 | 說明 | 配置 |
地域 | 選擇轉寄路由器執行個體所屬的地區。 | 本文選擇華東1(杭州)地區。 |
版本 | 轉寄路由器執行個體的版本。 | 系統自動判斷並顯示當前地區下轉寄路由器執行個體的版本。 |
開通組播 | 選擇是否開啟轉寄路由器執行個體的組播功能。 | 本文保持預設值,即不開啟組播功能。 |
名称 | 輸入轉寄路由器執行個體的名稱。 | 請自訂轉寄路由器執行個體的名稱。 |
描述 | 輸入轉寄路由器執行個體的描述資訊。 | 請自訂轉寄路由器執行個體的描述資訊。 |
标签 | 為企業版轉寄路由器執行個體添加標籤。 | 本文保持為空白值。 |
TR地址段 | 輸入轉寄路由器位址區段。 更多資訊,請參見轉寄路由器位址區段。 | 本文不輸入轉寄路由器位址區段。 |
步驟三:串連VPC執行個體
將要互連的網路執行個體,串連至企業版轉寄路由器。
- 登入雲企業網管理主控台。
- 在云企业网实例頁面,找到目標雲企業網執行個體,單擊目標執行個體ID。
- 在頁簽,找到目標地區的轉寄路由器執行個體,在操作單擊创建网络实例连接。
在连接网络实例頁面,根據以下資訊進行配置,然後單擊确定创建。
下表羅列了各個配置項的說明以及VPC1、VPC2、VPC3對應的參數值,請依據下表中的資料,分別將VPC1、VPC2、VPC3串連至企業版轉寄路由器。
配置項 | 配置項說明 | VPC1 | VPC2 | VPC3 |
实例类型 | 選擇待串連的網路執行個體類型。 | Virtual Private Cloud | Virtual Private Cloud | Virtual Private Cloud |
地域 | 選擇待串連的網路執行個體所在的地區。 | 華東1(杭州) | 華東1(杭州) | 華東1(杭州) |
转发路由器 | 系統自動顯示在該地區已建立的轉寄路由器執行個體。 |
资源归属UID | 選擇待串連的網路執行個體所屬的帳號類型。 | 同帳號 | 同帳號 | 同帳號 |
付费方式 | 預設值隨用隨付。 |
连接名称 | 輸入網路執行個體串連的名稱。 | VPC1串連 | VPC2串連 | VPC3串連 |
标签 | 為網路執行個體串連添加標籤。 | 本文保持為空白值。 | 本文保持為空白值。 | 本文保持為空白值。 |
网络实例 | 選擇待串連的網路執行個體。 | 選擇VPC1 | 選擇VPC2 | 選擇VPC3 |
交换机 | 在轉寄路由器支援的可用性區域選擇一個交換器執行個體。 如果您在轉寄路由器支援的多個可用性區域均擁有交換器執行個體,您可以同時選擇多個可用性區域並在每個可用性區域下選擇一個交換器執行個體以實現可用性區域層級的容災。 | 華東1(杭州)可用性區域J:選擇交換器2 華東1(杭州)可用性區域K:選擇交換器3
| 華東1(杭州)可用性區域I:選擇交換器4 華東1(杭州)可用性區域J:選擇交換器5
| 華東1(杭州)可用性區域I:選擇交換器7 華東1(杭州)可用性區域J:選擇交換器8
|
高级配置 | VPC1、VPC2、VPC3均不啟用以下三項進階配置。 自动关联至转发路由器的默认路由表 自动传播系统路由至转发路由器的默认路由表 自动为VPC的所有路由表配置指向转发路由器的路由
說明 開啟進階配置後,VPC1、VPC2和VPC3將會自動學習到對方的路由,實現相互連信,但無法達到流量安全互訪的目的。因此,本樣本不啟用VPC的進階配置,後續步驟通過手動建立路由表、添加路由條目等方式,自訂網路執行個體的連通性,以實現流量的安全互訪。 |
步驟四:為VPC執行個體添加路由條目
在VPC1、VPC2和VPC3中添加路由條目,引導VPC的流量進入企業版轉寄路由器,在企業版轉寄路由器中引導和管理流量實現流量的安全互訪。
- 登入專用網路管理主控台。
在頂部功能表列,選擇路由表所屬的地區。
為VPC2和VPC3添加自訂路由條目。
分別在VPC2和VPC3的系統路由表中添加目標網段為0.0.0.0/0,下一跳為轉寄路由器的路由條目,使VPC2和VPC3的訪問流量均被轉寄至企業版轉寄路由器。
在左側導覽列,單擊路由表。
在路由表頁面,找到目標路由表,單擊路由表執行個體ID。
在路由條目列表頁簽下單擊自訂路由條目頁簽,然後單擊添加路由條目。
在添加路由條目面板,配置以下資訊,然後單擊確定。
請重複上述步驟,在VPC3的系統路由表中添加相同的路由條目,配置資訊如下。
為VPC1建立三張自訂路由表,分別命名為routetable1、routetable2和routetable3。具體操作,請參見建立自訂路由表。
綁定交換器和自訂路由表。具體操作,請參見綁定交換器和路由表。
在本樣本中,將VPC1中的交換器1綁定路由表routetable1、交換器2綁定路由表routetable2、交換器3綁定路由表routetable3。
在VPC1的自訂路由表中添加路由條目。
在路由表頁面,選擇已建立的一張路由表,單擊路由表執行個體ID。
本樣本選擇與交換器1綁定的自訂路由表routetable1。
在路由條目列表頁簽下單擊自訂路由條目頁簽,然後單擊添加路由條目。
在添加路由條目面板,配置以下資訊,然後單擊確定。
請重複上述步驟和配置,在交換器2的自訂路由表routetable2中添加相同的路由條目。
請重複上述步驟,在交換器3的自訂路由表routetable3中添加路由條目,其中交換器3的路由條目資訊如下:
建立完成後,各個VPC中新添加的路由條目的資訊如下表所示:
網路執行個體 | 路由表名稱 | 路由表關聯的交換器 | 路由條目 | 下一跳 |
VPC1 | routetable1 | 交換器1 | 0.0.0.0/0 | VPC1關聯的轉寄路由器執行個體 |
routetable2 | 交換器2 | 0.0.0.0/0 | 交換器1中的ECS執行個體 |
routetable3 | 交換器3 | 0.0.0.0/0 | 交換器1中的ECS執行個體 |
VPC2 | 系統路由表 | | 0.0.0.0/0 | VPC2關聯的轉寄路由器執行個體 |
VPC3 | 系統路由表 | | 0.0.0.0/0 | VPC3關聯的轉寄路由器執行個體 |
步驟五:在轉寄路由器中配置路由
VPC的流量進入企業版轉寄路由器後,在企業版轉寄路由器通過建立路由表、添加路由條目等方式自訂連通性,引導VPC2和VPC3的流量進入VPC1,並將經過VPC1過濾後的流量引導至目的地。
- 登入雲企業網管理主控台。
在雲企業網執行個體頁面,單擊目標執行個體ID。
- 在頁簽,找到目標地區的轉寄路由器執行個體,單擊目標執行個體ID。
在转发路由器路由表頁簽下,為企業版轉寄路由器建立兩張自訂路由表,分別命令為TR_routetable1和TR_routetable2。具體操作,請參見自訂路由表。
將VPC2串連和VPC3串連關聯至企業版轉寄路由器的自訂路由表並為其配置路由條目。
在转发路由器路由表頁簽下,選擇自訂路由表TR_routetable1,單擊关联转发頁簽,然後單擊建立關聯轉寄。
在添加關聯轉寄對話方塊,選擇要關聯至該自訂路由表的網路執行個體串連,然後單擊确定。
本樣本中,請將VPC2串連和VPC3串連關聯至該自訂路由表。
保持在該路由表詳情頁面,單擊路由条目頁簽,然後單擊建立路由條目。
在添加路由條目對話方塊,根據以下資訊進行配置,然後單擊确定。
完成上述操作後,VPC2和VPC3的所有訪問流量將被轉寄到VPC1。
為VPC1關聯自訂路由表並配置路由條目。
在转发路由器路由表頁簽下,選擇自訂路由表TR_routetable2,單擊关联转发頁簽,然後單擊建立關聯轉寄。
在添加關聯轉寄對話方塊,選擇要關聯至該自訂路由表的網路執行個體串連,然後單擊确定。
保持在該路由表詳情頁面,單擊路由学习頁簽,然後單擊建立路由學習。
在添加路由學習對話方塊,選擇該路由表要學習其路由的網路執行個體串連,然後單擊确定。
本樣本中,請將VPC2串連和VPC3串連關聯至該路由表。關聯後,該路由表將能學習到VPC2和VPC3的路由。VPC1通過查詢該路由表和VPC2及VPC3互連。
建立完成後,企業版轉寄路由器的路由條目資訊如下表所示:
路由表名稱 | 目標網段 | 下一跳 |
TR_routetable1 | 0.0.0.0/0 | VPC1串連 |
TR_routetable2 | 10.1.0.0/16 | VPC2串連 |
10.2.0.0/16 | VPC3串連 |
步驟六:測實驗證
完成上述操作後,VPC1、VPC2和VPC3之間已可以按照期望的路徑進行安全互訪,以下內容為您介紹如何測試VPC執行個體之間的流量路徑。
登入ECS1,執行以下命令啟用允許轉寄。關於如何登入ECS執行個體,請參見ECS遠端連線方式概述。
說明
在不設定允許轉寄的情況下,VPC2和VPC1之間、VPC3和VPC1之間可以互相訪問,但VPC2和VPC3之間無法互訪。
echo 1 > /proc/sys/net/ipv4/ip_forward #啟用允許轉寄。當前命令臨時生效,重啟後會丟失。
登入ECS2,在ECS2上安裝mtr軟體。mtr是一種結合了 Ping 和 Traceroute 功能的網路診斷工具,用於即時分析網路路徑的延遲和資料包丟失,在本文中可以協助我們識別流量路徑。
在ECS2執行mtr命令,測試ECS2到ECS3的流量路徑:
參數說明:-i 5
指的是每5秒發送一次ping請求。

如圖命令執行結果顯示,從ECS2發往ECS3的報文,經過了10.0.0.1(ECS1)轉寄,表明VPC2和VPC3之間互訪的流量已經繞行ECS1(安全ECS)。
您可以使用Terraform搭建本文樣本環境,關於Terraform的安裝和配置,請參考Install Terraform。
下面步驟以Linux主機運行Terraform v1.9.8為例進行介紹,操作前請確保您已經完成Authentication。
說明
本教程樣本包含的部分資源會產生一定費用,請在不需要時及時進行釋放或退訂。
第一步:建立資源
為本文的實踐情境建立一個目錄,並進入該目錄。
mkdir tf-CenSec && cd tf-CenSec
建立一個main.tf
檔案,用於定義資源資訊。
開啟main.tf
檔案,複製如下代碼,粘貼到檔案中並儲存。此檔案包含了本文實踐情境中需要用到的資源和對應配置。
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
}
resource "alicloud_vpc" "main" {
count = var.vpc_count
vpc_name = "${var.pname}-vpc${count.index + 1}"
cidr_block = "10.${count.index}.0.0/16"
}
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}"
}
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
${count.index == 0 ? "echo 1 > /proc/sys/net/ipv4/ip_forward" : ""}
yum install -y traceroute
yum install -y mtr
EOT
)
}
resource "alicloud_security_group" "main" {
count = var.vpc_count
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"
}
resource "alicloud_cen_instance" "cen1" {
cen_instance_name = var.pname
}
resource "alicloud_cen_transit_router" "tr1" {
transit_router_name = var.pname
cen_id = alicloud_cen_instance.cen1.id
}
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
}
zone_mappings {
zone_id = var.az[2]
vswitch_id = alicloud_vswitch.main[2].id
}
transit_router_vpc_attachment_name = "attach1"
}
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
}
zone_mappings {
zone_id = var.az[1]
vswitch_id = alicloud_vswitch.main[4].id
}
transit_router_vpc_attachment_name = "attach2"
}
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
}
zone_mappings {
zone_id = var.az[1]
vswitch_id = alicloud_vswitch.main[7].id
}
transit_router_vpc_attachment_name = "attach3"
}
resource "alicloud_route_table" "rt" {
count = 3
vpc_id = alicloud_vpc.main[0].id
route_table_name = "${var.pname}-rt${count.index}"
associate_type = "VSwitch"
}
resource "alicloud_route_table_attachment" "rt_attach" {
count = 3
vswitch_id = alicloud_vswitch.main[count.index].id
route_table_id = alicloud_route_table.rt[count.index].id
}
resource "alicloud_route_entry" "rt-entry1" {
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" {
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
}
resource "alicloud_route_entry" "rt-entry3" {
route_table_id = alicloud_route_table.rt[2].id
destination_cidrblock = "0.0.0.0/0"
nexthop_type = "Instance"
nexthop_id = alicloud_instance.main[0].id
}
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
}
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"
}
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
}
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
}
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.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[0].id}"
}
output "ecs2_login_address" {
value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[1].id}"
}
output "ecs3_login_address" {
value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.main[2].id}"
}
初始化目錄,完成Terraform的初始化配置。
建立資源。執行後Terraform會先預覽將要建立的資源,確認無誤後,輸入yes
正式開始建立。
第二步:驗證測試
登入ECS2執行個體(名稱為tf-CenSec-ecs2
):
您可以在Terraform的Outputs輸出中,找到ECS2的登入地址並複製到瀏覽器開啟,登入時注意認證方式選擇臨時SSH密鑰認證。

在ECS2執行mtr
命令,測試ECS2到ECS3的流量路徑:
參數說明:-i 5
指的是每5秒發送一次ping請求。

如圖結果顯示,從ECS2發往ECS3的報文,經過了10.0.0.1(ECS1)轉寄,表明VPC2和VPC3之間互訪的流量已經繞行ECS1(安全ECS)。
第三步:釋放資源
驗證完畢後,如果您不再使用資源,請執行以下命令釋放資源,防止繼續計費。
terraform destroy --auto-approve