概述
NAT 网关提供网络地址转换 (NAT) 服务。当公有云中的虚拟机实例或容器仅配置私有IP地址时,满足他们连接到 Internet 外部的需要,NAT负责将他们的私有IP地址转换为公有IP地址。 本文考察几个典型公有云的NAT服务架构。
AWS NAT Gateway
架构
上图是官方给出的架构图,其位置处于某个子网内,通过Router将私有子网-10.0.1.0/24的Internet流量指向NAT GW,这个指向通过为该子网配置路由表实现:
目的地 | 目标指向 |
---|---|
10.0.0.0/16 | local |
0.0.0.0/0 | nat-gw-id |
解析
从本人的观点来看,此NAT GW网关其实是一个实例,不能将其看作是一个网路设备。 联想到早期AWS的NAT转换是使用虚假实例让用户配置的方式,这个实例大概率是一个预配置的虚拟NAT实例。这个也就解释了NAT网关的限制
- 只能支持单作用私有子网
- 对于每个唯一目的地,NAT 网关最多可以支持 55000 个并发连接的限制。
- 在配置的时候,生成的NAT GW要放入某个公有子网内,作用是NAT转换和流量重定向(至Internet网关)
- 不支持DNAT
Azure 虚拟网络 NAT网关
架构
NAT 网关资源是虚拟网络 NAT 的一部分,为虚拟网络的一个或多个子网提供出站 Internet 连接。 虚拟网络的子网指明要使用的 NAT 网关。 NAT 为子网提供源网络地址转换 (SNAT)。 NAT 网关资源指定虚拟机在创建出站流时要使用的静态 IP 地址。 静态 IP 地址来自公共 IP 地址资源 (PIP) 和/或公共 IP 前缀资源。 如果使用公共 IP 前缀资源,则由 NAT 网关资源使用整个公共 IP 前缀资源的所有 IP 地址。 NAT 网关资源最多可以使用公共 IP 地址资源或公共 IP 前缀资源中的 16 个(总计)静态 IP 地址。
解析
Azure 的NAT网关可以看作是路由设备。由于可以设置多个出站IP地址,其NAT的连接数大为增加。
- 对于所分配的每个出站 IP 地址,每个 NAT 网关可支持 64,000 个分别用于 TCP 和 UDP 的流。
- 和AWS的NAT网关一样,不支持DNAT,对于入站的服务流量需要使用拥有公共IP的VM或公共负载均衡器
- 支持 IPv4 UDP 和 TCP 协议,不支持ICMP 协议。所以使用ping测试不会成功
- 可为多个私有子网提供NAT服务,但不能跨虚拟网络
GCP Cloud NAT
架构
官方文档Cloud NAT Cloud NAT 是一种软件定义的分布式代管式服务。它并非基于代理虚拟机或设备。从使用上看,和Cloud Router绑定(每个Cloud Router支持50个Nat网关)
Tips
- 每个 NAT IP 地址都提供 64512 个 TCP 来源端口和 64512 个 UDP 来源端口
- 最多每个网关支持50/300(手动/自动)个出站IP地址
- 支持DNAT
- 支持NAT规则,每网关50个
- 支持按需预留
- 出口吞吐量依赖于实例或容器,VM实例默认3Gbps最大7Gbps
按需预留
假设您要配置 Cloud NAT 网关,以便为子网的主要 IP 地址范围提供 NAT,而使用该子网的虚拟机没有该子网主要 IP 地址范围中的任何别名 IP 范围。将任意除法运算的结果向下舍入到最接近的整数。⌊⌋ 是 FLOOR(最大整数)函数,表示舍弃除法的任何小数结果。
如果使用手动分配方法为 Cloud NAT 网关配置单个 NAT IP 地址,并且将每个虚拟机实例的端口数下限设置为 64,则网关可为多达 1008 个虚拟机提供 NAT 服务:
⌊(1 个 NAT IP 地址)×(每个地址 64512 个端口)/(每个虚拟机 64 个端口)⌋ = 1008 个虚拟机
如果您需要支持超过 1008 个虚拟机,则可以为 Cloud NAT 网关分配第二个 NAT IP 地址。使用两个 NAT IP 地址,将每个虚拟机的端口数下限保持在 64,您可以支持 2016 个虚拟机:
⌊(2 个 NAT IP 地址)×(每个地址 64512 个端口)/(每个虚拟机 64 个端口)⌋ = 2016 个虚拟机
NAT规则
NAT 规则功能可让用户创建访问规则,用于定义 Cloud NAT 如何连接到互联网。NAT 规则支持基于目标地址的来源 NAT。
配置没有 NAT 规则的 NAT 网关时,使用 NAT 网关的虚拟机将使用同一组 NAT IP 地址访问所有互联网地址。 如以下示例
- 使用 NAT IP 地址 203.0.113.40 为 Subnet-1 创建一个名为 Cloud NAT Gateway 1 的网关,并添加以下规则: – Cloud NAT Gateway 1 中的 NAT 规则 1:当目的地为 198.51.100.20/30 时,使用来源 NAT 和 203.0.113.20。 – Cloud NAT Gateway 1 中的 NAT 规则 2:当目的地为 198.51.100.30 或 198.51.100.31 时,使用来源 NAT 与 203.0.113.30。
- 为该区域的其他子网创建一个名为 Cloud NAT Gateway 2 的网关,并将 NAT IP 地址分配为 203.0.113.10。此步骤不需要 NAT 规则。
阿里云NAT网关
官方文档NAT网关
架构
从架构图上看,可以把此gw当做网络边缘设备。
Tips
- 分为普通型和增强型公网NAT网关,对比
- 默认每网关支持20个出站IP地址,可申请调整配额
- 支持DNAT(增强型)
- VPC支持多网关,5个(增强型)
- 单个出站IP的最大并发数为55000
- SNAT条目的数量 40个,每个条目支持64个公网IP地址
- DNAT条目的数量 100个,每个条目支持64个公网IP地址
- 单网关最大带宽5Gbps
小结
- 从功能上看,GCP和阿里云比较全面,阿里云处于更新迭代中;
- 性能上看,GCP是最强的
- Azure的NAT网关不支持ICMP,需要特别注意
- AWS的NAT 网关是实例级别,需要放置在公网子网