NAT网络地址转换技术

NAT技术服务器需要两块网卡,在OSI七层模型中,工作在下三层,网络、传输、数据传输

简介:NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题

NAT有三种类型

  • 静态 NAT(Static NAT)
  • 动态地址 NAT(Pooled NAT)
  • 网络地址端口转换 NAPT(Port-Level NAT)

其中,网络地址端口转换NAPT(Network Address Port Translation)则是把内部地址映射到外部网络的一个IP地址的不同端口上。
它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。

NAPT是使用最普遍的一种转换方式,在HomeGW中也主要使用该方式。它又包含两种转换方式:SNAT和DNAT

(1)源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。

(2)目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT。

NAT
我们在没有理解NAT原理前当然理解不了上面所说的功能,我们先看下NAT的原理。

原理:地址转换

NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。

如下图所示,NAT网关有2个网络端口,其中公共网络端口的IP地址是统一分配的公共 IP,为202.20.65.5;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机202.20.65.4发送了1个IP包(Dst=202.20.65.4,Src=192.168.1.2)。

网络连接图

当IP包经过NAT网关时,NAT Gateway会将IP包的源IP转换为NAT Gateway的公共IP并转发到公共网,此时IP包(Dst=202.20.65.4,Src=202.20.65.5)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT Gateway的公共IP,Web Server发出的响应IP包(Dst= 202.20.65.5,Src=202.20.65.4)将被发送到NAT Gateway。

这时,NAT Gateway会将IP包的目的IP转换成私有网中主机的IP,然后将IP包(Des=192.168.1.2,Src=202.20.65.4)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。转换示意图如下。

gateway
如果内网主机发出的请求包未经过NAT,那么当Web Server收到请求包,回复的响应包中的目的地址就是私网IP地址,在Internet上无法正确送达,导致连接失败。

连接跟踪

在上述过程中,NAT Gateway在收到响应包后,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以用静态NAT手工指定;但如果内网有多台客户机,并且各自访问不同网站,这时候就需要连接跟踪(connection track)。如下图所示:
connection track

在NAT Gateway收到客户机发来的请求包后,做源地址转换,并且将该连接记录保存下来,当NAT Gateway收到服务器来的响应包后,查找Track Table,确定转发目标,做目的地址转换,转发给客户机。

端口转换

以上述客户机访问服务器为例,当仅有一台客户机访问服务器时,NAT Gateway只须更改数据包的源IP或目的IP即可正常通讯。但是如果Client A和Client B同时访问Web Server,那么当NAT Gateway收到响应包的时候,就无法判断将数据包转发给哪台客户机,如下图所示。

connection track

此时,NAT Gateway会在Connection Track中加入端口信息加以区分。如果两客户机访问同一服务器的源端口不同,那么在Track Table里加入端口信息即可区分,如果源端口正好相同,那么在执行SNAT和DNAT的同时对源端口也要做相应的转换,如下图所示。(这里的理解灰常重要)

Track Table

现在就可以理解NAT协议的应用了吧。

3.NAT协议的应用

NAT主要可以实现以下几个功能:数据包伪装平衡负载端口转发透明代理

数据伪装: 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。

端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。

负载平衡: 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。

失效终结: 目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。

透明代理: NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。

代理服务器技术

代理:就是别人帮你跑一趟,例如买火车表,你去火车售票点去买车票。不需要配置网关、因为不是走NAT技术

代理服务器技术和NAT技术的最大区别是中间没有开启路由管道,代理服务器是工作在应用层。

优点:就是做到内外网完全分离。

防火墙分为两类:网络层 和应用层 。

网络层:iptabls ,路由器ACL列表。

应用层:能做访问控制,只能下MP3,下载小说等。

简易图

squid缓存代理

通过缓存的方式为用户提供Web访问加速,对用户的Web访问进行 过滤控制。

他把目标网站的静态文件,下载到自己的电脑上(squid),当用户访问代理服务器,如果有缓存数据文件(没过期)直接给用户,然后在去目标网站上获取动态数据(如果静态文件过期,在重新拉取静态文件)。一起给用户。这么做的好处是,减少网络带宽。

代理服务分,普通代理、透明代理、反向代理服务。开启前之前一定是开启缓存的。

普通代理服务

及标准的、传统的代理服务、需要客户几在浏览器中指定代理服务器的地址、端口。是公司内部访问外部。

缺点:公司员工,不会设置、IP和端口不懂,或者他经常动。

透明代理服务

使用于企业的网关主机、客户机不需要指定代理服务器地址、端口等信息、通过iptables将客户机的Web访问书记转交给代理服务程序处理

解决员工不会设置的问题、把网关设置代理服务器哪里、电脑为自动获取IP

反向代理服务器

是让外部的用户访问公司的内部的服务器。

Last modification:January 5, 2020
如果觉得我的文章对你有用,请随意赞赏