一:概念: 共有IP:也叫全局地址,是指合法IP地址,它是由NIT(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址. 私有IP地址:也就内部地址,属于非注册地址,专门为组织机构内部使用,因特网分配编写委员会,保留了3块IP地址做为私有IP地址: 10.0.0—-10.255.255.255 172.16.0.0—172.16.255.255 192.168.0.0—192.168.255.255 二:什么是NAT: NAT,又称”网络地址转换”,简单点说就是在局域网中使用内部地址,而当内部要与外部网络进行通讯时,就在网关(理解出出口)处,将内部地址替换成公用地址,从外在外部公网上正常使用,NAT可以使多台计算机共享internet连接,这一功能很好地解决了公共IP地址紧缺的问题.通常这种方法,可以只申请一个合法IP地址,就是把整个局域网中的计算机接入internet中.这时NAT屏蔽了计算机网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在. 我们画图来表示:
NAT功能通常被集成路由器,防火墙,ISDN路由器或者单独的NAT设备中. 三:分类 NAT有三种类型:静态NAT,动态地址NAT,网络地址端口转换NAPT. 1:静态NAT 通过手动设置,使internet客户进行的通信能够映射到某个特定的私有网络地址和端口,如果想让连接在Internet上的计算机能够使用某个西游网络上的服务器(如网站服务器)以及应用程序(如游戏),那么静态映射是必须的,静态映射不会从NAT转换表中删除. 如果在NAT转换表中存在某个映射,那么NAT只是单向第从internet向私有网络传送数据,这样,NAT就为链接私有网络部分的计算机提供了某种程度的保护,但是为了考虑internet的安全性,NAT就要配合全功能的防火墙一起使用. 2:动态NAT 所谓的动态NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT.,当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用 3:NAPT网络地址转换, 两种转换方式:SNAT,和DNAT (1):源NAT:修改数据包的源地址,源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是SNA的栗子 (2):目的NAT:修改数据包的目的地址,与SNAT相反,它是改变第一个数据包的目的地址.
四: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应用: 实现以下几个功能:数据包伪装,平衡负载,失效终结,端口转发和透明代理 1:数据伪装:可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全.同时,该功能也常用来共享上网. 2:端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。 3:负载平衡:目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器 4:失效终结:目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上,提高系统的可靠性。 5:透明代理:例如自己架设的服务器空间不足,需要将某些链接指向存在另外一台服务器的空间;或者某台计算机上没有安装IIS服务,但是却想让网友访问该台计算机上的内容,这个时候利用IIS的Web站点重定向即可轻松的帮助我们搞定。
六:NAT的缺陷: (1)不能处理嵌入式IP地址或端口 NAT设备不能翻译那些嵌入到应用数据部分的IP地址或端口信息,它只能翻译那种正常位于IP首部中的地址信息和位于TCP/UDP首部中的端口信息 (2)不能从公网访问内部网络服务 由于内网是私有IP,所以不能直接从公网访问内部网络服务,比如WEB服务,对于这个问题,我们可以采用建立静态映射的方法来解决. (3) 有一些应用程序虽然是用A端口发送数据的,但却要用B端口进行接收,不过NAT设备翻译时却不知道这一点,它仍然建立一条针对A端口的映射,结果对方响应的数据要传给B端口时,NAT设备却找不到相关映射条目而会丢弃数据包。