使用轉寄路由器可以實現在多個Virtual Private Cloud(Virtual Private Cloud)共用一個公網NAT Gateway,從而達到多VPC訪問公網的效果。
背景資訊
雲企業網CEN(Cloud Enterprise Network)是運行在阿里雲私人全球網路上的一張高可用網路。雲企業網通過轉寄路由器TR(Transit Router)協助您在跨地區VPC之間,VPC與本機資料中心IDC(Internet Data Center)間搭建私網通訊通道。
轉寄路由器執行個體是地區範圍內的核心轉寄網元,為您轉寄同地區或跨地區間的流量,並支援定義靈活的路由策略。在一個雲企業網執行個體中,一個地區支援建立一個轉寄路由器執行個體。您可以將網路執行個體串連到企業版轉寄路由器。企業版轉寄路由器串連網路執行個體後,通過轉寄路由器路由表格儲存體網路執行個體的路由。企業版轉寄路由器通過查詢路由表中的路由條目資訊轉寄網路執行個體的流量。
關於轉寄路由器的更多資訊,請參見轉寄路由器的工作原理。
情境樣本
某公司在西南1(成都)地區建立了兩個VPC,其名稱分別為VPC-A和VPC-B。在VPC-A中,建立了vSwitch-A1和vSwitch-A2,並在vSwitch-A1中建立了公網NAT Gateway;在vSwitch-A2中建立ECS1執行個體。在VPC-B中,建立了vSwitch-B1和vSwitch-B2,並在vSwitch-B1中建立了ECS2執行個體。因公司業務需要,VPC-A與VPC-B都需要訪問公網。
公司可以通過使用轉寄路由器並結合轉寄路由器路由表功能,然後在VPC-A中建立公網NAT Gateway,同時為公網NAT Gateway配置SNAT規則,實現VPC-A和VPC-B通過公網NAT Gateway訪問公網。
前提條件
您已經參考下表完成了VPC和vSwitch的建立。具體操作,請參見建立和管理專用網路。
VPC名稱
地區
交換器名稱
可用性區域和網段
VPC-A
西南1(成都)
vSwitch-A1
成都可用性區域A,192.168.10.0/24
vSwitch-A2
成都可用性區域B,192.168.20.0/24
VPC-B
vSwitch-B1
成都可用性區域A,172.16.10.0/24
vSwitch-B2
成都可用性區域B,172.16.20.0/24
您已經在vSwitch-A2中建立了ECS1執行個體,在vSwitch-B1中建立了ECS2執行個體。具體操作,請參見自訂購買執行個體。
您已經建立了雲企業網執行個體。具體操作,請參見建立雲企業網執行個體。
您已經在VPC執行個體所在地區建立了企業版轉寄路由器執行個體。具體操作,請參見建立轉寄路由器執行個體。
配置步驟
步驟一:建立公網NAT Gateway
在公網NAT Gateway頁面,單擊建立公網NAT Gateway。
在NAT Gateway頁面,配置以下購買資訊,然後單擊立即購買。
配置項
說明
地區
選擇需要建立公網NAT Gateway的地區。
網路及可用性區域
請選擇NAT Gateway所屬的VPC和交換器。建立成功後,無法進行修改或切換。
網路類型
本文選擇公網NAT Gateway。
公網NAT Gateway:具備網路位址轉譯能力,可以綁定Elastic IP Address,從而為ECS執行個體提供訪問互連網的能力,實現私網和公網之間的通訊。
VPC NAT Gateway:同樣具備網路位址轉譯能力,但無法綁定Elastic IP Address,只能為ECS執行個體提供私網內部的地址轉換,適用於內網地址隱藏、地址衝突規避等情境。
Elastic IP Address
本文選擇新購Elastic IP Address。
選擇已有
Elastic IP Address執行個體:選擇未綁定執行個體的Elastic IP Address。
新購Elastic IP Address:預設建立BGP(多線)類型的按使用流量計費的Elastic IP Address,可根據自身業務需要選擇頻寬峰值。
說明如需綁定其他線路類型或計費類型的Elastic IP Address,請先申請Elastic IP Address,然後選擇已有進行綁定。
每綁定一個Elastic IP Address,將佔用NAT Gateway所在交換器的一個私網IP地址。請確保該交換器具有足夠的可用私網IP地址,否則將無法成功綁定新的Elastic IP Address。
稍後配置:成功建立的NAT Gateway將不具備公網能力,使用者需手動綁定Elastic IP Address。
建立成功後,您可以在公網NAT Gateway頁面查看已建立的公網NAT Gateway執行個體。

步驟二:建立VPC串連並配置路由
在西南1(成都)地區的轉寄路由器中建立VPC-A串連和VPC-B串連,並為轉寄路由器配置路由。
登入雲企業網管理主控台,找到目標雲企業網執行個體,單擊目標執行個體ID。
在頁簽,找到目標地區的轉寄路由器執行個體,在操作列單擊创建网络实例连接。
分別為VPC-A、VPC-B建立VPC串連。
說明企業版轉寄路由器支援的地區和可用性區域,請參見轉寄路由器的版本。
以建立VPC-A串連為例,在網路執行個體中選擇vpc-2 | VPC-A,在交換器地區選取項目兩個可用性區域的交換器以實現容災:
成都可用性區域B:vsw-2*** | vSwitch-A2
成都可用性區域A:vsw-*** | vSwitch-A1
在進階配置中勾選自動關聯至轉寄路由器的預設路由表、自動傳播系統路由至轉寄路由器的預設路由表、啟動為VPC的所有路由表配置指向轉寄路由器的路由。
在转发路由器路由表頁簽,單擊创建路由条目。
添加0.0.0.0/0路由條目,並將其指向VPC-A,以便將IPv4流量轉寄至VPC-A。
步驟三:配置VPC路由表
在路由表中添加0.0.0.0/0,並將其指向轉寄路由器,以便將IPv4流量轉寄至轉寄路由器。
- 登入專用網路管理主控台。
- 在左側導覽列,單擊路由表。
在路由表頁面,找到VPC-B的系統路由表,單擊路由表的ID。
在路由表詳情頁面,單擊頁簽,然後單擊添加路由條目。
在添加路由條目面板,配置以下參數資訊,然後單擊確定。
配置
說明
名稱
輸入路由條目的名稱。
目標網段
本文選擇IPv4網段,然後設定0.0.0.0/0。
下一跳類型
選擇下一跳的執行個體類型。
本文選擇轉寄路由器。
轉寄路由器
本文選擇VPC-B串連。
您可以在自訂路由條目頁簽,查看已建立的指向VPC-B串連的路由條目。
步驟四:建立SNAT條目
在NAT Gateway上配置相應的SNAT條目,以確保指定資源能夠通過綁定的Elastic IP Address訪問互連網。
在公網NAT Gateway頁面,找到目標公網NAT Gateway執行個體,然後在操作列單擊設定SNAT。
在SNAT管理頁簽,單擊建立SNAT條目。
在建立SNAT條目頁面,配置以下參數,然後單擊確定建立。
配置項
說明
SNAT條目粒度
本文選擇VPC粒度。您可以根據實際業務需求,選擇適合自身業務的SNAT條目粒度。
VPC粒度:適用於需要讓VPC內所有ECS執行個體,以及通過CEN或專線等產品實現內網互連並配置了0.0.0.0/0路由條目指向該VPC的其他VPC或資料IDC內的ECS執行個體,統一通過同一Elastic IP Address訪問公網的情境。
交換器粒度:適用於對公網訪問有精細控制需求,只允許指定的交換器具備公網訪問能力的情境。
ECS/彈性網卡粒度:適用於對公網訪問有精細控制需求,只允許指定的ECS執行個體或彈性網卡具備公網訪問能力的情境。
自訂網段粒度:適用於需要靈活指定任意IP網段,通過NAT Gateway統一配置公網訪問能力的情境,可覆蓋VPC內、跨VPC或跨本地IDC等各種網路環境,滿足複雜或定製化網路結構的需求。
說明當您選擇多個交換器或ECS/彈性網卡時,將為您建立多條SNAT條目,這些條目將使用相同的公網IP地址。
選擇Elastic IP Address地址
選擇用來提供公網訪問的Elastic IP Address。
結果驗證
通過Workbench控制台依次登入ECS1、ECS2執行個體。
執行
ping 223.5.5.5命令。經驗證,ECS1和ECS2執行個體均可成功訪問公網。
左側ECS1(IP: 192.168.20.105)驗證結果:
[root@xxx ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.20.105 netmask 255.255.255.0 broadcast 192.168.20.255 inet6 fe80::216:3eff:fe05:a16b prefixlen 64 scopeid 0x20<link> ether 00:16:3e:05:a1:6b txqueuelen 1000 (Ethernet) RX packets 201827 bytes 292016507 (278.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 24840 bytes 6379164 (6.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 136 bytes 10888 (10.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 136 bytes 10888 (10.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@xxx ~]# ping 223.5.5.5 PING 223.5.5.5 (223.5.5.5) 56(84) bytes of data. 64 bytes from 223.5.5.5: icmp_seq=1 ttl=125 time=4.05 ms 64 bytes from 223.5.5.5: icmp_seq=2 ttl=125 time=3.61 ms 64 bytes from 223.5.5.5: icmp_seq=3 ttl=125 time=3.68 ms 64 bytes from 223.5.5.5: icmp_seq=4 ttl=125 time=3.60 ms ^C --- 223.5.5.5 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 3.601/3.732/4.046/0.197 ms右側ECS2(IP: 172.16.10.30)驗證結果:
[root@xxx ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.10.30 netmask 255.255.255.0 broadcast 172.16.10.255 inet6 fe80::216:3eff:fe05:a187 prefixlen 64 scopeid 0x20<link> ether 00:16:3e:05:a1:87 txqueuelen 1000 (Ethernet) RX packets 203086 bytes 291677540 (278.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 27542 bytes 6764889 (6.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 136 bytes 10888 (10.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 136 bytes 10888 (10.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@xxx ~]# ping 223.5.5.5 PING 223.5.5.5 (223.5.5.5) 56(84) bytes of data. 64 bytes from 223.5.5.5: icmp_seq=1 ttl=124 time=3.81 ms 64 bytes from 223.5.5.5: icmp_seq=2 ttl=124 time=3.55 ms 64 bytes from 223.5.5.5: icmp_seq=3 ttl=124 time=3.56 ms 64 bytes from 223.5.5.5: icmp_seq=4 ttl=124 time=3.52 ms ^C --- 223.5.5.5 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 3.520/3.609/3.809/0.123 ms