找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
.COM/.NET/.ORG 国际域名注册全功能虚拟主机/免备案虚拟主机
查看: 1579|回复: 2

NAT的原理及其注意事项

[复制链接]

77

主题

201

回帖

3791

积分

论坛元老

积分
3791
发表于 2003-8-24 01:31:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
NAT的原理及其注意事项





--------------------------------------------------------------------------------



IP地址耗尽促成了CIDR的开发,但CIDR开发的主要目的是为了有效的使用现有的internet地址。而同时根据RFC 1631(IP Network Address Translator)开发的NAT却可以在多重的internet子网中使用相同的IP,用来减少注册IP地址的使用。

NAT技术使得一个私有网络可以通过internet注册IP连接到外部世界,位于inside网络和outside网络中的NAT路由器在发送数据包之前,负责把内部IP翻译成外部合法地址。内部网络的主机不可能同时于外部网络通信,所以只有一部分内部地址需要翻译。



NAT的翻译可以采取静态翻译(static translation)和动态翻译(dynamic translation)两种。静态翻译将内部地址和外部地址一对一对应。当NAT需要确认哪个地址需要翻译,翻译时采用哪个地址pool时,就使用了动态翻译。采用port



multiplexing技术,或改变外出数据的源port技术可以将多个内部IP地址影射到同一个外部地址,这就是PAT(port address translator)。



当影射一个外部IP到内部地址时,可以利用TCP的load distribution技术。使用这个特征时,内部主机基于round-robin机制,将外部进来的新连接定向到不同的主机上去。注意:load distributiong只有在影射外部地址到内部的时候才有效。



NAT使用的几种情况:



a,连接到internet,但却没有足够的合法地址分配给内部主机。



b,更改到一个需要重新分配地址的ISP。



c,有相同的IP地址的两个internat合并。



d,想支持负载均衡(主机)。



采用NAT后,一个最主要的改变就是你失去了端对端IP的traceability,也就是说,从此



你不能再经过NAT使用ping和traceroute,其次就是曾经的一些IP对IP的程序不再可以正常运行,潜在的不易被观察到的缺点就是增加了网络延时。



NAT可以支持大部分IP协议,但有几个协议需要注意,首先tftp,rlogin,rsh,rcp和ip



multicast都被NAT支持,其次就是bootp,snmp和路由表更新全部给拒绝了。



NAT的几个相关概念:



Inside Local IP address: 指定于内部网络的主机地址,全局唯一,但为私有地址。



Inside Global IP address: 代表一个或更多内部IP到外部世界的合法IP。



Outside Global IP address: 外部网络主机的合法IP。



Outside Local IP address: 外部网络的主机地址,看起来是内部网络的,私有地址。



Simple Translation Entry: 影射IP到另一个地址的Entry。



Extended Translation Entry:影射IP地址和端口到另一个pair的Entry。



采用NAT,可以实现以下几个功能:



a,Translation inside local addresses



b,Overloading inside global addresses



c,TCP load distribution



d,Handing overlapping networks



下面我们一一叙述它们的工作原理。



a,内部地址翻译(Translation inside local addresses):



这是比较通用的一种方法,将内部IP一对一的翻译成外部地址。



在内部主机连接到外部网络时,当第一个数据包到达NAT路由器时,router检查它的NAT表,因为是NAT是静态配置的,故可以查询出来(simply entry),然后router将数据包的内部局部IP(源地址)更换成内部全局地址,再转发出去。外部主机接受到数据包用接受到的内部全局地址来响应,NAT接受到外部回来的数据包,再根据NAT表把地址翻译成内部局部IP,转发过去。



b,内部全局地址复用(overloading inside glogal addresses)



使用地址和端口pair将多个内部地址影射到比较少的外部地址。这也是所谓的PAT。和内部地址翻译一样,NAT router同样也负责查表和翻译内部IP地址,唯一的区别就是由于使用了overloading,router将复用同样的内部全局IP地址,并存储足够的信息以区分它和其他地址,这样查询出来的是extended entry。



NAT router和外部主机的通讯采用翻译过的内部全局地址,故同一般的通信没有差别,router到内部主机通讯时,同样要查NAT表。



c,TCP负载重分配(TCP load distributing)和以上两种操作不同,这是NAT由外到内的翻译,所以那种以为WEB server一定要放置到



NAT外部的说法是错误的。



工作原理:外部主机向虚拟主机(定义为内部全局地址)通讯,NAT router接受外部主机的请求并依据NAT表建立与内部主机的连接,把内部全局地址(目的地址)翻译成内部局部地址,并转发数据包到内部主机,内部主机接受包并作出响应。NAT router再使用内部局部地址和端口查询数据表,根据查询到的外部地址和端口做出响应。



此时,如果同一主机再做第二个连接,NAT router将根据NAT表将建立与另一虚拟主机的连接,并转发数据。



d,处理重叠网络。



这种方法主要用于两个intranet的互连,同样给我们处理两个重叠网络提供了方法。它的实现要求DNS server的支持(用于区别两个不同的主机)。



1,主机A要求向主机C建立连接,先象DNS server做地址查询。



2,NAT router截获DNS的响应,如果地址有重叠,将翻译返回的地址。它将创建一个simply entry把重叠的外部全局地址(目的地址)翻译成外部局部地址。



3,路由器转发DNS响应到主机A,它已经把主机C的地址(外部全局地址)翻译成外部局部地址。



4,当路由器接受到主机C的数据包时,它将建立内部局部、全局,外部全局、局部地址间的转换,主机A将由内部局部地址(源地址)翻译成内部全局地址,主机C将由外部全局地址(目的地址)翻译成外部局部地址。



5,主机C接受数据包并继续通讯。
回复

使用道具 举报

281

主题

3228

回帖

55万

积分

管理员

积分
551869
发表于 2003-8-24 09:52:01 | 显示全部楼层
[emb7]
网路游侠 www.youxia.org
回复 支持 反对

使用道具 举报

33

主题

203

回帖

4503

积分

论坛元老

积分
4503
发表于 2003-8-25 08:58:45 | 显示全部楼层
[emb7]
再长的路也有尽头,千万不要回头,再快乐的心都有烦恼,千万不要在意,请相信,野草遮不住太阳的光芒,困难挡不住勇敢者的脚步。 我这个男孩崇尚自然纯朴的生活。喜欢聆听约翰·斯特劳斯的圆舞曲;喜欢探讨梵高画中的精神世界;喜欢阅读柯南道尔笔下的福尔摩斯;喜欢研究中国上下五千年历史和古希腊文化;喜欢享受柏拉图式的精神恋爱;喜欢捕捉大自然的规律。向往去神农架探险,到罗马度假。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|西京校友网 ( 陕ICP备11003551号-5 )

GMT+8, 2025-5-6 18:02 , Processed in 0.028264 second(s), 7 queries , MemCache On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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