ROS搭建具有NAT Gateway功能的VPC 网络

背景

专有网络环境下,特定ECS往往需要公网访问能力,前面我们介绍了《ROS搭建SNAT网关使专有网络访问Internet》,利用ECS和EIP手动的搭建一个SNAT网关。

目前阿里云官方推出了专门的网络产品——NAT网关,对公网IP和公网带宽进行统一管理。

ROS搭建具有NAT Gateway功能的VPC 网络

ROS资源介绍

ROS提供三个插件对NAT Gateway进行支持:

  • ALIYUN::ECS::NatGateway, 创建Nat网关,分配带宽包和公网IP

    • VpcId: 给哪个VPC中创建NatGateway
    • Spec: NAT网关的规格, 可选值:Small|Middle|Large
    • BandwidthPackage: 可以申请多个带宽包,并设置带宽包的带宽值以及公网IP数。同一带宽包下的公网IP共享带宽。
  • ALIYUN::ECS::ForwardEntry, 配置端口转发规则, 提供外部访问vpc内部ip的能力

    • ForwardTableId: 指向 NatGateway 的ForwardTableId
    • IpProtocol: IpProtocol类型,可选TCP|UDP|Any
    • ExternalIp: NatGateway 上的共享带宽包中的 IP
    • ExternalPort: 源端口;取值范围:1~65535|Any
    • InternalIp: 端口转发规则中的目标IP,是一个私网IP地址
    • InternalPort: 目标端口;取值范围为1~65535|Any
  • ALIYUN::ECS::SNatEntry, 在指定的NAT Gateway上添加SNAT规则, 提供vpc访问公网的能力

    • SNatTableId: 要在哪个SNAT表中添加规则
    • SourceVSwitchId: 允许哪个VSwitch下的ECS通过NAT网关的SNAT功能访问互联网. 注意:这里是以VSwitch为基本单位
    • SNatIp: 使用SNAT转换后使用的源地址;必须是当前NAT Gateway上的某个带宽包中的公网IP。注意:SNAT和DNAT不能配置相同的带宽包IP

ROS模板

本例创建VPC类型的ECS, 同时配置公网访问。主要片段如下:

  • 创建NatGateway, 规格为小型,一个带宽包,两个公网IP
"NatGateway": {
      "Type": "ALIYUN::ECS::NatGateway",
      "Properties": {
        "NatGatewayName": "NatGateway",
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        "VSwitchId": {
          "Ref": "PubSubnet"
        },
        "BandwidthPackage": [
          {
            "Bandwidth": 10,
            "IpCount": 2
          }
        ],
        "Spec": "Small"
      }
    }
  • 创建ForwardEntry,开放ECS的22端口,通过带宽包的第一个IP进行转发
"ForwardEntryMaster": {
      "Type": "ALIYUN::ECS::ForwardEntry",
      "Properties": {
        "ExternalIp": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAtt": [
                "NatGateway",
                "BandwidthPackageIps"
              ]
            }
          ]
        },
        "ExternalPort": "22",
        "ForwardTableId": {
          "Fn::GetAtt": [
            "NatGateway",
            "ForwardTableId"
          ]
        },
        "InternalIp": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAtt": [
                "Master",
                "PrivateIps"
              ]
            }
          ]
        },
        "IpProtocol": "TCP",
        "InternalPort": "22"
      }
    }
  • 创建SNatEntry,vswitch下的ECS可以通过带宽包的第二个IP访问公网
"SNatEntry": {
      "Type": "ALIYUN::ECS::SNatEntry",
      "Properties": {
        "SNatTableId": {
          "Fn::GetAtt": [
            "NatGateway",
            "SNatTableId"
          ]
        },
        "SNatIp": {
          "Fn::Select": [
            "1",
            {
              "Fn::GetAtt": [
                "NatGateway",
                "BandwidthPackageIps"
              ]
            }
          ]
        },
        "SourceVSwitchId": {
          "Fn::GetAtt": [
            "PubSubnet",
            "VSwitchId"
          ]
        }
      }
    }

到ROS控制台创建 >>

下载完整模版 >>

上一篇:selenium+python自动化85-python3.6上SendKeys报错用PyUserInput取代


下一篇:.NET Framework 1.1 中 SmartNavigation 的实现