更新时间:2023-12-22 GMT+08:00
分享

NAT网关

应用场景

当多个云主机在没有绑定弹性公网IP的情况下需要访问公网,为了节省弹性公网IP资源并且避免云主机IP直接暴露在公网上,可以通过公网NAT网关共享弹性公网IP的方式访问公网,实现无弹性公网IP的云主机访问公网。

操作步骤

  1. 申请弹性公网IP。

    创建main.tf文件,输入以下内容,并保存在当前的执行目录中。

    resource "huaweicloud_vpc_eip" "eip_1" {
      publicip {
        type = "5_bgp"
      }
      bandwidth {
        name        = "test"
        size        = 5
        share_type  = "PER"
        charge_mode = "traffic"
      }
    }

  2. 申请NAT网关并配置SNAT规则。

    在main.tf文件中增加以下内容。
    data "huaweicloud_vpc" "vpc_1" {
      name = "vpc-default"
    }
    
    data "huaweicloud_vpc_subnet" "subnet_1" {
      name   = "subnet-default"
      vpc_id = data.huaweicloud_vpc.vpc_1.id
    }
    
    resource "huaweicloud_nat_gateway" "nat_1" {
      name        = "nat-gateway-basic"
      description = "test for terraform examples"
      spec        = "1"
      vpc_id      = data.huaweicloud_vpc.vpc_1.id
      subnet_id   = data.huaweicloud_vpc_subnet.subnet_1.id
    }
    
    resource "huaweicloud_nat_snat_rule" "snat_1" {
      floating_ip_id = huaweicloud_vpc_eip.eip_1.id
      nat_gateway_id = huaweicloud_nat_gateway.nat_1.id
      network_id     = data.huaweicloud_vpc_subnet.subnet_1.id
    }
    表1 参数说明

    资源名称

    参数名称

    参数说明

    huaweicloud_nat_gateway

    name

    NAT网关的名字,支持数字、字母、_(下划线)、-(中划线)、中文。

    description

    NAT网关的描述

    spec

    NAT网关的规格。取值为:

    • “1”:小型,SNAT最大连接数10000
    • “2”:中型,SNAT最大连接数50000
    • “3”:大型,SNAT最大连接数200000
    • “4”:超大型,SNAT最大连接数1000000

    vpc_id

    VPC的ID。

    subnet_id

    子网的网络ID。

    huaweicloud_nat_snat_rule

    floating_ip_id

    弹性公网IP的id,多个弹性公网IP使用逗号分隔。

    • 约束:弹性公网IP的id个数不能超过20个。

    nat_gateway_id

    NAT网关的ID。

    network_id

    规则使用的网络ID。

  3. 创建资源。

    1. 运行 terraform init 初始化环境。
    2. 运行 terraform plan 查看资源。
    3. 确认资源无误后,运行 terraform apply 开始创建。

相关文档