李金辉/弹性网络
关键词:NAT网关;EIP;SNAT;DNAT
简介
云技术以分布式技术和虚拟化技术为核心,形成了云计算、云网络、云存储三大类产品及解决方案,并以IASS,PASS,SASS三种服务模式开放于用户。共中,云网络为用户提供包括NAT、专线、VPN、SDWAN、ACL、安全组等多种服务。这些服务除了与传统网络具备相同的网络特性外,同时具备云技术的特性,即以分布式和虚拟化展开而来的集群化、微服务化、SDN化等云技术特性。
NAT(Network Address Translation,网络地址转换协议) 为云网络的基础技术之一,为云内服务提供多样化的网络访问能力,如SNAT访问公网、面向公网提供服务、云间NAT网关高速访问互联网等。本文聚焦云内NAT应用场景,重点介绍NAT在云网络中使用到的几种主要技术,以及未来NAT技术可能的发展趋势。
主要NAT技术
NAT诞生早期主要用于私网和公网之间的地址转换,通过IP或Port复用的方式,使私网具备访问公网的能力;由于共享了IP资源,减缓了全球IP资源不足的问题。随着网络技术的发展,NAT技术也随之变化,如:共享IP的同时共享网络带宽;路由模式下的防火墙。
传统NAT实现方式主要有三种:
- 静态NAT
静态NAT实现私有IP转换为公有IP,两者为1:1关系。
- 动态NAT
动态NAT实现多个私有IP转换为多个公有IP,两者为M:N关系(M>N)。
- 端口复用PAT
端口复用PAT实现多个私有IP:Port1转换为一个公有IP:Port2,两者为M:1关系。
云内NAT主要用到静态NAT和端口复用PAT,并在此两类NAT的基础上形成四类NAT产品或功能:EIP、SNAT(Subnet NAT)、DNAT(Port Mapping)、NAT Hairpin。
EIP
弹性IP(Elastic IP,CT-EIP)本质是静态NAT,是基于互联网上的静态公网IP地址,将弹性IP地址和子网中关联的弹性云主机绑定和解绑,可以实现VPC中的弹性云主机通过固定的公网IP地址与互联网互通。同时,弹性IP可绑定到裸金属服务器、虚拟IP、弹性负载均衡、NAT网关。
如上图所示,EIP为某个云内设备专有的独享公网IP,具有唯一性和静态性。唯一性表示此IP不可被其它设备得到,静态性表示此IP分配给设备后不会发生变化。
EIP服务由NAT网关提供,对于出行流量,NAT网关作源地址转换,即将源内网IP替换为EIP;对于入行流量,NAT网关作目地地址转换,即将目地EIP替换为内网IP。而对于设备内网IP和EIP的映射关系,则用NAT网关维护,并受控制平面统一管理。
对于绑定EIP的设备,相当于暴露了1~65535的服务端口,首次入行和出行流量在NAT网关侧自由转换,面临着互联网安全风险,可部署子网ACL、安全组、云墙提升安全强度。
SNAT(Subnet NAT)
当众多云内设备需要访问公网时,为了节省EIP资源并且避免云内设备IP直接暴露在公网上,可以使用NAT网关的子网NAT功能,即SNAT(Subnet NAT)。SNAT通过将VPC中一个子网与一个EIP相关联,属于此子网的所有云内设备共享此EIP,并同时具备访问公网的能力。
如上图所示,EIP被一个子网内所有的云设备共享,通过端口多路复用(PAT)技术实现。由于EIP不在唯一关联一台云设备,所以无法通过EIP映射云设备,但是通过Port或者说五元组与访问连接相关联的方式,可直接映射到某个服务,这种方式几乎提供了与EIP相同的互联网访问能力。
SNAT仅允许内网向外网主动发起访问,对于出行流量,NAT网关将作源地址转换,同时当源Port被其它流使用时,将作源Port的转换。首包转换后,将在NAT网关维持一条转换记录,后续包将直接使用此转换记录,包括入行流量。
由于SNAT入行流量必须查找转换记录才能放行,一定程度上保护了子网的安全,但在暴力撞转换记录的面前仍然显得较为弱小。
DNAT(Port Mapping)
当VPC内的云设备需要面向公网提供服务时,可以使用NAT网关的DNAT功能。服务开放通常以端口的形式体现,如知名的80、443、8080、21、22等服务端口,一个端口就可以代表一个服务。在这种条件下,云设备只需要申请一个Port即可,而不需要申请整个EIP,此时,此EIP被所有Port申请者共享。
DNAT本质是静态NAT,在NAT网关侧维护了内部IP/Port与公网IP/Port的映射关系,当入行流量到达时,NAT网关将直接将目地IP和目地Port转换为内网IP和内网Port,转换效率与EIP相当。
在DNAT模型下,服务器被动接受来访者的流量访问,服务仍然直接暴露在互联网之中,易受不法设备的攻击,从而影响到正常的服务请求,可部署云墙类产品提升安全强度。
NAT Hairpin
当所属NAT网关相同的两个云设备基于EIP通信时,需要NAT网关支持Hairpin功能。在云网络时代,微服务和集群化成为了服务器架构的首选架构,在这种架构模式下,基于URL的通信方式成为主流,故而DNS服务被重视起来。DNS是网络域名解析系统,用于将域名转译为IP地址,而IP地址可以是私网地址或公网地址。架设在云内的服务需要支持上述EIP或DNAT服务才可以对外提供服务能力,同时需要对本端云主机开放相同的服务能力时,需要NAT支持Hairpin功能。
如上图所示,云内Client访问相同NAT网关下的Server,NAT网关将同时对这类访问报文进行SNAT和DNAT转换。转换的报文可以在NAT网关内完成回环,或者在NAT网关外回环,但都需要NAT网关做两次转译。
当然上述场景可以通过在内外网架设不同的DNS服务器实现规避,即外网DNS解析到的为公网地址,内部DNS解析到的为内部地址,但却不适用于VPC之间的互访(VPC之间通信仍然需要NAT Hairpin,创建对等连接的除外)。
NAT技术趋势
NAT是云网技术的一部分,云网诞生于云计算,故而继承了其虚拟化和分布式的特性,后续云网也必然相生相随于云计算,从当前已实施或已提到的云计算概念来看,NAT技术呈如下发展趋势。
冷热分离
程序数据存在两种类型:冷数据和热数据。冷数据为程序一段时间未使用或较少使用或只读数据;热数据为程度频繁使用或较多更新的数据。由于冷热数据属性的不同,必然导致程序处理的差异,直接导致程序架构的复杂性。在实现中,在冷热数据进行分离,同时将冷热数据的处理进行分离,将极大简化程度设计的同时提升数据处理的可靠性和安全性。
NAT主要的数据有以EIP和DNAT为主的静态规则,也有以SNAT为主的动态规则。前者由于不产生数据可以归属于冷数据;后者将生成NAT Session转换规则属于热数据,两者可将NAT划分为SNAT网关和EIP网关(含DNAT):静态NAT规则走EIP网关,动态NAT规则走SNAT网关,可能组网如下:
软硬融合
随者网络技术的发展,世界进入万物互联世代。应用对网络高带宽的需求日益突出,也同时加速了网络技术的发展。在云网络领域,数据穿梭于云内设备和外部网络之间,承载着数以千计的云主机和云服务器的集中通信,为数据传输的高热度区域。
对于云内网元而言,挑战来自于带宽日益增加的需求,如处理100G~200G甚至更高的网络数据。这样的条件下,一些新兴软件技术得以应用,如netmap、DPDK UIO、VPP等;硬件加速技术也同样得到应用,如SmartNIC(FPAG)、SmartNIC(DPU)、P4等。软件技术优势在于升级灵活且功能丰富,扩展方便,劣势在于受限于软件架构及处理器,复杂业务下较难达到线速;硬件技术没有软件方面的限制,但劣势在于资源有限,成本较高。故而软件硬件的有效结合,才能有效发挥软件和硬件的长处,减缓或解决网络带宽不足的问题。
如上图所示,一种可能优化解是将EIP规则置于硬件侧,SNAT规则置于CPU侧。EIP的处理对CPU的需求较多:属于查找替换型,表项需求较少(规则表),益放置在硬件侧;SNAT的处理对CPU和内存要求都高,属于求解型,表项较多(流表)且变化较大,益放置在软件侧。
集群与堆叠
一种增加性能的思路是增加资源的投入,如升级网卡带宽、增加内存容量、增加CPU数量等,但同时也会增加成本,升级周期长,投入产出比非线性相关。集群和堆叠技术是一种提升性能的好方法,两者通过不同的实现技术将若干网元进行累加,形成逻辑上的“超级网元”的方式提升性能。
集群是一种横向扩容技术,适用于无状态类事务。加入集群的网元形成若干功能相同的对等网元,流量可经任何一个网元进行处理。如下图所示,EIP类NAT网元由于无状态特性可形成集群,各个网元平行转发且互不干扰。
由于集群成员在网络中可视,需要相邻网元对流量作出选择。由于集群具备对等特性,可选择任一网元作为路径中的下一跳,但需要确保负载匀衡。理想集群性能可以达到和成员数量正相关。
堆叠是一种纵向扩容技术,适用于有状态类事务。加入堆叠的网元协作完成相同的功能,流量可经某个网元进行进入后可能传递给其它成员才能完成处理。如下图所示,SNAT类NAT网元由于有状态特性可组成堆叠,各个网元平行但不独立。
如上图所示,堆叠模式下,成员SNAT网关通过内部堆叠协议协商为协同对等体,与集群相同,流量可经任何一个成员进入堆叠网关,但由堆叠算法将流量送至正确的成员。工作方式类同于多核模式下的SNAT网关,核间独立而自成一体。
总结
云内NAT应用除上述主要四种场景外,还包括NAT46,NAT64等,随着云内业务的扩展,可能诞生新的场景,但都离不开NAT的本质,即地址转换。无非是不同场景具备不同的转换方式和转换条件而已,NAT技术原理并未发生变化,但一些新兴互联网技术的引入,一定程度上颠覆了NAT的实现方式。