NAT技术及应用

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题。
(对于IP协议请看文章这里写链接内容
我们再来了解一个技术:NAT技术(网络地址转换)

什么是NAT

  1. NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。
  2. NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法。

简单点说,就是在局域网中使用内部地址,而当内部要与外网进行通讯时,需要经过网关,就在网关处,将内部地址替换成公用地址。
从外在外部公网上正常使用,NAT可以使多台计算机共享internet连接,这一功能很好地解决了公共IP地址紧缺的问题。
通常这种方法,可以只申请一个合法IP地址,就是把整个局域网中的计算机接入internet中。这时NAT屏蔽了计算机网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。
用以下图来表示:
这里写图片描述
NAT功能通常被集成路由器,防火墙,ISDN路由器或者单独的NAT设备中。

NAT的分类

1. 静态NAT
通过手动设置,使internet客户进行的通信能够映射到某个特定的私有网络地址和端口。
1、如果想让连接在Internet上的计算机能够使用某个网络上的服务器以及应用程序,那么静态映射是必须的,静态映射不会从NAT转换表中删除。
2、如果在NAT转换表中存在某个映射,那么NAT只是单向的从internet向私有网络传送数据。
3、这样,NAT就为链接私有网络部分的计算机提供了某种程度的保护,但是为了考虑internet的安全性,NAT就要配合全功能的防火墙一起使用。
2. 动态NAT
所谓的动态NAT只是转换IP地址,为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程连接也可以采用动态NAT。当远程用户连接上之后,动态地址NAT就会分配给它一个IP地址,用户断开时,这个IP地址就会被释放。
3. NAPT网络地址转换
两种转换方式:SNAT、DNAT
(1)、SNAT:修改数据包的源地址,源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成。
(2)、DNAT:修改数据包的目的地址,与SNAT相反,它是改变第一个数据包的目的地址。

NAPT的过程

如果说,NAT是IP的映射,那么NAPT就是端口的映射。
那么有什么作用呢?

按照NAT的思想,如果局域网内,有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的。
那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候NAPT就可以解决这个问题,使用IP+port来建立这个映射关系。
如下图:
这里写图片描述
这种关联关系也是由NAT路由器自动维护的。
例如在TCP的情况下, 建立连接时, 就会生成这个表项;
在断开连接后, 就会删除这个表项。

NAT原理

1、地址转换
NAT基本工作原理:
当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换
2、连接跟踪
NAT Gateway在收到响应包后,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以用静态NAT手工指定;但如果内网有多台客户机,并且各自访问不同网站,这时候就需要连接跟踪(connection track)。
3、端口转换
客户机访问服务器为例,当仅有一台客户机访问服务器时,NAT Gateway只须更改数据包的源IP或目的IP即可正常通讯。但是如果Client A和Client B同时访问Web Server,那么当NAT Gateway收到响应包的时候,就无法判断将数据包转发给哪台客户机。

NAT应用

数据伪装 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全
端口转发 当内网主机对外提供服务时,使用的内部私有IP地址,外网无法直接访问。故需要在网关上进行端口转发,将特定服务的数据包转发给内网主机
负载平衡 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器
失效终结 目的地址转换NAT可以用来提供高可靠性的服务。比如某系统有通过路由器访问的关键服务器,路由器检测到该服务器关机,便使用目的地址转换NAT透明的把连接转移到一个备份服务器上,提高系统的可靠性
透明代理 例如自己架设的服务器空间不足,需要将某些链接指向存在另外一台服务器的空间,或者某台计算机上没有安装IIS服务,但是却想让网友访问该台计算机上的内容,这个时候利用IIS的Web站点重定向即可轻松的帮助我们搞定。

NAT的缺陷

由于NAT依赖转换表, 所以有诸多限制:
(1)不能处理嵌入式IP地址或端口
NAT设备不能翻译那些嵌入到应用数据部分的IP地址或端口信息,它只能翻译那种正常位于IP首部中的地址信息和位于TCP/UDP首部中的端口信息
(2)不能从公网访问内部网络服务
由于内网是私有IP,所以不能直接从公网访问内部网络服务。
(3)有一些应用程序虽然是用A端口发送数据的,但却要用B端口进行接收,不过NAT设备翻译时却不知道这一点,它仍然建立一条针对A端口的映射,结果对方响应的数据要传给B端口时,NAT设备却找不到相关映射条目而会丢弃数据包。

NAT和代理服务器

路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子网设备和其他子网设备的通信过程。
代理服务器看起来和NAT设备有一点像,客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器;服务器返回结果后, 代理服务器又把结果回传给客户端。
那么NAT和代理服务器的区别有哪些呢?
(1)从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题。代理服务器则是更贴近具体应用,通过代理服务器进行翻墙,另外像迅游这样的加速器, 也是使用代理服务器。
(2)从底层实现上讲,NAT是工作在网络层, 直接对IP地址进行替换。 代理服务器往往工作在应用层。
(3)从使用范围上讲,NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网
(4) 从部署位置上看,NAT一般集成在防火墙, 路由器等硬件设备上,代理服务器则是一个软件程序, 需要部署在服务器上。
代理服务器是一种应用比较广的技术:
(1) 翻墙:广域网中的代理
(2) 负载均衡:局域网中的代理

猜你喜欢

转载自blog.csdn.net/baidu_37964071/article/details/80489989