企业云计算:原理、架构与实践指南
上QQ阅读APP看书,第一时间看更新

3.5 NAT网关

3.5.1 NAT网关技术原理

对于NAT(Network Address Translation,网络地址转换)这个术语大家应该都不陌生,这一神奇技术的诞生几乎已经让我们忘记了IPv4的地址空间已经耗尽的这个事实。2011年2月3日,互联网数字分配机构(the Internet Assigned Numbers Authority,IANA)将IPv4地址的最后5个地址块分配给了其下的5个地区委员会,至此IPv4地址已经耗尽。虽然IPv4地址最多包含43亿个地址,但是为了路由和管理方便,IPv4地址按照不同的前缀长度被划分成了A、B、C、D四类地址,以便分给不同规模的组织。这样的规划导致IPv4地址的消耗非常迅速,全球的网络专家都在寻找解决方案来减缓或者延迟IPv4地址的消耗。

在这样的大环境下,NAT技术应运而生,并给后来的网络发展,甚至于当下的网络发展带来了不可替代的、深远的影响。NAT技术针对IP报文头部中的地址信息进行转换。NAT网关通常部署在一个企业或组织的公网出口处,通过将内部IP地址转换为公网IP地址来使该企业或组织具备访问公网的能力。当报文离开企业或组织内部网络进入公网时,NAT网关将报文的源IP地址转换为公网IP地址(通常是NAT网关的接口地址),该请求包到达目的主机后,表现为该企业或组织的NAT网关对目的主机的访问,所以目的主机将响应包发送回NAT网关,NAT网关再将目的地址转换为内部IP地址,并发回内部网络,这样一次私网主机和公网主机之间的通信就完成了,如图3.8所示。

图3.8 NAT转换过程示意图

从上面的通信过程描述中可以总结出NAT网关的几个关键特点。

(1)网络被划分为私网和公网,企业或组织内部采用私网地址,NAT网关位于私网到公网的出口位置,进出流量都需要通过NAT网关。

(2)NAT网关在进出方向都需要做地址转换:出方向做源地址转换,进方向做目的地址转换。

(3)NAT网关对于通信双方来说是透明的,通信双方感知不到NAT网关的存在。

(4)NAT网关需要维护一张会话表,用于保存会话信息,完成双向转换的功能。

NAT有三种类型:静态NAT、动态NAT和NAPT(Network Address Port Translation,网络地址端口转换)。

静态NAT是最简单、最容易实现的一种NAT,私网中的每个主机都被映射成公网中的一个IP地址。当私网内的每一个主机都必须有一个固定的公网IP地址时,可以通过静态NAT的方式实现,但是静态NAT的方式对于节省IPv4没有任何作用。

动态NAT是在公网中申请了一组IP地址(地址池),采用动态分配的方式映射到私网中的主机。当私网中有一台主机需要访问公网时,NAT网关从公网IP地址池中选择一个可用的地址分配给该主机使用,当通信完成或者通信超时后,该公网IP地址被释放回地址池。

不管是静态NAT还是动态NAT,都是实现私网IP地址和公网IP地址之间的转换,也就意味着私网中同时和公网进行通信的主机数量受到NAT网关中公网IP地址数量的限制。为了克服这种限制,就需要使用NAPT。NAPT将IP地址转换扩展到端口的转换,把私网地址和端口映射到公网地址和端口,多个私网地址可以映射到同一个公网地址的不同端口,也就是进行“私网地址+私网地址端口”与“公网地址+公网地址端口”之间的转换,使得多台私网主机可以利用同一个公网IP地址和公网进行通信。

也就是说,静态NAT和动态NAT都是一对一的NAT转换,而NAPT则是一对多的NAT转换。在实际应用场景中,静态NAT和NAPT被广泛应用,静态NAT用于满足一些特殊的网络架构需求,NAPT用于满足节约上网费用、简易防火墙等需求。

3.5.2 NAT网关应用场景

通过3.5.1节的简单介绍,NAT网关的功能和概念已经比较清晰了。鉴于云上的客户一样有IPv4地址消耗的问题和确保私网地址安全性的需求,所以云上也提供了NAT网关产品。目前,云上NAT网关支持以下几种公网访问模式。

(1)SNAT(源地址转换):仅提供私网云主机主动访问公网的能力,即只能由云主机实例主动发起公网访问的请求后,公网的服务器才能回复该请求,而不具有面向公网提供服务的能力。

(2)DNAT(目的地址转换)的IP地址映射:可以同时提供主动访问公网的能力和被动访问公网的能力,既可以由云主机实例主动发起公网访问的请求,也可以由公网客户端主动发起访问请求,但是该方式无法满足节约公网IP地址的需求。

(3)DNAT的端口映射:仅提供被动访问公网的能力,即只能由公网的客户端主动发起访问请求后,云主机实例才能访问公网并回复该请求,不具备主动发起公网访问的能力。

下面介绍NAT网关的主要应用场景。

(1)企业或组织内的多台主机共享公网IP地址访问互联网。

内部网络往往存在一些服务器需要访问公网的情况,包括软件升级、网页浏览等,出于节约成本的考虑,需要多台服务器共享一个公网IP地址,可以使用NAT网关的SNAT功能来实现。

(2)企业或组织对私网提供简单的安全防护功能。

通过NAT网关的SNAT功能可以实现私网的安全防护功能。建立NAT网关可以针对公网服务器的访问请求进行控制,相当于把私网服务器隐藏到NAT网关后面,不会被黑客扫描到,也不会轻易地被黑客攻击。公网服务器不能主动对私网服务器发起访问请求,只有接收到私网服务器发送的访问请求的公网服务器才能和私网服务器进行通信,而且需要匹配通信的五元组信息。

(3)搭建简单的网站或App服务。

NAT网关的DNAT功能可以实现1~2台服务器对公网提供网页服务或App服务。当服务器只需要占用少量的固定端口用于提供服务时,可以使用NAT网关的DNAT端口映射功能来实现,最大限度地利用单个公网IP地址;当服务需要的端口不固定或者需要大量的端口时,可以使用NAT网关的DNATIP地址映射功能来实现,该功能其实就是静态NAT功能,实现私网地址和公网地址的一对一映射。

3.5.3 平安云的NAT网关

平安云的NAT网关产品是基于自主研发的PAGW网关系统来实现的。PAGW网关系统具有高可靠性、可扩展性、高性能等特点,是平安云自主研发的集群式网关系统,也是平安云网络产品的核心组件,基于该系统已逐步支持了多种网络产品的功能。

平安云NAT网关的架构图如图3.9所示。平安云NAT网关由以下几部分组成。

图3.9 NAT网关的架构图

(1)NAT网关实例:一个运行的NAT网关服务,为所属的VPC内的云主机提供NAT服务,需要配合NAT规则和带宽包才能实现访问互联网的业务。

(2)NAT规则:用户定义的SNAT规则和DNAT IP映射及端口映射规则。客户根据业务场景的不同,可以进行各种NAT规则的单独使用和组合使用。

(3)带宽包和公网IP:带宽包是用户购买的公网带宽资源,可以指明共享该资源的公网IP数目。

平安云NAT网关提供SNAT、DNAT和带宽包功能。

(1)SNAT功能为VPC内的云主机实例提供访问互联网的能力,避免私网的后端服务器暴露于公网,只有主动和外部服务器建立连接的后端服务器才可以被外部服务器访问。SNAT的场景图如图3.10所示。

图3.10 SNAT的场景图

(2)DNAT功能将NAT网关中申请的公网IP地址映射给云主机实例使用,使云主机实例能够提供互联网服务或者能够访问互联网。DNAT支持IP映射和端口映射两种模式。图3.11为DNATIP映射的场景图。

图3.11 DNAT IP映射的场景图

(3)带宽包功能能够实现带宽的共享和复用。当前每个带宽包最多支持5个公网IP。