文章

02-AWS-使用NAT网关出口

注意

在AWS中,配置多可用区的子网通过公网NAT网关访问互联网,需遵循以下步骤和架构,互联网网关(IGW)是必需的。

1. 网络架构概述

  • 目标:使多个可用区中的私有子网通过NAT网关访问互联网。

  • 关键组件:

    • VPC(Virtual Private Cloud):逻辑隔离的网络环境。
    • 公有子网:位于每个可用区,包含NAT网关,并通过路由表指向互联网网关(IGW)。
    • 私有子网:位于每个可用区,通过路由表指向本可用区的NAT网关。
    • 互联网网关(IGW):必须附加到VPC,用于公有子网的互联网通信。
    • NAT网关:部署在每个可用区的公有子网中,为私有子网提供出站互联网访问。

2. 配置步骤

(1) 创建VPC并附加互联网网关

创建VPC

1
aws ec2 create-vpc --cidr-block 10.0.0.0/16

附加互联网网关:

1
2
aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway --vpc-id <vpc-id> --internet-gateway-id <igw-id>

(2) 创建多可用区的公有子网和私有子网

示例可用区:us-east-1a、us-east-1b。

公有子网(每个可用区一个):

bash 复制

公有子网1(us-east-1a)

aws ec2 create-subnet –vpc-id --cidr-block 10.0.1.0/24 --availability-zone us-east-1a

公有子网2(us-east-1b)

aws ec2 create-subnet –vpc-id --cidr-block 10.0.2.0/24 --availability-zone us-east-1b 私有子网(每个可用区一个):

bash 复制

私有子网1(us-east-1a)

aws ec2 create-subnet –vpc-id --cidr-block 10.0.3.0/24 --availability-zone us-east-1a

私有子网2(us-east-1b)

aws ec2 create-subnet –vpc-id --cidr-block 10.0.4.0/24 --availability-zone us-east-1b (3) 配置公有子网的路由表(指向互联网网关) 公有子网路由表规则:

默认路由(0.0.0.0/0)指向互联网网关(IGW)。

bash 复制

创建路由表

aws ec2 create-route-table –vpc-id

添加默认路由到互联网网关

aws ec2 create-route –route-table-id --destination-cidr-block 0.0.0.0/0 --gateway-id

将公有子网关联到路由表

aws ec2 associate-route-table –subnet-id --route-table-id (4) 在每个公有子网中创建NAT网关 NAT网关需要弹性IP(EIP):

bash 复制

为每个可用区的NAT网关分配EIP

aws ec2 allocate-address –domain vpc

创建NAT网关(示例:us-east-1a)

aws ec2 create-nat-gateway –subnet-id --allocation-id (5) 配置私有子网的路由表(指向NAT网关) 私有子网路由表规则:

默认路由(0.0.0.0/0)指向本可用区的NAT网关。

bash 复制

创建私有子网路由表

aws ec2 create-route-table –vpc-id

添加默认路由到NAT网关(示例:us-east-1a的NAT网关)

aws ec2 create-route –route-table-id --destination-cidr-block 0.0.0.0/0 --nat-gateway-id

将私有子网关联到路由表

aws ec2 associate-route-table –subnet-id --route-table-id

  1. 互联网网关(IGW)的必要性 为什么必须使用IGW:

NAT网关依赖公有子网:NAT网关必须部署在公有子网中,而公有子网需要IGW才能访问互联网。

数据流路径:

私有子网实例 → NAT网关(公有子网) → 互联网网关(IGW) → 互联网。

无IGW的后果:如果公有子网没有IGW,NAT网关无法将流量路由到互联网,导致私有子网无法访问外网。

  1. 高可用性设计 多可用区NAT网关:在每个可用区的公有子网部署独立的NAT网关。

优点:避免单点故障,确保某个可用区故障时,其他可用区的私有子网仍能访问互联网。

缺点:成本较高(每个NAT网关按小时计费)。

共享NAT网关(不推荐):跨可用区共享一个NAT网关。

风险:如果NAT网关所在可用区故障,所有依赖它的私有子网将失去互联网访问能力。

  1. 验证配置 测试私有子网的出站连接:

在私有子网的实例中执行:

bash 复制 curl https://checkip.amazonaws.com # 应返回NAT网关的弹性IP ping google.com 检查路由表:

确认私有子网的路由表将 0.0.0.0/0 指向NAT网关。

确认公有子网的路由表将 0.0.0.0/0 指向IGW。

  1. 成本优化建议 NAT网关成本:每个NAT网关按小时和数据处理量计费。多可用区部署会增加成本。

替代方案:

NAT实例:使用自行管理的NAT实例(EC2)替代NAT网关,成本较低但需自行维护高可用性。

VPC终端节点(Gateway类型):为S3、DynamoDB等服务创建终端节点,避免通过NAT网关访问这些服务,减少流量费用。

总结 必须使用互联网网关(IGW):NAT网关所在的公有子网必须通过IGW访问互联网。

多可用区部署最佳实践:

每个可用区的私有子网使用独立的NAT网关。

每个NAT网关部署在对应可用区的公有子网中。

公有子网的路由表指向IGW,私有子网的路由表指向本可用区的NAT网关。

通过以上配置,多可用区的私有子网可通过NAT网关安全地访问互联网,同时确保高可用性。

本文由作者按照 CC BY 4.0 进行授权