查看: 3113|回复: 2

NAT学习的基本资料

[复制链接]
发表于 2007-8-16 17:26:26 | 显示全部楼层 |阅读模式
NAT基本概念:
网络地址翻译(NAT)是一种允许一个组织的IP网络从外部看上去使用很少的全局(所谓公有就是在共网中被承认的地址,即公网路由器有路由指向的地址空间)IP地址空间而不是它实际使用(设置在路由器接口或主机的地址,也叫局部地址)的地址空间的特性。这样,路由器通过将这些局部地址转换到全局可路由的地址空间。NAT允许一个具有非全局可路由地址的组织连接到Internet。NAT也允许一个更好的重编码策略。

使用NAT的优点:
允许企业内部网使用私有地址,并通过设置合法地址集使内部网可以与Internet进行通信,从而可以达到节省合法注册地址的目的;
    NAT也可以减少地址交叠情况的产生。如果地址方案最初是在一个私有网络中建立的,因为它不与外部网络通信,所以有可能使用了保留地址以外的地址,而后来该网络又想要连接到公网上。在这种情况下,如果不做地址转换,就会产生地址冲突。
    NAT增强了内部网络与公用网络连接的灵活性。它可以通过使用多地址集、备份地址集和负载分担、均衡地址集来确保可靠的公网连接。对于网络设计者来说,内部网络的设计也会变得比较容易,因为做地址规划时可以有更大的灵活性。
    将私有网络转化成公网一般需要对原网络重新设置地址,所需的工作量与所需要设置新地址的主机数有关。如果使用NAT技术就可以不对原私有网络内部的地址进行改动,同时还可以对外部网络支持新的公用网络地址方案。

使用NAT的缺点
NAT会使时延增大。因为要转换每个数据包包头中的IP地址,自然就会增加包转发时延。又因为现在应用NAT技术时路由器只能用处理器交换方式进行包转发,所以运行性能也是要考虑的一个方面。CPU必须查看每一个数据包以决定它是否进行地址转换,然后改变IP包头、甚至TCP头,这一过程不太可能被轻易地高速缓存。
  使用和实施NAT很不利的一点是无法实现对IP端到端的路径跟踪。在经过了使用NAT地址转换的多跳之后,对数据包的路径跟踪将变得十分困难。然而,这样却可以提供更安全的网络链路,因为黑客想要跟踪或获得数据包的初始来源或目的地址也将变得非常困难,甚至无法获得。
    NAT也可能会使某些要使用内嵌IP地址的应用不能正常工作,因为它隐藏了端到端的IP地址。某些直接使用IP地址而不通过合法域名进行寻址的应用可能也无法与外部网络资源通信,这个问题有时候可以通过实施静态NAT映射来避免。

NAT的应用方式:
M-1  : 内部网多个地址翻译到一个IP地址。
1-1   : 简单的一对一地址翻译。
M-N : 内部网多个地址翻译到地址池中的多个IP地址。

公有地址和私有地址
    私有地址是指内部网络(局域网内部)的主机地址,而公有地址是局域网的外部地址(在因特网上的全球唯一的IP地址)。因特网地址分配组织规定以下的三个网络地址保留用做私有地址:
    10.0.0.0      -   10.255.255.255
    172.16.0.0    -   172.31.255.255  
    192.168.0.0   -   192.168.255.255

NAT术语
  内部局部地址(inside local):在内部网络上一个主机被管理员自行指定的IP地址。这个地址不是网络信息中心(NIC)或服务提供商所分配的合法IP地址,如果与外部网络通信需要进行地址转换。
  内部全局地址(inside global):一个合法的可被公网路由器路由的IP地址(由NIC或服务供应商分配),向外部网络描述一个或多个本地IP地址。
  外部局部地址(outside local):被内部网络主机看到的一个外部主机的IP地址。它不一定是合法地址,可以在内部网络中从可路由的地址空间进行分配,只要内部网络可以对这个地址空间进行路由。
  外部全局地址(outside global):分配给外部网络主机的可被公网路由器路由的IP地址。该地址可以从全局可路由地址或网络空间进行分配。
  访问列表指定了翻译对象的集合。是对翻译对象的限制。只有符合访问列表的对象才能被翻译。如果是内部源地址翻译,则指明可以上网的内部地址集合。如果是内部目的地址翻译,则指明了可提供服务的内部主机集合的外部可见地址。
  地址池是由一些外部地址(全球唯一的IP地址)组合而成的,我们称这样的一个地址集合为地址池。在内部网络的数据包通过地址转换达到外部网络时,将会选择地址池中的某个地址作为转换后的源地址,这样可以有效利用用户的外部地址,提高内部网络访问外部网络的能力。
  生存时间(TTL),每一个NAT的连接都记录着一个生存时间TTL,用于维护连接的有效性。TTL在连接建立时被赋初值,有相关报文流经时被复位,计时器到时被递减。当TTL减到0时,连接将被删除。

NAT原理及规则:
  静态翻译指定了翻译的确切对象和目标,翻译前与翻译后的IP地址是指定了的单一IP地址,或按照某一简单法则建立的一一对应关系 。具体的可以分为3种:
【静态单个地址翻译规则】仅仅要求翻译IP报文中与地址有关的部分,如源/目的地址、TCP/UDP校验和、部分协议内容(FTP、DNS);
【静态网段地址翻译规则】可以看作是有限多个静态单个地址翻译规则的集合,这些地址属于同一个网段,并且连续。故用网段的方法表示更加简洁。
【静态TCP/UDP翻译规则】在指定地址翻译的同时,指定的TCP/UDP的端口号(将一个端口映射为另一个端口)。
  动态翻译具有某些不确定性:如基于PAT翻译的TCP/UDP的端口具有不确定性,基于地址池的可能随机选择地址池中的某一IP地址。常见选择方式如下:
当公网地址足够多时,可采用地址池的翻译方式。
当公网地址足够少(如1个),则采用基于接口的翻译方式。

静态翻译和动态翻译的区别:
对于静态翻译规则,翻译的对象与目标是固定的,故连接的方向是可以不受限制。一旦把这个规则配置了,那么就会产生一条固定nat的转换条目,并且一直有效。没有什么触发方向,既支持内部到外部的连接,也支持外部到内部的连接。
对于动态翻译来说,配置了规则之后,并不马上生成nat转换条目。直到有符合转换规则的数据包来触发路由器的nat操作后,才会生成一条nat转换条目,该条目有一定的生存时间,过了生存时间后,该条目会被清除掉。翻译时的对象与目标具有不确定性,不正确的方向可能导致无法正确选择翻译目标。

NAT处理流程
1.即时报文处理。
位于IP模块的底层,处理的对象是完整的IP报文,由IP模块调用。
当从接口收到一个完整的IP报文,并且该接口允许NAT时,NAT模块被调用。
当一个完整的IP报文准备从接口发送出去,并且该接口允许NAT时,NAT模块被调用。
处理的步骤如下:
【预检查】
发送报文时,检查包是否从外部网发送至内部网,或从内部网发送至外部网。
否则退出NAT处理流程,直接返回。
【NAT规则模式查找,匹配】
首先是根据静态规则表(优先级高),
其次是动态规则表。
【NAT连接的查找,匹配】
对于动态规则:NAT的连接是动态维护的。
如果连接不存在,则加入。
【规则有效性/超时检查】
规则的有效性的维护分多个方面:
超时检查:由定时时钟定时检查,
收到FIN,RST的相关处理,NAT连接的删除
端口状态的动态监测:如拨号端口掉线,端口协议Down,interface shutdown等
【按规则要求进行翻译】
静态规则:地址翻译
动态规则:地址翻译;TCP/UDP端口翻译.
【调整校验和】
IP报头的校验和、ICMP报文的校验和、TCP/UDP报文的校验和。
2.定时对连接进行有效性检查
这一部分在NAT的主任务中实现,通过一个定时器,定时进行检查。
对于超时的连接,如果它没有子连接下属将予以删除。
3.触发事件处理
这一部分在NAT的主任务中实现,由意外事件源发送消息,触发完成。
这类消息包括:端口协议失效,拨号端口掉线,端口被人为禁止(shutdown),IP地址变化,及NAT规则的改变。
根据具体事件作相关处理:
NAT Link的拆除,
TCP/UDP链的拆除。
回复

使用道具 举报

发表于 2007-8-20 18:13:02 | 显示全部楼层
好东西啊,收藏了,非常感谢
回复

使用道具 举报

发表于 2007-8-21 00:46:18 | 显示全部楼层
u谢谢,加汕
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表