公有云NAT 网关比较
概述NAT 网关提供网络地址转换 (NAT) 服务。当公有云中的虚拟机实例或容器仅配置私有IP地址时,满足他们连接到 Internet 外部的需要,NAT负责将他们的私有IP地址转换为公有IP地址。本文考察几个典型公有云的NAT服务架构。AWS NAT Gateway架构上图是官方给出的架构图,其位置处于某个子网内,通过Router将私有子网-10.0.1.0/24的Internet流量指向NAT
概述
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 |
Tips
从本人的观点来看,此NAT GW网关其实是一个实例,不能将其看作是一个网路设备。
联想到早期AWS的NAT转换是使用虚假实例让用户配置的方式,这个实例大概率是一个预配置的虚拟NAT实例。这个也就解释了NAT网关的限制
- 只能支持单作用私有子网
- 对于每个唯一目的地,NAT 网关最多可以支持 55000 个并发连接的限制。
- 在配置的时候,生成的NAT GW要放入某个公有子网内,作用是NAT转换和流量重定向(至Internet网关)
- 不支持DNAT
- 支持 5 Gbps 带宽并会自动扩展到 45 Gbps
Azure 虚拟网络 NAT网关
架构
官方文档虚拟网络 NAT 文档
NAT 网关资源是虚拟网络 NAT 的一部分,为虚拟网络的一个或多个子网提供出站 Internet 连接。 虚拟网络的子网指明要使用的 NAT 网关。
NAT 为子网提供源网络地址转换 (SNAT)。 NAT 网关资源指定虚拟机在创建出站流时要使用的静态 IP 地址。 静态 IP 地址来自公共 IP 地址资源 (PIP) 和/或公共 IP 前缀资源。
如果使用公共 IP 前缀资源,则由 NAT 网关资源使用整个公共 IP 前缀资源的所有 IP 地址。 NAT 网关资源最多可以使用公共 IP 地址资源或公共 IP 前缀资源中的 16 个(总计)静态 IP 地址。
Tips
Azure 的NAT网关可以看作是路由设备。由于可以设置多个出站IP地址,其NAT的连接数大为增加。
- 对于所分配的每个出站 IP 地址,每个 NAT 网关可支持 64,000 个分别用于 TCP 和 UDP 的流。
- 和AWS的NAT网关一样,不支持DNAT,对于入站的服务流量需要使用拥有公共IP的VM或公共负载均衡器
- 支持 IPv4 UDP 和 TCP 协议,不支持ICMP 协议。所以使用ping测试不会成功
- 可为多个私有子网提供NAT服务,但不能跨虚拟网络
- 每个 NAT 网关资源最多可提供 50 Gbps 的吞吐量。
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 网关是实例级别,需要放置在公网子网
更多推荐
所有评论(0)