不同VPC預設網路隔離,無法互連。通過建立對等串連,並為兩端VPC分別配置路由,可以實現VPC私網互連。對等串連功能支援同帳號/跨帳號、同地區/跨地區VPC互連,配置前請確保兩端VPC的網段不重疊。
工作流程
VPC 對等串連通過私網連通兩個VPC,使部署在兩端 VPC 中的資源可以使用私網 IP 互訪。
-
建立VPC對等串連:同帳號VPC,系統會自動接受請求並建立串連。跨帳號VPC,需要接收端帳號接受串連請求。
-
雙向路由配置:為兩端VPC分別配置指向對端VPC的路由,才能實現資源互訪。
當有大量 VPC 互連、大頻寬、低成本的綜合需求時,可同時使用 VPC 對等串連和雲企業網。二者區別,可參考VPC互連。
配置對等串連
控制台
-
前置檢查:
-
確保兩端VPC的網段不重疊。若重疊,需將業務遷移到網段不重疊的VPC中。
-
如果初次使用VPC對等串連,需要確保兩端VPC所屬帳號都開通CDT功能。
-
-
建立對等串連:
-
前往專用網路控制台 - VPC對等串連,在頁面上方選擇VPC所在的地區,單擊建立對等串連。
-
建立對等串連:根據兩端VPC執行個體所屬的帳號和地區,選擇接收端帳號類型和接收端地區類型。
-
接收端帳號類型:
-
同帳號:系統會自動接受請求並建立串連。可勾選VPC系統路由表添加對端VPC CIDR路由,將由系統配置雙向路由。
-
跨帳號:需要使用接收端帳號前往專用網路控制台 - VPC對等串連,在頁面上方選擇 VPC 所在的地區,在目標對等串連的操作列單擊接收。
接收端也可以拒絕或刪除串連請求,可以參考VPC對等串連的狀態機器瞭解完整流程。
-
-
接收端地區類型為跨地區時,需配置鏈路類型和接收端地區。
支援鉑金、金兩種鏈路類型,提供不同品質的流量傳輸服務,對應不同的計費單價。
-
鉑金(服務可用性承諾:99.995%):適用於對鏈路抖動、時延敏感,對鏈路品質要求較高的業務。例如證券交易、線上語音、視頻會議、即時遊戲等。
-
金(服務可用性承諾:99.95%):適用於對鏈路品質不敏感的業務。例如資料同步、檔案傳輸等。
-
-
-
-
雙向路由配置:
如需使用IPv6地址互訪,需配置指向對端VPC執行個體的IPv6網段的路由條目。
-
使用發起端 VPC 所屬帳號:單擊發起端列的配置路由條目,選擇該 VPC 中需連通的資源所在交換器綁定的路由表,配置目標網段為接收端網段。
-
使用接收端 VPC 所屬帳號:單擊接收端列的配置路由條目,選擇該 VPC 中需連通的資源所在交換器綁定的路由表,配置目標網段為發起端網段。
-
-
驗證連通性:
-
路徑分析:分析過程不發送真實資料包,不會影響業務運行。
-
在目標對等串連執行個體的診斷列選擇或單擊目標對等串連執行個體ID進入路徑分析頁簽。
-
配置源與目的,指定具體的協議和連接埠號碼來類比業務訪問情境,校正二者的連通性。
-
系統將檢查路由/安全性群組/網路ACL的配置,並給出診斷結果。
-
單向路徑可達時,需配置反向路徑進行連通性校正。
-
-
手動驗證:在發起端VPC內的ECS,執行
ping <對端 ECS 的私網 IP>。
-
建立跨地區對等串連後,單擊執行個體ID,支援編輯跨地區對等串連的頻寬(Mbps)和鏈路類型。
兩端帳號均可刪除VPC對等串連。刪除後,私網互訪能力將會中斷,且刪除後無法恢複,需確保在對業務無影響的情況下謹慎操作。
API
建立對等串連
-
調用CreateVpcPeerConnection建立VPC對等串連。
-
兩端VPC屬於不同帳號時,需使用接收端帳號調用AcceptVpcPeerConnection接受VPC對等串連。
接收端可以調用RejectVpcPeerConnection拒絕VPC對等串連。
-
使用兩端 VPC 所屬帳號,分別調用GetVpcPeerConnectionAttribute查詢兩端VPC的網段。
-
使用兩端 VPC 所屬帳號,分別調用CreateRouteEntry建立指向對等串連的路由條目。
修改跨地區對等串連
調用ModifyVpcPeerConnection修改跨地區VPC對等串連的頻寬或鏈路類型。
刪除對等串連
-
調用DeleteRouteEntry刪除指向對等串連的路由條目。
-
調用DeleteVpcPeerConnection刪除VPC對等串連。
路徑分析
依次調用以下API來使用路徑分析校正連通性。
Terraform
同帳號對等串連
Resources:alicloud_vpc_peer_connection、alicloud_route_entry
Data Sources:alicloud_account
# VPC所屬帳號
data "alicloud_account" "default" {}
provider "alicloud" {
alias = "local"
region = "cn-hangzhou" #發起端VPC所屬地區。
}
provider "alicloud" {
alias = "accepting"
region = "cn-beijing" #接收端地區。可以和發起端地區相同,需要根據接收端VPC所屬地區配置。
}
# 發起端VPC ID
variable "local_vpc_id" {
default = "vpc-bp1c******"
}
# 接收端VPC ID
variable "accepting_vpc_id" {
default = "vpc-2zev******"
}
# 建立VPC對等串連
resource "alicloud_vpc_peer_connection" "example_peer_connection" {
provider = alicloud.local
peer_connection_name = "example_peer_connection_name"
vpc_id = var.local_vpc_id # 發起端VPC ID
accepting_ali_uid = data.alicloud_account.default.id # 接收端帳號 ID
accepting_region_id = "cn-beijing" # 接收端VPC所屬地區
accepting_vpc_id = var.accepting_vpc_id # 接收端VPCID
bandwidth = 1024 # 頻寬,單位:Mbps。僅發起端地區和接收端地區不同時,可以配置。
link_type = "Gold" # 鏈路類型,僅發起端地區和接收端地區不同時,可以配置。
}
# 為發起端VPC配置路由
resource "alicloud_route_entry" "example_local_route" {
provider = alicloud.local
route_table_id = "vtb-bp1a******" # 發起端執行個體所屬交換器綁定的路由表
destination_cidrblock = "172.16.0.0/12" # 接收端VPC網段
nexthop_type = "VpcPeer" # 下一跳為VPC對等串連
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
# 為接收端VPC配置路由
resource "alicloud_route_entry" "example_acceptor_route" {
provider = alicloud.accepting
route_table_id = "vtb-2ze1******" # 接收端執行個體所屬交換器綁定的路由表
destination_cidrblock = "10.0.0.0/8" # 發起端VPC網段
nexthop_type = "VpcPeer" # 下一跳為VPC對等串連
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
跨帳號對等串連
Resources:alicloud_vpc_peer_connection、alicloud_vpc_peer_connection_accepter、alicloud_route_entry
provider "alicloud" {
alias = "local"
region = "cn-hangzhou" #發起端地區
}
#接收端地區。可以和發起端地區相同,需要根據接收端VPC所屬地區配置。
variable "accepting_region" {
default = "cn-beijing"
}
#接收端帳號
variable "accepting_uid" {
default = "1234******"
}
#接收端帳號AK
variable "access_key_id" {
description = "The AccessKey ID for operating your infrastructure"
}
#接收端帳號SK
variable "access_key_secret" {
description = "The AccessKey Secret for operating your infrastructure"
}
provider "alicloud" {
alias = "acceptor"
region = var.accepting_region
access_key = var.access_key_id
secret_key = var.access_key_secret
}
# 發起端VPC ID
variable "local_vpc_id" {
default = "vpc-2ze0******"
}
# 接收端VPC ID
variable "accepting_vpc_id" {
default = "vpc-wz9e******"
}
# 建立VPC對等串連
resource "alicloud_vpc_peer_connection" "example_peer_connection" {
provider = alicloud.local
peer_connection_name = "example_peer_connection_name"
vpc_id = var.local_vpc_id # 發起端VPC ID
accepting_ali_uid = var.accepting_uid # 接收端帳號ID
accepting_region_id = var.accepting_region # 接收端地區
accepting_vpc_id = var.accepting_vpc_id # 接收端VPC ID
bandwidth = 1024 # 頻寬,單位:Mbps。僅發起端地區和接收端地區不同時,可以配置。
link_type = "Gold" # 鏈路類型,僅發起端地區和接收端地區不同時,可以配置。
}
# 接收端接受對等串連請求
resource "alicloud_vpc_peer_connection_accepter" "example_peer_connection_accepter" {
provider = alicloud.acceptor
instance_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
# 為發起端VPC配置路由
resource "alicloud_route_entry" "example_local_route" {
provider = alicloud.local
route_table_id = "vtb-2zel******" # 發送端執行個體所屬交換器綁定的路由表
destination_cidrblock = "192.168.0.0/24" # 接收端VPC網段
nexthop_type = "VpcPeer" # 下一跳為VPC對等串連
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
# 為接收端VPC配置路由
resource "alicloud_route_entry" "example_acceptor_route" {
provider = alicloud.acceptor
route_table_id = "vtb-wz95******" # 接收端執行個體所屬交換器綁定的路由表
destination_cidrblock = "172.16.0.0/12" # 發起端VPC網段
nexthop_type = "VpcPeer" # 下一跳為VPC對等串連
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
網路連通性排查
建議優先使用路徑分析驗證網路連通性。
|
檢查項 |
檢查內容 |
解決方案 |
|
對等串連狀態 |
查看目標對等串連執行個體的狀態是否為已啟用。 |
如果狀態為對端接收中,需要聯絡接收端帳號接受串連。 |
|
網段配置 |
查看發起端網段和接收端網段:
|
|
|
路由配置 |
查看對等串連詳情頁的路由條目列表:
|
檢查並修正雙向路由配置。 |
|
訪問規則配置 |
|
確保安全性群組、網路 ACL、RDS的訪問白名單均允許存取對端 IP。 |
配置樣本
三個VPC互訪
為VPC對等串連配置路由時,可以:
-
將對端VPC網段設為目標網段,所有執行個體均可以互相訪問,簡化管理。
-
配置更精細的路由,將對端VPC中的交換器網段或特定執行個體的IP地址設為目標網段,增強安全性。但新增執行個體需要通訊時,須手動更新路由表。
例如,VPC1 配置了指向 VPC2 交換器3網段和 VPC3 中 ECS04 的路由,因此 VPC1 資源僅可與交換器3資源、ECS04 私網通訊。VPC2 和 VPC3 配置了指向對端 VPC 網段的路由,資源可完全互訪。
多個VPC與中心VPC互連
例如,分支VPC均可訪問中心VPC部署的服務,但分支VPC間無法互訪。典型情境:
-
多部門隔離:不同業務部門VPC不能互連,但需訪問中心VPC的共用服務。
-
多使用者隔離:服務部署在獨立VPC內,提供給多個使用者。每個使用者VPC都與服務VPC互連,但使用者VPC之間無法互連。
限制未授權的跨帳號串連
預設情況下,RAM 使用者只要擁有 vpc:CreateVpcPeerConnection 與 vpc:AcceptVpcPeerConnection 許可權,即可與任意帳號建立 VPC 對等串連。如需僅允許 RAM 使用者與組織內或指定的對端帳號建立串連,避免敏感性資料通過未授權的跨帳號網路通道泄露,可以在 RAM 自訂策略中使用 acs:TargetRDId、acs:TargetRDPath等全域 Condition Key,約束可串連的對端帳號。
Condition Key
鑒權時,RAM 會根據請求中的 AcceptingAliUid(建立對等串連時)或 RequestingAliUid(接受對等串連時)反查對端帳號所屬的資來源目錄,並將以下 Condition Key 注入鑒權上下文,由您自訂策略中的 Condition 進行匹配。
|
Condition Key |
類型 |
說明 |
典型情境 |
|
|
String |
對端帳號所屬的資來源目錄 ID,例如 |
限定對端帳號必須屬於指定資來源目錄。 |
|
|
String |
對端帳號所屬的資來源目錄路徑,格式為 |
限定對端帳號必須位於指定資源夾(Folder)下,滿足分層治理需求。 |
使用約束:
僅vpc:CreateVpcPeerConnection與vpc:AcceptVpcPeerConnection會注入上述 Condition Key,對等串連的查詢、修改、刪除等其他動作不生效。
命中策略後請求返回錯誤碼Forbidden.NoPermission,錯誤明細中NoPermissionType為ExplicitDeny,可通過 RequestId 在Action Trail中追溯命中過程。
選擇限制策略
實際配置時,請將樣本中的資來源目錄 ID、路徑或帳號 ID 替換為您組織實際的取值,資來源目錄 ID 與路徑可在資源管理主控台擷取。
基於資來源目錄 ID
僅允許 RAM 使用者與指定資來源目錄內的帳號建立 VPC 對等串連。將 rd-xxxxxx 替換為您的資來源目錄 ID。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"vpc:CreateVpcPeerConnection",
"vpc:AcceptVpcPeerConnection"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"acs:TargetRDId": ["rd-xxxxxx"]
}
}
}
]
}
基於資來源目錄路徑
僅允許 RAM 使用者與指定資源夾(Folder)路徑下的帳號建立 VPC 對等串連,適用於精細化分層治理。將樣本中的路徑替換為您的實際路徑。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"vpc:CreateVpcPeerConnection",
"vpc:AcceptVpcPeerConnection"
],
"Resource": "*",
"Condition": {
"StringNotLike": {
"acs:TargetRDPath": ["rd-xxxxxx/r-xxxxxx/fd-xxxxxx/*"]
}
}
}
]
}
建立並授予策略
控制台
-
登入 RAM 控制台,在左側導覽列選擇權限管理>權限策略。
-
單擊創建權限策略,在腳本編輯頁簽粘貼上方所選方案的策略,並替換其中的資來源目錄 ID、路徑或帳號 ID。
-
單擊確認,填寫策略名稱再確定。
API
-
調用CreatePolicy建立自訂策略,將上方所選方案的策略作為
PolicyDocument參數傳入。 -
調用AttachPolicyToUser、AttachPolicyToGroup 或AttachPolicyToRole將策略授予目標 RAM 使用者、使用者組或角色。
監控營運
跨地區對等串連支援查看流量頻寬、丟包率等監控資訊。結合CloudMonitor服務建立閾值警示規則,可即時監控串連狀態,及時發現和解決網路擁堵或故障問題。
同地區對等串連不支援查看監控指標。
控制台
對等串連監控
-
前往專用網路控制台 - VPC對等串連,在頁面上方選擇VPC所在的地區。
-
單擊目標跨地區VPC對等串連執行個體監控列的
表徵圖,查看流量頻寬與丟包情況等監控資訊。
CloudMonitor警示
-
前往CloudMonitor控制台 - 警示規則,單擊建立警示規則。
-
為VPC對等串連的監控指標項配置各警示層級的閾值,當相應指標達到閾值後,報警聯繫人組將接收到警示通知,也可以在目標警示規則的操作列,點擊報警歷史查看警示時間軸。
-
在目標警示規則的操作列,修改/禁用/刪除規則。
API
-
參考對等串連CloudMonitor指標,調用PutResourceMetricRules為VPC對等串連指定監控項設定多條閾值警示規則。
-
調用EnableMetricRules啟用一個或多個警示規則。
-
調用DisableMetricRules禁用警示規則。
-
調用DeleteMetricRules刪除一個或多個警示規則。
Terraform
參考對等串連CloudMonitor指標配置閾值警示規則。
Resources:alicloud_cms_alarm_contact、alicloud_cms_alarm_contact_group、alicloud_cms_alarm
# 監控的對等串連執行個體ID
variable "vpc_peer_id" {
default = "pcc-28cv******"
}
# 建立警示連絡人
resource "alicloud_cms_alarm_contact" "example_cms_alarm_contact" {
alarm_contact_name = "example_cms_alarm_contact_name"
describe = "example_vpc_peer_alarm"
channels_mail = "xxx@xxx.com" # 需修改為實際的Email地址
lifecycle {
ignore_changes = [channels_mail]
}
}
# 建立警示連絡人群組
resource "alicloud_cms_alarm_contact_group" "example_cms_alarm_contact_group" {
alarm_contact_group_name = "example_cms_alarm_contact_group"
contacts = [alicloud_cms_alarm_contact.example_cms_alarm_contact.id] # 警示連絡人
}
# 建立警示規則
resource "alicloud_cms_alarm" "example_cms_alarm" {
name = "example_cms_alarm_name"
project = "acs_vpcpeer" # 雲產品的資料命名空間
metric = "IntranetRX" # 監控項名稱
period = 60 # 統計周期
contact_groups = [alicloud_cms_alarm_contact_group.example_cms_alarm_contact_group.alarm_contact_group_name]
effective_interval = "06:00-20:00" # 生效時間
metric_dimensions = <<EOF
[
{
"instanceId": "${var.vpc_peer_id}"
}
]
EOF
escalations_critical { # Info層級警示
statistics = "Sum" # 警示統計方法
comparison_operator = ">=" # 閾值比較符
threshold = 104857600 # 閾值
times = 2 # 警示重試次數
}
}
常見問題
對等串連是否支援跨境互連?
支援非跨境、跨境。
-
非跨境:中國內地地區到中國內地地區、非中國內地地區到非中國內地地區。
-
跨境:中國內地地區到非中國內地地區。需確保當前帳號已完成企業實名登記。
建立對等串連時無法選擇目標VPC?
請確認選擇的地區和帳號與目標VPC的地區和擁有者一致。
頁面上方顯示發起端地區,當前帳號為發起端帳號。接收端帳號和地區在建立對等串連時配置。
RAM使用者建立VPC對等串連時提示缺少CDT許可權?
RAM使用者已授予AliyunVPCFullAccess許可權,但建立VPC對等串連時報錯提示缺少cdt:GetCdtServiceStatus許可權。這是因為VPC對等串連依賴雲資料轉送CDT服務,建立對等串連時需要調用CDT相關介面,僅有VPC許可權不夠。
需要為RAM使用者額外授予以下任一許可權:
-
AliyunCDTFullAccess:CDT服務的完整存取。 -
AliyunCDTReadOnlyAccess:CDT服務的唯讀許可權,適用於僅需建立對等串連而無需管理CDT資源的情境。
部署 Docker 的 ECS 執行個體配置對等串連後無法互連?
當路由與安全性群組配置無誤時,通常是由 Docker 網卡地址與訪問目的網段衝突導致。可執行ip addr檢查 Docker 網卡地址是否與訪問目的網段衝突。
二者衝突時,可參考以下步驟修改 Docker 網段,確保與訪問目的網段不衝突。
-
停止 Docker 或者修改 Docker 網段會中斷業務,建議業務低峰期進行操作。
-
修改 Docker 網段時請確保與任何現有容器和應用程式的網路設定相容,以避免潛在的串連問題。
-
執行
sudo systemctl stop docker停止 Docker 服務。 -
執行
sudo vim /etc/docker/daemon.json編輯 Docker 設定檔並儲存,檔案內容如下:Docker 設定檔通常為
/etc/docker/daemon.json或/etc/docker/daemon.conf,具體檔案名稱可能有所不同。{ "bip":"新的Docker網段" } -
執行
sudo systemctl start docker啟動 Docker 服務,確保修改生效。
更多資訊
使用限制
-
以下情況不支援建立 VPC 對等串連:
-
兩端 VPC 歸屬於不同網站的帳號,即中國站帳號與國際站帳號。
-
-
VPC對等串連不具備路由傳遞能力。
例如,VPC 1和VPC 2、VPC 3分別使用對等串連實現私網互連,但VPC 2和VPC 3不能通過VPC 1做中轉互連。
-
多帳號共用VPC時,資源所有者可以建立/修改/刪除對等串連,而資源使用者沒有操作許可權。
計費說明
同地區VPC對等串連:兩端VPC屬於同帳號或跨帳號,均不收取任何費用。
跨地區VPC對等串連:統一由雲資料轉送CDT按出向流量收取流量傳輸費。
-
計費單價根據地區到地區粒度、鏈路類型來確定。支援鉑金、金兩種鏈路類型,提供不同品質的流量傳輸服務。
-
計費周期為每小時。如果在計費周期內切換鏈路類型,將按照較高服務等級的單價進行計費。
如圖,跨地區跨帳號的VPC1和VPC2建立了對等串連。若VPC1和VPC2通過VPC對等串連流出的流量分別為200GB和100GB,鏈路類型選擇金,華北5(呼和浩特)到華南3(廣州)的跨地區流量費單價為0.072 USD/GB。依據出向流量計費規則:
帳號A需要支付的費用為:0.072 USD/GB × 200GB = 14.4 USD
帳號B需要支付的費用為:0.072 USD/GB × 100GB = 7.2 USD
VPC對等串連的狀態機器
從發起端發送建立請求開始,VPC對等串連會經過各個階段。
如果建立的是同帳號VPC對等串連,系統會自動發起串連請求並自動接受請求,VPC對等串連變為已啟用狀態。
VPC對等串連狀態說明
支援的地區
地區 | 支援VPC對等串連的地區 |
亞太地區-中國 | 華東1(杭州)、華東2(上海)、華東5 (南京-本地地區-關停中)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、西北2(中衛)、中國香港、華中1(武漢-本地地區)、華東6(福州-本地地區-關停中) |
亞太地區-其他 | 日本(東京)、韓國(首爾)、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、菲律賓(馬尼拉)、泰國(曼穀)、馬來西亞(柔佛州) |
歐美地區 | 德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞) |
中東 | 阿聯酋(杜拜)、沙特(利雅得)- 夥伴營運 |
配額
|
配額名稱 |
描述 |
預設限制 |
提升配額 |
|
vpc_quota_cross_region_peer_num_per_vpc |
單個VPC支援的跨地區VPC對等串連數量 |
20個 |
|
|
vpc_quota_intra_region_peer_num_per_vpc |
單個VPC支援的同地區VPC對等串連數量 |
10個 |
|
|
vpc_quota_peer_num |
單個阿里雲帳號單地區支援的VPC對等串連數量 |
20個 |
|
|
vpc_quota_peer_cross_border_bandwidth |
跨境頻寬允許的最大值 |
1024 Mbps |
|
|
vpc_quota_peer_cross_region_bandwidth |
跨地區頻寬允許的最大值 |
1024 Mbps |