Cloud Enterprise Network (CEN) memungkinkan Anda menentukan kebijakan konektivitas, isolasi, dan pengalihan lalu lintas yang fleksibel dalam satu wilayah. Topik ini menjelaskan cara menggunakan CEN untuk mengaktifkan beberapa VPC terisolasi agar dapat mengakses layanan bersama yang sama.
Latar Belakang
Topik ini menggunakan skenario berikut. Sebuah perusahaan telah men-deploy tiga VPC di wilayah China (Hangzhou). VPC3 menyediakan layanan bersama. Perusahaan ingin mengizinkan VPC1 dan VPC2 mengakses layanan bersama di VPC3, tetapi mencegah VPC1 dan VPC2 saling berkomunikasi.
Perencanaan jaringan
Untuk mencapai tujuan ini, Anda dapat menggunakan fitur CEN seperti tabel rute kustom, asosiasi tabel rute, dan pembelajaran rute. Gambar berikut menunjukkan arsitektur jaringan dan routing yang direncanakan.
Saat menyambungkan VPC3 ke Router transit, aktifkan fitur lanjutan Associate with Default Route Table of Transit Router dan Propagate System Routes to Default Route Table of Transit Router.
Setelah mengaktifkan fitur-fitur ini, tabel rute default Router transit secara otomatis mempelajari rute sistem dari VPC3. VPC3 kemudian menggunakan tabel rute ini untuk meneruskan lalu lintas.
Saat menyambungkan VPC1 dan VPC2 ke Router transit, aktifkan hanya fitur lanjutan Propagate System Routes to Default Route Table of Transit Router. Kemudian, asosiasikan VPC1 dan VPC2 dengan tabel rute kustom Router transit dan tambahkan entri rute kustom yang mengarah ke VPC3 dalam tabel tersebut.
Setelah konfigurasi ini, tabel rute default Router transit mempelajari semua rute sistem dari VPC1 dan VPC2. VPC1 dan VPC2 menggunakan tabel rute kustom untuk meneruskan lalu lintas ke VPC3. Dalam konfigurasi ini, VPC1 dan VPC2 tidak dapat saling berkomunikasi.
Tambahkan entri rute dengan tujuan
0.0.0.0/0ke tabel rute VPC1, VPC2, dan VPC3. Lompatan berikutnya (next hop) rute tersebut harus merupakan Router transit.Buat tiga VPC di wilayah China (Hangzhou) dan buat vSwitch di zona yang ditentukan. Tabel berikut menjelaskan rencana Blok CIDR untuk VPC tersebut.
PentingSaat merencanakan jaringan Anda, pastikan Blok CIDR VPC tidak tumpang tindih.
VPC
vSwitch
Zona vSwitch
Blok CIDR
Alamat IP ECS
VPC1
Blok CIDR utama: 192.168.0.0/16
vSwitch1
Zona A
192.168.0.0/24
Alamat IP ECS1:
192.168.0.224
vSwitch2
Zona B
192.168.1.0/24
VPC2
Blok CIDR utama: 172.16.0.0/16
vSwitch3
Zona A
172.16.0.0/24
Alamat IP ECS2:
172.16.0.222
vSwitch4
Zona B
172.16.1.0/24
VPC3
Blok CIDR utama: 10.0.0.0/16
vSwitch5
Zona A
10.0.0.0/24
Alamat IP ECS3:
10.0.0.112
vSwitch6
Zona B
10.0.1.0/24
Prosedur
Anda dapat mengonfigurasi resource di Konsol atau dengan menggunakan Terraform. Pilih metode yang paling sesuai dengan kebutuhan Anda.
Konsol
Langkah 1: Buat instans CEN
Sebelum menghubungkan instans jaringan, Anda harus membuat instans CEN.
Login ke Konsol CEN.
Pada halaman Instances, klik Create CEN Instance.
Di kotak dialog Create CEN Instance, konfigurasikan instans CEN lalu klik OK.
Name: Masukkan nama untuk instans CEN.
Description: Masukkan deskripsi untuk instans CEN.
Langkah 2: Buat lampiran VPC
Pada halaman Instances, klik ID instans CEN yang telah Anda buat.
Pada tab Basic Information, temukan bagian VPC lalu klik ikon
.Pada halaman Connection with Peer Network Instance, konfigurasikan parameter lalu klik OK.
Network Type: Virtual Private Cloud (VPC) dipilih secara default.
Region: Pilih wilayah tempat instans jaringan dideploy. Dalam contoh ini, China (Hangzhou) dipilih.
Transit Router: Sistem secara otomatis membuat Router transit di wilayah yang dipilih.
Resource Owner UID: Pilih jenis akun pemilik instans jaringan. Dalam contoh ini, nilai default Current Account digunakan.
Metode penagihan: Gunakan nilai default pay-as-you-go.
Attachment Name: Masukkan nama untuk lampiran.
Network Instance: Pilih ID VPC yang akan dihubungkan. Dalam contoh ini, VPC3 dipilih.
vSwitch: Pilih vSwitch di zona yang didukung oleh Router transit.
Jika Router transit edisi perusahaan dideploy di wilayah yang hanya mendukung satu zona, pilih vSwitch di zona tersebut.
Jika dideploy di wilayah yang mendukung beberapa zona, pilih minimal dua vSwitch di zona berbeda untuk disaster recovery antar zona. Hal ini memastikan transmisi data antara VPC dan Router transit tidak terputus.
Kami menyarankan Anda memilih vSwitch di setiap zona untuk mengurangi latensi dan meningkatkan kinerja jaringan karena data dapat ditransmisikan melalui jarak yang lebih pendek.
Advanced Settings: Sistem memilih tiga fitur lanjutan berikut secara default. Untuk VPC3 dalam contoh ini, aktifkan hanya fitur Associate with Default Route Table of Transit Router dan Propagate System Routes to Default Route Table of Transit Router.
Setelah membuat lampiran untuk VPC3, klik Create More Connections.
Setelah semua lampiran VPC dibuat, klik Return to the List untuk kembali ke halaman detail instans.
Langkah 3: Asosiasikan VPC1 dan VPC2 dengan routing kustom
Pada halaman detail instans, temukan Router transit yang telah Anda buat lalu klik ID-nya.
Pada halaman detail Router transit, klik tab Route Table.
Di panel kiri, klik Create Route Table.
Di kotak dialog Create Route Table, konfigurasikan parameter lalu klik OK.
Transit Router: Sistem secara otomatis memilih Router transit di wilayah saat ini.
Route Table Name: Masukkan nama untuk tabel rute.
Route Table Description: Masukkan deskripsi untuk tabel rute.
Multi-region ECMP Routing: Pertahankan pengaturan default.
Klik View Route Table Details untuk kembali ke tab Route Table.
Pada tab Route Table, pilih tabel rute kustom yang baru saja Anda buat. Klik tab Route Table Association lalu klik Create Association.
Di kotak dialog Add Association, pilih lampiran VPC yang akan diasosiasikan dengan tabel rute kustom lalu klik OK.
Dalam contoh ini, asosiasikan VPC1 dan VPC2 dengan tabel rute kustom. Setelah asosiasi dibuat, VPC1 dan VPC2 akan menggunakan tabel rute ini untuk meneruskan lalu lintas.
Pada halaman detail tabel rute kustom, klik tab Route Entry lalu klik Create Route Entry.
Di kotak dialog Add Route Entry, konfigurasikan parameter lalu klik OK.
Route Table: Sistem secara otomatis memilih tabel rute kustom saat ini.
Transit Router: Sistem secara otomatis memilih Router transit di wilayah saat ini.
Route Entry Name: Masukkan nama untuk entri rute.
Destination CIDR Block: Masukkan blok CIDR tujuan untuk rute. Dalam contoh ini, masukkan
10.0.0.0/16.Blackhole Route: Jika opsi ini diaktifkan, seluruh lalu lintas yang ditujukan ke rute ini akan dibuang. Dalam contoh ini, pilih No.
Next Hop: Pilih lompatan berikutnya untuk rute. Dalam contoh ini, pilih lampiran VPC3.
Route Entry Description: Masukkan deskripsi untuk entri rute.
Langkah 4: Tambahkan rute default ke VPC
Ke tabel rute VPC1, VPC2, dan VPC3, tambahkan entri rute di Konsol VPC dengan blok CIDR tujuan 0.0.0.0/0 dan lompatan berikutnya mengarah ke lampiran Router transit.
Login ke Konsol VPC.
Di panel navigasi kiri, klik Route Tables.
Di bilah navigasi atas, pilih wilayah tempat tabel rute berada.
Pada halaman Route Tables, temukan tabel rute target lalu klik ID-nya.
Dalam contoh ini, tabel rute VPC3 dipilih.
Pada halaman detail tabel rute, di tab Route Entries, klik sub-tab Custom. Lalu, klik Add Route Entry.
Di panel Add Route Entry, konfigurasikan entri rute lalu klik OK.
Name: Masukkan nama untuk entri rute.
Destination CIDR Block: Masukkan blok CIDR tujuan. Dalam contoh ini, masukkan
0.0.0.0/0.Next Hop Type: Pilih jenis lompatan berikutnya. Dalam contoh ini, pilih Transit Router.
Transit Router: Pilih lampiran instans jaringan. Dalam contoh ini, pilih lampiran VPC3.
Untuk informasi lebih lanjut tentang parameter, lihat Kelola lalu lintas jaringan menggunakan tabel rute kustom.
Ulangi langkah 4 hingga langkah 6 untuk menambahkan rute default dengan tujuan
0.0.0.0/0dan lompatan berikutnya mengarah ke lampiran Router transit untuk VPC1 dan VPC2.Setelah menyelesaikan konfigurasi, Anda dapat melihat informasi routing untuk VPC dan tabel rute Router transit pada halaman detail Router transit di Konsol CEN.
Pada halaman detail Router transit, klik Network Routes untuk melihat rute untuk VPC1, VPC2, dan VPC3.
Pada halaman detail Router transit, klik Network Routes.
Dari daftar drop-down Network Instance, pilih ID instans VPC1, VPC2, atau VPC3 untuk melihat rutenya.
Gambar 1. Rute VPC1

Gambar 2. Rute VPC2

Gambar 3. Rute VPC3

Pada tab Route Table, Anda dapat melihat rute yang telah dipelajari oleh tabel rute sistem Router transit dari VPC1, VPC2, dan VPC3.
Pada halaman detail Router transit, klik Route Table.
Pada tab Route Table, lihat entri rute dalam tabel rute.
Gambar 4. Tabel rute sistem

Gambar 5. Tabel rute kustom

Langkah 5: Verifikasi konektivitas
Setelah menyelesaikan langkah-langkah sebelumnya, uji konektivitas antara VPC1, VPC2, dan VPC3.
Sebelum memulai, periksa aturan grup keamanan yang diterapkan pada instans ECS di VPC1, VPC2, dan VPC3. Pastikan aturan tersebut mengizinkan komunikasi antar instans. Untuk informasi lebih lanjut, lihat Lihat aturan grup keamanan.
Login ke instans ECS di VPC1. Untuk informasi lebih lanjut, lihat Hubungkan ke instans ECS.
Jalankan perintah ping untuk menguji konektivitas ke instans ECS di VPC3.
Respons sukses mengonfirmasi bahwa VPC1 dan VPC3 dapat berkomunikasi.

Login ke instans ECS di VPC2. Jalankan perintah ping untuk menguji konektivitas ke instans ECS di VPC3.
Respons sukses mengonfirmasi bahwa VPC2 dan VPC3 dapat berkomunikasi.

Login ke instans ECS di VPC1. Jalankan perintah ping untuk menguji konektivitas ke instans ECS di VPC2.
Tidak adanya respons mengonfirmasi bahwa VPC1 dan VPC2 tidak dapat berkomunikasi.

Terraform
Anda dapat menggunakan Terraform untuk membangun lingkungan untuk skenario ini. Untuk informasi lebih lanjut tentang cara menginstal dan mengonfigurasi Terraform, lihat Instal Terraform.
Langkah-langkah berikut menunjukkan cara menjalankan Terraform v1.9.8 pada host Linux. Sebelum memulai, pastikan Anda telah menyelesaikan Authentication.
Resource yang dibuat dalam tutorial ini dapat menimbulkan biaya. Untuk menghindari tagihan tak terduga, hapus resource setelah Anda menyelesaikan pengujian.
Langkah 1: Buat resource
Kode Terraform berikut digunakan untuk skenario ini:
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 blocks"
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 vSwitch CIDR blocks"
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 addresses"
type = list(string)
default = ["192.168.0.224", "172.16.0.222", "10.0.0.112"]
}
provider "alicloud" {
region = var.default_region
}
# Create 3 VPCs, 6 vSwitches, and 3 ECS instances
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"
}
# Create 3 security groups
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"
}
# Create a CEN instance and a transit router
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 the system route table of the transit router
transit_router_id = alicloud_cen_transit_router.tr.transit_router_id
transit_router_route_table_type = "System"
}
# Create 3 VPC attachments
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}"
}
# Create 3 route propagations
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
}
# Create 1 custom route table
resource "alicloud_cen_transit_router_route_table" "custom_table" { # Create a custom route table for the transit router
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 attachments 1 and 2 with the custom route 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
}
# Associate attachment 3 with the system route 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
}
# Create VPC route entries
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.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.ecs[0].id}"
}
output "ecs2_login_address" {
value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.ecs[1].id}"
}
output "ecs3_login_address" {
value = "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${var.default_region}&instanceId=${alicloud_instance.ecs[2].id}"
}Langkah 2: Verifikasi konektivitas
Lakukan langkah-langkah berikut untuk menguji konektivitas antara VPC1, VPC2, dan VPC3.
Login ke instans ECS1 di VPC1 (nama instans:
tf-CenSharedVpc-ecs1).Temukan ecs1_login_address di output Terraform. Salin alamat ini ke browser untuk mengakses instans. Saat login, pilih Temporary SSH Key-based untuk otentikasi.

Jalankan perintah ping untuk menguji konektivitas ke instans ECS3 di VPC3.
ping 10.0.0.112Respons sukses mengonfirmasi bahwa VPC1 dan VPC3 dapat berkomunikasi.

Login ke instans ECS2 di VPC2 (nama instans:
tf-CenSharedVpc-ecs2). Jalankan perintah ping untuk menguji konektivitas ke instans ECS3 di VPC3.ping 10.0.0.112Respons sukses mengonfirmasi bahwa VPC2 dan VPC3 dapat berkomunikasi.

Login ke instans ECS1 di VPC1 (nama instans:
tf-CenSharedVpc-ecs1). Jalankan perintah ping untuk menguji konektivitas ke instans ECS2 di VPC2.ping 172.16.0.222Tidak adanya respons mengonfirmasi bahwa VPC1 dan VPC2 tidak dapat berkomunikasi.

Langkah 3: Melepaskan sumber daya
Setelah menyelesaikan pengujian, jalankan perintah berikut untuk menghapus resource dan mencegah biaya yang tidak perlu.
terraform destroy --auto-approve