组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:spacelu(spacelu wuchun_lu@china.com) 译文发布时间:2001-5-11 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须 保留本文档的翻译及版权信息。
Network Working Group P. Srisuresh Request for Comments: 3022 Jasmine Networks Obsoletes: 1631 K. Egevang Category: Informational Intel Corporation January 2001
传统IP网络地址转换(传统NAT) (RFC3022 Traditional IP Network Address Translator (Traditional NAT))
备忘录状态 这个备忘录为因特网社区提供信息。它没有详细说明任何一种网络标准。这个备忘录的 发布没有限制。
版权声明 版权属于因特网社会(2001)。保留所有权利。
前言 在这个文档中描述的IP地址转换操作扩展了RFC1631介绍的地址转换和包括了一类 的网络地址和TCP/UDP端口转换。另外,这个文档更正了RFC1631的校验适用算法和试图 详细讨论NAT操作和限制。 摘要: 基于基本NAT的基本网络地址转换是IP地址从一个组到另外一个组映射的一种方式, 对终端用户是透明的。网络地址端口转换或NAPT是很多网络地址和它们的TCP/UDP(传 输控制协议/用户数据报协议)端口转换成一个唯一的网络地址和它的TCP/UDP端口。同时, 参考传统NAT这两个操作提供一种机制,这种机制用全球唯一注册地址连接私人地址领域 到外部领域。 1. 介绍 IP地址转换的需要的提出是因为一个网络的IP内部地址不能用在外部网不论是因为人 原因还是因为它们在外部网不合法。在一个局域网的网络拓补学可以用很多方式改变,顾客 可以改变他们的提供商,公司骨干可能重组或则提供商可能合并或分裂。不论外部网随着时 间何时改变,局域网所在的节点被附以的地址肯定随着外部网的改变而改变。用户可能在这 种方式的改变被隐藏在区域里,因为集中改变到单一地址转换路由器中。 基本地址转换将(在很多情况下,除了[NAT-TERM]和这个文档第6部分所有指的)允 许在局域网中的主机可以透明的连接外部网和可以连接外部网中可选的主机。网络组织 的建立首先是为了局域网内部的应用,还有和广域网的连接需要是这个规划的很好候补。 许多小公司,家庭办公室(SOHO)用户和电信员工在它们的办公室有多个网络节点运 行TCP/UDP应用程序,但是服务提供商只有给他们在远程连通路由提供唯一的IP地址。 这个远程连接用户渐增的社区将从NAPT中获得好处,NAPT将允许在局域网中有多个 节点同时用路由器附以的唯一IP地址连接远程网络。 用这种方式有许多局限性。属于一个会议的所有请求和应答强制路游通过相同的 NAT路由器。一种确认的方式将是有一个基于唯一残缺网段路由的NAT,在那所有的IP 包或者从那个起始或者以那个为目的地。还有其他方法用多NAT设备来确保这个规则。 例如,一个单一能够拥有两个不同的出口到不同的提供者和局部网络的主机之间的会议 能够穿过NAT设备到达外部主机的最好途径。当一个NAT路由器不正常 ,其他的路由 器能够路由所有连接。但是在这中方法下有可能有一个警告,因为再次路由的流量可能 在新的NAT路由交换时间里交换失败。一种解决这个问题的方法是路由器共享相同的 NAT配置和交换状态信息一保证互相失败备份。 地址转换是独立的应用,经常伴随特殊应用网关(ALOGS)执行有效负荷检测 和变换。FTP是NAT设备里最常用ALG功能。要求ALG干涉的应用一定不能有他们自 己的有效负荷编码,因为那样可能影响到使ALG失笑,直到ALG有解密有效负荷的主 键。 这个方法有个缺陷是取消了IP地址点对点的意义,和在网络中用增加的状态来 补偿。总之,通过IPSec保证的点对点IP网络层安全不能适用于终端主机,如果有NAT 设备路由。但是,这个方法的优点是它在不需要变换主机和路由器的情况下安装。 在这篇文章里一些概念的定义例如“地址域”,“透明路由”,“TV端口”,“ALG” 和其它概念可以在NAT-TERM里找到。 2. 传统NAT概述: 在这个文档里描述的地址转换操作是根据“传统NAT”。其它的NAT在这个文档里 没有给以描述。在大部分情况下,传统NAT允许在局域网的主机透明的和外部主机连接。 在传统NAT中,从局域网到广域网方式是单一方向的。相反方向的两个任务可能允许预 选择主机状态地址影射的异常。基本NAT和NAPT是不同的两种传统NAT,因为基本 NAT地址转换只是限于IP地址,然而NAPT的地址转换包括IP地址转换和传输认证(例 如TCP/UDP端口或ICMP询问ID)。 除了提到的那些外,贯穿这篇文章的地址转换或NAT属于传统NAT,也就是基本NAT 和NAPT。只有如底下图一中所描述的残段网可能配置成执行地址转换。
2.1基本NAT的概述: 基本NAT的操作如下。拥有一系列IP地址的残域能够和外部网络通讯,通过映射 本地地址成全球统一地址。如果本地节点数量等于或小于有效通用地址的数量,每个本 地地址都能保证映射到。另外,能够多个出口到广域网的节点数受通用地址的数量限制。 单一本地地址应该映射成一个专门的全球通用地址来保证连通外部或者通过一个公共地 址来与外部连接。多路同时任务可以从一个本地节点进行初始化,用相同的地址映射。 在一个残域里的地址只是在本地有效而在此域外却是无效的。但是,在一个残域里 的地址可以被任何其他的残域从新使用。例如,一个单一类A地址能够被许多残域地址 所使用。在每一个残域和主干网的出口点安装NAT。如果有多个出口,每个出口应该有 相同的转换表。 例如,如图2,残域A和B内部都用类A地址段10.0.0.0/8[RFC1918]。残域A的 NAT附议C类地址段198.76.29.0/24,而残域B的NAT附议C类地址段198.76.28.0/24。 C类地址是全球通用的唯一地址,其他NAT都不能用它们。
当残域A主机10.33.96.5试图发送一个包到残域B主机10.81.13.22时,用全球通用地址 198.76.28.4作为目标主机地址,然后送包到第一个路由器。残域路由器对网络198.76.28.4 有一个静态所以包可以继续往前到广域网路由器。但是,NAT在包被继续向前送之前转 换源地址10.33.96.5成198.76.29.7。相应的,IP包往回传时依据相同的地址转换。 需要注意的是主机或路由器不要改变。例如,针对残域A主机,198.76.28.4是残域B 中的地址。在绝大多数情况下,地址转换对目标主机是通明的。当然,这个只是一个简 单的例子。还有很多问题待解决。 2.2 NAPT概述: 有一种说法,一个组织有一个局域网和一个广域网连接到服务提供商。局域网络的 残域路由器附议在广域网连接中的有效地址而此组织中剩余的节点拥有只是在本地有效 的IP地址。在这种情况下,局域网的多个节点允许多个连接到广域网,在NAPT的帮助 下用登记的唯一IP地址。NAPT允许映射两个类型(登记IP地址,TV端口数)到两个 类型( 登记IP地址,TV端口数)。这种模型符合大部分小公司家庭公司(SOHO)团 体用服务提供商提供的登记IP地址连接广域网的要求。这个模型能够扩展趁允许内部连 接通过映射登记IP地址的每一个服务TV端口的本地节点。 在下面的图3中,残域A内部用A类地址段10.0.0.0/8。残域路由器接口被服务提供 商附以IP地址138.76.28.4. 当残域A主机10.0.0.10发送一个远程登陆包到主机138.76.29.7,用全球通用地址 138.76.29.7作为目标地址,然后送包到第一个路由器。残域路由器有一个子网 138.76.0.0/16静态路由,所以包可以继续往前传送到广域网。但是,在包被网前传之前, NAPT 转换IP和TCP包头里源地址10.0.0.10和源TCP端口3017成通用唯一地址 138.76.28.4和唯一TCP端口。在往回传的包经过同样的地址和TCP端口转换。和上边 一样,我们必修注意,这个转换不需要改变主机或路由器。这个转换是完全透明的。 在这个设置中,只有TCP/UDP任务允许且必须从本地局域网中初始化。但是,有 些服务例如DNS要求内部访问。还有其它服务一个组织想允许内部任务访问。在路由器 上,静态配置一个残域网众所周知的端口是可能的[RFC 1700],可以直接连向专门的
局域网节点。 除了重定向信息类型,TCP/UDP任务和ICMP信息都可以通过NAPT路由器来控制。 ICMP查询类型包和TCP/UDP包的转换类型一样,在于ICMP包头的标志域一对一地和 登记IP地址的查询标志对应。在ICMP查询信息中的标志域由发送者设置并且从查询问 答端毫无改变的反馈。所以,一对地址(本地IP地址,本地ICMP查询标志)通过NAPT 路由器映射成一对(登记IP地址,附议的ICMP查询标志),这个过程保证从任何本地 主机来的任何类型有唯一的标志。ICMP错误信息的更改在以后的章节中给以讨论,包 括ICMP有效负荷的改变和IP和ICMP报头。 在NAPT设置中,任何登记IP地址和残域网路由器的广域网接口的IP地址一样的地 方,路由器必须保证区分发生于自己的TCP,UDP或ICMP查询任务 和那些发生于局 域网节点的任务。所有内部任务(包括TCP,UDP和ICMP查询任务)被假设为直接到 NAT路由器作为终节点,除非目标服务端口静态映射于局域网中的不同节点。 除了TCP,UDP和ICMP查询类型的任务不允许从本地节点由NAPT路由器传输。 3.0 任务传输过程 传统NAT的传输过程和[NAT-TERM]中描述的一样。下面的部分说明和传统NAT 的特殊的内容。 3.1 地址绑定: 用基本NAT,当第一个外传任务从私有主机初始化时,一个内部私有地址绑定一个 外部地址。后来,所有其它的外传任务从相同的私有地址初始化将用相同的地址绑定来 传输包数据。 对NAPT而言,在许多私有地址映射一个全球唯一地址时,绑定是从成对地址(私 有IP地址,私有TV端口)到另外一对地址(指派地址,指派TV端口)。和基本NAT 一样,绑定是在第一个外传任务有一对地址(私有IP地址,私有TV端口)发动时决定 的。由于不是一个普通实践,有可能同时多个任务初始化一对相同地址(私有地址,私 有端口)在一个私有主机中建立是可能的。在这种情况下,一对地址(私有地址,私有 TV端口)的一个唯一绑定可能用于所有从相同地址主机中的任务传送的包。 3.2 地址查询和转换: 在一个地址绑定或地址对绑定(假设NAPT以建立),一个软状态将用绑定来维持 任何连接。属于相同任务的包将服从转换目的的任务查询。转换的确切属性将在接下去 的章节中进行讨论。 3.3 解开地址 当基于单个地址或成对地址绑定的最后一个任务终止时,绑定自己将终止。 4.0 包传输 属于NAT管理任务的包经历任何方向的转换。对立包数据任务在接下去进行详细的描 述。 4.1 IP,TCP,UDP 和ICMP报头操作: 在基本NAT模型,每个包的IP头必须改变,包括IP地址(外传包的源IP地址,往里 传的目的IP地址)和IP校验和。 对TCP和UDP任务,改变包括TCP和UDP报头的校验和的更正。这是因为TCP/UDP 校验和同时有一个假头包含源和目的IP地址。有一个例外,校验和为0的UDP报头不需要 改变。至于ICMP查询包,由于在ICMP报头中不包含IP地址,所以不需要额外的变化。 在NAPT模型中,IP头的变化和基本NAT中的相同。对TCP/UDP任务,在报头中变化 必须扩展成包含转换TV端口(外传数据的源TV端口和内传的目的TV端口)的转换。在 ICMP查询包中ICMP报头必须改变来代替查询ID和ICMP报头校验和。私有主机查询ID 必须转换成外传的指派ID和内传的相信转换。ICMP报头校验和必须更正来说明查询ID转 换。 4.2 校验和调整 NAT修正以每个包为准的,能够准确计算,因为除了简单域转换外,它们包括一个或多个 校验和修正。幸运的是,我们有一个算法,它能简单有效地调整IP,TCP,UDP和ICMP 报头校验和。因为所有这些报头用一个辅助校验和在转换时计算差距和把它加到校验和是足 够的。下面的算法只有对偶偏移有效(如:下面optr是从报头开始必须是偶偏移)和偶数 长度(如,下面的olen和nlen)。样本代码如下: Void checksumadjust(unsigned char chksum, unsigned char optr, int olen, unsigned char *nptr, int nlen) /assuming:unsigned char is 8 bits, long is 32 bits.
参考资料 [NAT-TERM] Srisuresh, P. and M. Holdrege, "IP Network Address Translator (NAT) Terminology and Considerations", RFC 2663, August 1999.
[RFC 1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. and E. Lear, "Address Allocation for Private Internets", BCP 5, RFC 1918, February 1996.
[RFC 1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994.
[RFC 1122] Braden, R., "Requirements for Internet Hosts -- Communication Layers", STD 3, RFC 1122, October 1989.
[RFC 1123] Braden, R., "Requirements for Internet Hosts -- Application and Support", STD 3, RFC 1123, October 1989.
[RFC 1812] Baker, F., "Requirements for IP Version 4 Routers", RFC 1812, June 1995.
[FTP] Postel, J. and J. Reynolds, "FILE TRANSFER PROTOCOL (FTP)", STD 9, RFC 959, October 1985.
[TCP] Defense Advanced Research Projects Agency Information Processing Techniques Office, "TRANSMISSION CONTROL PROTOCOL (TCP) SPECIFICATION", STD 7, RFC 793, September 1981.
[ICMP] Postel, J., "INTERNET CONTROL MESSAGE (ICMP) SPECIFICATION", STD 5, RFC 792, September 1981.
[UDP] Postel, J., "User Datagram Protocol (UDP)", STD 6, RFC 768, August 1980.
[RFC 2101] Carpenter, B., Crowcroft, J. and Y. Rekhter, "IPv4 Address Behaviour Today", RFC 2101, February 1997. RFC3022 Traditional IP Network Address Translator (Traditional NAT) 传统IP网络地址转换(传统NAT)
1 RFC文档中文翻译计划
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8