最近更新时间:2021-09-23
NAT(Network Address Translation,网络地址转换)是将IP数据报文头中的IP地址转换为另一个IP地址的过程。在实际应用中,NAT主要应用在连接两个网络的边缘设备上,用于实现允许内部网络用户访问外部公共网络以及允许外部公共网络访问部分内部网络资源(例如内部的弹性云主机、裸金属等)的目的。配置了NAT功能的连接内部网络(VPC)和外部网络的边缘网关,被称为NAT网关。
NAT可以让少量的公网网络IP地址代表较多的内部网络IP地址,这种地址转换能力具备以下优点:
当私有网络需要与外部网络通信或访问外部资源时,可通过将大量的私网地址转换成少量的公网地址来实现,这在一定程度上缓解了IPv4地址空间日益枯竭的压力,同时能大大节省购买弹性公网IP的费用。
通过静态映射,多个弹性云主机ECS可以映射到同一个公网地址。外部用户可通过公网地址和端口访问不同的内部ECS,同时还隐藏了ECS的真实IP地址(私网IP地址),从而防止外部对内部服务器乃至内部网络的攻击。
SNAT(Source Network Address Translation,源地址转换)是将私网IP地址转化为公网IP地址的技术,适用于云主机通过公网IP访问公网业务的场景。SNAT可以实现多个ECS共用一个弹性公网IP,从而节省您的费用。
SNAT的工作原理如下(如图1所示):
通过配置NAT网关和SNAT规则,指定一个EIP(100.1.1.1),以及需要转化的私网IP地址网段(10.0.1.0/24和10.0.2.0/24),从而生成一张NAT地址和端口的映射表。您无需指定端口号,NAT网关会识别报文中的端口并自动生成IP地址和端口的映射关系。
当IP地址为10.0.2.1的云主机通过端口2222访问公网服务器时,会将请求报文发送给NAT网关,报文中包含了云主机的源IP地址和端口号。
NAT网关收到报文后,会按照NAT映射表将报文的源IP地址和端口修改为NAT后的地址100.1.1.1和端口1002,目的IP地址不变。然后将报文发送给公网服务器。
公网服务器收到报文后,会将响应报文返回给NAT网关,目的地址和端口号为100.1.1.1:1002。
NAT网关收到响应报文后,解析出报文的目的IP地址和端口号,然后查询NAT映射表,将目的地址和端口号转化为云主机的私网IP地址和端口号10.0.2.1:2222,并发送给对应的内网云主机。这样便完成了内网云主机对公网服务器的访问。
图1 SNAT工作原理
DNAT(Destination Network Address Translation,目的地址转换)是将公网IP地址和端口号映射为私网IP地址和端口号的技术。
内网中的多台ECS可以通过同一个EIP地址向互联网中的主机和客户端提供访问服务,例如给外部网络提供Web服务,或是FTP服务。这种情况下,NAT网关允许公网用户通过指定的NAT地址和端口访问这些内部ECS服务器,并通过DNAT来定义NAT地址和端口与内网ECS服务器IP地址和端口的映射关系。
DNAT的工作原理如下(如图2所示):
通过配置NAT网关和DNAT规则,指定一个EIP(100.1.1.1),并指定需要对公网提供服务的ECS(私网地址分别为10.0.1.1和10.0.2.1),以及需要映射的公网端口号(分别为8080、23)和私网端口号(分别为8080、5099),从而生成一张NAT地址和端口的映射表。
当外部网络用户访问内部ECS服务器时,会将报文发送给NAT网关,报文的目的地址为NAT网关的EIP地址(100.1.1.1),端口分别为8080、23。
NAT接收到报文后,将报文的目的地址与DNAT映射表配置进行匹配,并将匹配上的访问内部服务器的请求报文的目的IP地址和端口号转换成内部服务器的私有IP地址和端口号。下图中,将目的地址为100.1.1.1:8080转换成10.0.1.1:8080,将100.1.1.1:23转化成10.0.2.1:5099。
当内部ECS服务器回应该报文时,NAT设备再根据已有的地址映射关系将回应报文的源IP地址和端口号转换成公网IP地址和端口号。
图2 DNAT工作原理