摘要: ROS建立NATGateway資源使VPC中的ECS可以與Internet互訪
在前面的本文中,總結了ROS搭建SNAT閘道使專有網路存取Internet,它的主要思路是在VPC網路裡面建立一個ECS做NAT閘道的角色以便實現VPC網路存取internet的功能。坦白的說,這個方法是比較複雜的。今天介紹一個ROS的新資源NATGateway,通過它能非常方便的實現這個功能,在專有網路中的機器與Internet互訪不是夢。
Nat Gateway介紹
NAT閘道(NATGateway)是一款企業級的VPC公網閘道,提供NAT專員(SNAT、DNAT)、10Gbps等級的轉寄能力、Region等級的高可用工時(跨可用區的容災能力)。
共用頻寬包(BandwidthPackage)是對NAT閘道上的公網IP與公網頻寬的封裝;一個共用頻寬包由一份公網頻寬和一組公網IP組成,這些公網IP共用頻寬。
NAT閘道與共用頻寬包需要配合使用,群組成為高性能、設定靈活的企業級閘道。
NAT Gateway在VPC中的拓撲如下圖所示:
關鍵屬性:
DNAT:目的網路位址轉譯(入方向鍵理),用於VPC內的ECS面向互連網提供服務;支援埠對應、IP對應;
SNAT:源網路位址轉譯(出方向鍵理),用於VPC內的ECS存取互連網內容;
多IP共用頻寬:NAT閘道上購買公網IP和公網頻寬時以“共用頻寬包”形式購買,一個頻寬包內的所有IP共用頻寬;
高性能:NAT閘道可以支架單一實例10Gbps等級的轉寄能力;
高可用:NAT閘道基於SDN技術,採用跨可用區分散式架構,每個實例均具備應對可用區等級故障;
按需購買:所有費用均為先使用後結算,實例規格、頻寬大小、公網IP個數均可隨時調整、即時生效;
ROS Nat Gateway相關資源介紹
這個資源是申明要在那個VPC中建立一個NATGateway。在建立NATGateway的時候必須指定VPC的ID,VSWITCH的ID,以及至少一個頻寬包。NATGateway
資源建立成功後會自動在VPC的路有表中新增一條指向NATGateway的路由表項。通過ROS可以輸出NATGateway的ID, 所有頻寬包的ID,所有頻寬包中申明的所有公網IP,Forward 表ID,SNAT表ID。
"NatGateway": {
"DependsOn": "VSwitch",
"Properties": {
"BandwidthPackage": [
{
"Bandwidth": 5,
"IpCount": 1,
"ZoneId": "cn-hangzhou-b"
},
{
"Bandwidth": 5,
"IpCount": 1,
"ZoneId": "cn-hangzhou-b"
}
],
"Description": "hhhhh",
"NatGatewayName": "nat_gateway_1",
"Spec": "Middle",
"VSwitchId": {
"Fn::GetAtt": [
"VSwitch",
"VSwitchId"
]
},
"VpcId": {
"Fn::GetAtt": [
"Vpc",
"VpcId"
]
}
},
"Type": "ALIYUN::ECS::NatGateway"
}
頻寬包也可以單獨作為一個資源建立,然後關聯到一個具體的NATGateway。建立頻寬包必須要指定NATGateway的ID,頻寬大小,以及所需要的公網IP數量。
資源建立完成後,通過ROS可以輸出頻寬包ID和頻寬包中所申請的所有IP
BandwidthPackage": {
"Type": "ALIYUN::ECS::BandwidthPackage",
"Properties": {
"BandwidthPackageName": "pkg_2",
"Description": "new bandwidth package",
"NatGatewayId": "ngw-h1xoxepyf",
"IpCount": 2,
"Bandwidth": 5,
"ZoneId": "cn-beijing-c"
}
}
本資源是給NATGateway的目的網路轉換表新增存取規則,通過這條規則可以讓外網主動存取VPC網路中的機器。建立一條規則必須傳入Forward表的ID,網路通訊協定,VPC內部機器的IP,內部機器的埠,暴漏給外網存取的IP和埠。外網的IP,就是頻寬包中所申請的IP資源。
資源建立完成,通過ROS可以輸出這條規則的ID
下面的例子閱聽如何設定一個外網通過22埠存取在VPC網路的機器。
"ForwardEntry": {
"Properties": {
"ExternalIp": {
"Fn::Select": [
"1",
{
"Fn::GetAtt": [
"NatGateway",
"BandwidthPackageIps"
]
}
]
},
"ExternalPort": "22",
"ForwardTableId": {
"Fn::GetAtt": [
"NatGateway",
"ForwardTableId"
]
},
"InternalIp": "192.168.0.1",
"InternalPort": "22",
"IpProtocol": "TCP"
},
"Type": "ALIYUN::ECS::ForwardEntry"
}
本資源給源網路位址轉譯表設定一條規則,通過這個規則可以讓VPC中的機器能主動存取外網。建立一條規則必須傳入SNAT表的ID,將要存取外網的VSWITCHID,以及通過那個外網IP存取外網,這個IP也是頻寬包中所申請的IP。如果同時需要主動,被動存取外網的,就必須至少有兩個外網IP。也就是SNAT和Forward表的公網IP不能相同。
"SNatEntry": {
"Properties": {
"SNatIp": {
"Fn::Select": [
"0",
{
"Fn::GetAtt": [
"NatGateway",
"BandwidthPackageIps"
]
}
]
},
"SNatTableId": {
"Fn::GetAtt": [
"NatGateway",
"SNatTableId"
]
},
"SourceVSwitchId": {
"Fn::GetAtt": [
"VSwitch",
"VSwitchId"
]
}
}
下面是一個完整的範本建立一個VPC網路,然後設定NATGateway,讓VPC的中的ECS實例能和Internet互訪。完整範本下載->>
相關產品:
- 專有網路VPC
- 資源編排ROS
- 憑證服務