NAT 网关 - Amazon Virtual Private Cloud

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

NAT 网关

NAT 网关是一种网络地址转换 (NAT) 服务。您可以使用 NAT 网关,以便私有子网中的实例可以连接到 VPC 外部的服务,但外部服务无法启动与这些实例的连接。

在创建 NAT 网关时,您指定以下连接类型之一:

  • 公开—(默认)私有子网中的实例可以通过公共 NAT 网关连接到互联网,但不能接收来自互联网的未经请求的入站连接。您在公有子网中创建公有 NAT 网关,并且必须在创建时将弹性 IP 地址与 NAT 网关相关联。您可以将流量从 NAT 网关路由到 VPC 的互联网网关。或者,您可以使用公有 NAT 网关连接到其他 VPC 或本地部署网络。在这种情况下,您可以借助中转网关或虚拟私有网关路由来自 NAT 网关的流量。

  • 私密—私有子网中的实例可以通过私有 NAT 网关连接到其他 VPC 或您的本地部署网络。您可以借助中转网关或虚拟私有网关路由来自 NAT 网关的流量。您不能将弹性 IP 地址与私有 NAT 网关相关联。您可以将互联网网关连接到具有私有 NAT 网关的 VPC,但如果您将流量从私有 NAT 网关路由到互联网网关,则互联网网关会丢弃流量。

私有和公有 NAT 网关都会将实例的源私有 IPv4 地址映射到 NAT 网关的私有 IPv4 地址,但是对于公有 NAT 网关,互联网网关随后会将公有 NAT 网关的私有 IPv4 地址映射到与 NAT 网关关联的弹性 IP 地址。将响应流量发送到实例时,无论是使用公有还是私有 NAT 网关,NAT 网关都会将地址转换回原始源 IP 地址。

重要

您可以使用公有或私有 NAT 网关将流量路由到传输网关和虚拟私有网关。

如果您使用私有 NAT 网关连接到传输网关或虚拟私有网关,则到达目的地的流量将来自私有 NAT 网关的私有 IP 地址。

如果您使用公有 NAT 网关连接到传输网关或虚拟私有网关,则除非您使用互联网网关,否则到达目的地的流量将来自公有 NAT 网关的私有 IP 地址。仅当与互联网网关结合使用时,公有 NAT 网关才会使用其 EIP 作为源 IP 地址。

NAT 网关基础知识

每个 NAT 网关都在特定可用区中创建,并在该可用区进行冗余实施。您可以在每个可用区中创建的 NAT 网关存在数量配额。有关更多信息,请参阅 Amazon VPC 配额

如果您在多个可用区中拥有资源并且它们共享一个 NAT 网关,如果该 NAT 网关的可用区不可用,其他可用区中的资源将无法访问 Internet。为提高故障恢复能力,请在每个可用区中创建一个 NAT 网关,并配置路由以确保这些资源使用自身可用区中的 NAT 网关。

以下特征和规则适用于 NAT 网关:

  • NAT 网关支持以下协议:TCP、UDP 和 ICMP。

  • IPv4 或 IPv6 流量支持 NAT 网关。对于 IPv6 流量,NAT 网关将执行 NAT64。通过与 DNS64 结合使用(在 Route 53 Resolver 上可用),Amazon VPC 子网中的 IPv6 工作负载可以与 IPv4 资源进行通信。这些 IPv4 服务可能存在于同一 VPC(在单独子网中)或其他 VPC、本地环境或互联网上。

  • NAT 网关支持 5 Gbps 带宽并会自动扩展到 100 Gbps。如果您需要更大的带宽,您可以将资源拆分到多个子网中,并在每个子网中创建 NAT 网关。

  • 一个 NAT 网关每秒能处理 1 百万个数据包,还能自动扩展到每秒 1 千万个数据包。超出此限制后,NAT 网关将丢弃数据包。为防止数据包丢失,请将资源拆分到多个子网中,并为每个子网中创建单独的 NAT 网关。

  • 对于每个唯一目标,每个 IPv4 地址最多可以支持 55000 个并发连接。唯一目标由目标 IP 地址、目标端口和协议(TCP/UDP/ICMP)的唯一组合标识。您可以通过将最多 8 个 IPv4 地址(1 个主要 IPv4 地址和 7 个辅助 IPv4 地址)关联到 NAT 网关来提高此限制。默认情况下,公有 NAT 网关只能关联 2 个弹性 IP 地址。您可以通过请求调整限额来提高此限制。有关更多信息,请参阅 弹性 IP 地址

  • 您可以选择分配给 NAT 网关的私有 IPv4 地址,也可以从子网的 IPv4 地址范围中自动分配。在删除私有 NAT 网关之前,所分配的私有 IPv4 地址将一直存在。您无法分离私有 IPv4 地址,也无法附上其他私有 IPv4 地址。

  • 不能为 NAT 网关关联安全组。您可以将安全组与实例相关联,以控制入站和出站流量。

  • 您可以使用网络 ACL 控制进出 NAT 网关所在子网的流量。NAT 网关使用端口 1024–65535。有关更多信息,请参阅 使用网络 ACL 控制指向子网的流量

  • NAT 网关会收到一个网络接口。您可以选择分配给接口的私有 IPv4 地址,也可以从子网的 IPv4 地址范围中自动分配。您可以在 Amazon EC2 控制台中查看 NAT 网关的网络接口。有关更多信息,请参阅查看有关网络接口的详细信息。此网络接口的属性不可修改。

  • 您无法通过 VPC 对等连接将流量路由到 NAT 网关。当流量通过混合连接(站点到站点 VPN 或 Direct Connect)通过虚拟专用网关到达时,您无法通过 NAT 网关路由流量。当流量通过混合连接(站点到站点 VPN 或 Direct Connect)通过传输网关到达时,您可以通过 NAT 网关路由流量。

  • NAT 网关支持最大传输单位 (MTU) 为 8500 的流量,但请务必注意以下几点:

    • 为了防止在使用公有 NAT 网关通过互联网与资源通信时可能发生的数据包丢失,您的 EC2 实例的 MTU 设置不应超过 1500 字节。有关在实例上检查和设置 MTU 的更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的 “在 Linux 实例上检查和设置 MTU”。

    • NAT 网关通过 FRAG_NEEDED ICMPv4 数据包和 Packet Too Big (PTB) ICMPv6 数据包支持路径 MTU 发现 (PMTUD)。

    • NAT 网关对所有数据包强制执行最大分段大小 (MSS) 限制。有关更多信息,请参阅 RFC879

控制 NAT 网关的使用

默认情况下, 用户无权使用 NAT 网关。您可以创建一个 IAM 角色,并向该角色附加一个向用户授予 NAT 网关创建、描述和删除权限的策略。有关更多信息,请参阅 适用于 Amazon VPC 的 Identity and Access Management

使用 NAT 网关

您可以使用 Amazon VPC 控制台创建和管理 NAT 网关。

创建 NAT 网关

请按照以下过程创建 NAT 网关。

相关限额
  • 如果您已耗尽分配给账户的 EIP 数量,则将无法创建公有 NAT 网关。有关 EIP 配额以及如何调整配额的更多信息,请参阅 弹性 IP 地址

  • 私有 NAT 网关最多可以分配 8 个私有 IPv4 地址。此限制不可调整。

  • 默认情况下,公有 NAT 网关只能关联 2 个弹性 IP 地址。您可以通过请求调整限额来提高此限制。有关更多信息,请参阅 弹性 IP 地址

创建 NAT 网关
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 NAT 网关

  3. 选择创建 NAT 网关

  4. (可选)指定 NAT 网关的名称。这将创建一个标签,其中键为 Name,值是您指定的名称。

  5. 选择要在其中创建 NAT 网关的子网。

  6. 对于连接类型,保持默认的公有选择不变,以创建公有 NAT 网关,或者选择私有,以创建私有 NAT 网关。有关公有和私有 NAT 网关之间差异的更多信息,请参阅 NAT 网关

  7. 如果您选择公有,请执行以下操作;否则,请跳至第 8 步:

    1. 选择弹性 IP 分配 ID,为 NAT 网关分配 EIP,或者选择分配弹性 IP,为公有 NAT 网关自动分配弹性 EIP。默认情况下,公有 NAT 网关只能关联 2 个弹性 IP 地址。您可以通过请求调整限额来提高此限制。有关更多信息,请参阅 弹性 IP 地址

      重要

      当您为公有 NAT 网关分配 EIP 时,EIP 的网络边界组必须与您启动公有 NAT 网关的可用区(AZ)的网络边界组相匹配。如果不匹配,NAT 网关将无法启动。可以通过查看子网的详细信息来了解子网可用区的网络边界组。同样,可以通过查看 EIP 地址的详细信息来了解 EIP 的网络边界组。有关网络边界组和 EIP 的更多信息,请参阅 分配弹性 IP 地址

    2. (可选)选择其他设置,然后在私有 IP 地址 – 可选下,为 NAT 网关输入私有 IPv4 地址。如果您不输入地址,则 AWS 会自动从 NAT 网关所在的子网中随机为您的 NAT 网关分配一个私有 IPv4 地址。

    3. 跳至步骤 11。

  8. 如果您选择私有,请选择其他设置,然后在私有 IP 地址分配方法下,选择下列选项中的一种:

    • 自动分配:为 NAT 网关 AWS 选择主私有 IPv4 地址。对于自动分配的私有 IPv4 地址数量,您可以选择指定 NAT 网关的辅助私有 IPv4 地址的数量。 AWS 从 NAT 网关的子网中随机选择这些 IP 地址。

    • 自定义:对于主私有 IPv4 地址,选择 NAT 网关的主私有 IPv4 地址。对于辅助私有 IPv4 地址,您可以选择为 NAT 网关指定最多 7 个辅助私有 IPv4 地址。

  9. 如果您在步骤 8 中选择了自定义,请跳过此步骤。如果您选择了自动分配,请在自动分配的私有 IP 地址数量下,选择要 AWS 分配给该私有 NAT 网关的辅助 IPv4 地址的数量。最多可以选择 7 个 IPv4 地址。

    注意

    辅助 IPv4 地址是可选的,如果使用 NAT 网关的工作负载与单个目标的并发连接超过 55000 个(相同的目标 IP、目标端口和协议),则应当分配辅助 IPv4 地址。辅助 IPv4 地址可以增加可用的端口数量,从而提高了工作负载使用 NAT 网关建立连接的并发连接数量限制。

  10. 如果您在步骤 9 中选择了自动分配,请跳过此步骤。如果您选择了自定义,请执行以下操作:

    1. 主要私有 IPv4 地址下,输入私有 IPv4 地址。

    2. 辅助私有 IPv4 地址下,输入辅助私有 IPv4 地址,不超过 7 个。

  11. (可选)若要向 NAT 网关添加标签,请选择 Add new tag(添加新标签),然后输入该标签的键和值。最多可以添加 50 个标签。

  12. 选择创建 NAT 网关

  13. NAT 网关的初始状态为 Pending。状态更改为 Available 后,NAT 网关即可供您使用。请务必按需新路由表。有关示例,请参阅NAT 网关使用案例

如果 NAT 网关的状态变成 Failed,则表示在创建过程中发生了错误。有关更多信息,请参阅 NAT 网关创建失败

编辑辅助 IP 地址关联

对于每个唯一目标,每个 IPv4 地址最多可以支持 55000 个并发连接。唯一目标由目标 IP 地址、目标端口和协议(TCP/UDP/ICMP)的唯一组合标识。您可以通过将最多 8 个 IPv4 地址(1 个主要 IPv4 地址和 7 个辅助 IPv4 地址)关联到 NAT 网关来提高此限制。默认情况下,公有 NAT 网关只能关联 2 个弹性 IP 地址。您可以通过请求调整限额来提高此限制。有关更多信息,请参阅 弹性 IP 地址

您可以使用 NAT 网关 CloudWatch指标ErrorPortAllocationPacketsDropCount来确定您的 NAT 网关是生成端口分配错误还是丢弃了数据包。要解决此问题,请将辅助 IPv4 地址添加到 NAT 网关。

注意事项
  • 您可以在创建私有 NAT 网关时或在使用本部分中的步骤创建 NAT 网关后添加辅助私有 IPv4 地址。只有在使用本部分中的步骤创建 NAT 网关后,才能将辅助 EIP 地址添加到公有 NAT 网关。

  • NAT 网关最多可以关联 8 个 IPv4 地址(1 个主要 IPv4 地址和 7 个辅助 IPv4 地址)。私有 NAT 网关最多可以分配 8 个私有 IPv4 地址。默认情况下,公有 NAT 网关只能关联 2 个弹性 IP 地址。您可以通过请求调整限额来提高此限制。有关更多信息,请参阅 弹性 IP 地址

编辑辅助 IPv4 地址关联
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 NAT 网关

  3. 选择要编辑其辅助 IPv4 地址关联的 NAT 网关。

  4. 选择操作,然后选择编辑辅助 IP 地址关联

  5. 如果要编辑私有 NAT 网关的辅助 IPv4 地址关联,请在操作下,选择分配新 IPv4 地址取消分配现有 IPv4 地址。如果要编辑公有 NAT 网关的辅助 IPv4 地址关联,请在操作下,选择关联新 IPv4 地址取消关联现有 IPv4 地址

  6. 请执行以下操作之一:

    • 如果您选择分配或关联新 IPv4 地址,请执行以下操作:

      1. 这个步骤为必填项。您必须选择一个私有 IPv4 地址。选择私有 IPv4 地址分配方法

        • 自动分配: AWS 自动选择一个主要私有 IPv4 地址,然后选择是否 AWS 要分配最多 7 个辅助私有 IPv4 地址分配给 NAT 网关。 AWS 自动从 NAT 网关所在的子网中为您随机选择和分配它们。

        • 自定义:选择要分配给 NAT 网关的主要私有 IPv4 地址和最多 7 个辅助私有 IPv4 地址。

      2. 弹性 IP 分配 ID 下,选择要添加为辅助 IPv4 地址的 EIP。这个步骤为必填项。您必须选择一个 EIP 以及一个私有 IPv4 地址。如果您为私有 IP 地址分配方法选择了自定义,则还必须为您添加的每个 EIP 输入一个私有 IPv4 地址。

        重要

        当您为公有 NAT 网关分配辅助 EIP 时,该 EIP 的网络边界组必须与公有 NAT 网关所在可用区(AZ)的网络边界组匹配。如果不匹配,EIP 将无法分配。可以通过查看子网的详细信息来了解子网可用区的网络边界组。同样,可以通过查看 EIP 地址的详细信息来了解 EIP 的网络边界组。有关网络边界组和 EIP 的更多信息,请参阅 分配弹性 IP 地址

      NAT 网关最多可以关联 8 个 IP 地址。如果这是公有 NAT 网关,则每个区域的 EIP 都有默认限额限制。有关更多信息,请参阅 弹性 IP 地址

    • 如果您选择取消分配或取消关联新 IPv4 地址,请完成以下操作:

      1. 要取消分配的现有辅助 IP 地址下,选择要取消分配的辅助 IP 地址。

      2. (可选)在连接耗尽持续时间下,输入连接仍在进行时强制释放 IP 地址之前的最长等待时间(以秒为单位)。如果不输入值,则默认值为 350 秒。

  7. 选择 ‬保存更改

如果 NAT 网关的状态变成 Failed,则表示在创建过程中发生了错误。有关更多信息,请参阅 NAT 网关创建失败

标记 NAT 网关

您可以对 NAT 网关进行标记,以帮助您识别它或根据组织的需要对其进行分类。有关使用标签的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的标记您的 Amazon EC2 资源

对于 NAT 网关支持成本分配标签。因此,您还可以使用标签来整理 AWS 账单并反映自己的成本结构。有关更多信息,请参阅 AWS Billing 用户指南中的使用成本分配标签。有关设置带标签的成本分配报告的更多信息,请参阅关于 AWS 账户账单中的每月成本分配报告

标记 NAT 网关
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 NAT Gateways(NAT 网关)。

  3. 选择要标记的 NAT 网关,然后选择操作。然后选择管理标签

  4. 选择添加新标签,并定义标签的。最多可以添加 50 个标签。

  5. 选择保存

删除 NAT 网关

您可以删除不再需要的 NAT 网关。删除 NAT 网关之后,其条目在一小时左右在 Amazon VPC 控制台中保持可见,在此之后自动删除。您无法自己删除此条目。

删除 NAT 网关会解除其弹性 IP 地址关联,但不会从您的账户释放该地址。如果删除 NAT 网关,则 NAT 网关路由会保留为 blackhole 状态,直到您删除或更新这些路由。

删除 NAT 网关
  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 NAT Gateways(NAT 网关)。

  3. 选择 NAT 网关对应的单选按钮,然后选择 Actions(操作)、Delete NAT gateway(删除 NAT 网关)。

  4. 提示进行确认时,输入 delete,然后选择 Delete(删除)。

  5. 如果您不再需要与公有 NAT 网关关联的弹性 IP 地址,建议您释放该地址。有关更多信息,请参阅 释放弹性 IP 地址

API 和 CLI 概述

您可以使用命令行或 API 执行此页面上介绍的任务。有关命令行界面的更多信息以及可用 API 操作的列表,请参阅 使用 Amazon VPC

将私有 IPv4 地址分配给私有 NAT 网关
将弹性 IP 地址(EIP)和私有 IPv4 地址与公有 NAT 网关相关联
创建 NAT 网关
删除 NAT 网关
描述 NAT 网关
将辅助弹性 IP 地址(EIP)与公有 NAT 网关取消关联
标记 NAT 网关
从私有 NAT 网关取消分配辅助 IPv4 地址

定价

当您预置 NAT 网关时,NAT 网关可用的每个小时及其处理的每个 GB 数据都需支付费用。有关更多信息,请参阅 Amazon VPC 定价

以下策略可帮助您降低 NAT 网关的数据传输费用:

  • 如果您的 AWS 资源跨可用区发送或接收大量流量,请确保这些资源与 NAT 网关位于同一个可用区。或者在与资源相同的每个可用区中创建一个 NAT 网关。

  • 如果通过 NAT 网关的大部分流量流向支持接口终端节点或网关终端节点的 AWS 服务,请考虑为这些服务创建接口终端节点或网关终端节点。有关潜在成本节约的更多信息,请参阅 AWS PrivateLink 定价