分类: 系统运维
2011-10-20 10:32:21
你可以通过允许路由器为多个用户使用一个(或者多个)全局地址,以确保内部全局地址中持续有可用的地址。当配置了重载NAT(Overloading NAT,PAT),路由器为高级别协议(如TCP或者UDP)维护足够的信息,转换全局地址为正确的本地地址。当多个本地地址映射到一个全局地址时,则在本地地址之间就以每端主机的TCP或者UDP或者端口进行区别。
图5-17显示了在一个内部全局地址代表多个内部本地址时的NAT转换示例,其中是以TCP端口号进行区别的。路由器过程在进行内部全局地址转换过程中完成以下操作(参见图5-17中的序号):
(1)IP地址为1.1.1.1的内部网络主机发起与外部网络主机B的通信。此时数据包的源地址为1.1.1.1(内部本地地址),目标地址为9.6.7.3(外部本地地址)。
图5-17 内部全局地址PAT转换示例
(2)当路由器接收到从IP地址为1.1.1.1主机发送的数据包后,就会检查NAT表:
n 如果没有对应的转换条目存在,则路由器确定1.1.1.1这个地址必须转换,然后以一个合法的内部全局地址创建一个与1.1.1.1这个本地地址对应的NTA条目。
n 如果启用了重载NAT(PAT),而且有其他正在使用的PAT转换,则路由器从活动的PAT中重复使用一个内部全局地址(如2.2.2.2),并随机分配一个通信端口(如1024,该通信端口一定不会是其他已使用同一个IP地址进行通信时所分配的端口),保存足够的信息用于逆转换。这种类型的条目称之为扩展条目(extended entry)。
【注意】PAT转换过程中的端口分配是由NAT路由器自动进行的,无需人工干预,所以整个NAT转换过程看起来与普通的动态NAT转换完全一样。
(3)路由器用所选择的内部全局地址2.2.2.2替换内部本地地址1.1.1.1作为数据包源地址(目的地址不变,仍为9.6.7.3),继续转发数据包。
(4)主机B接收路由器转发的数据包,并使用接收到的数据包中的源地址2.2.2.2(它是内部全局地址)作为目标地址,对IP地址为1.1.1.1的主机进行响应。
(5)当路由器接收到这个源地址为2.2.2.2的数据包时,将在自己的PAT表中使用通信协议、内部全局地址和端口号,以及外部地址和端口号作为关键字进行查找,把数据包的源地址转换为内部本地地址1.1.1.1,然后转发数据包到内部主机1.1.1.1上。
主机1.1.1.1接收到应答数据包后,继续按照前面的第(2)~第(5)步重复操作。
【经验之谈】PAT把内部用户共享使用的每个全局地址时所分配的端口划分成三个范围:0~511、512~1023和1024~65535。PAT为每个UDP或者TCP会话分配一个源端口,所以它总是会尝试为每个发起会话的请求分配与源端口一样的端口。但如果发起会话端的对应源端口已被使用,则NAT会开始从以上三个端口段进行扫描,以发现的第一个可用端口用于对应会话。
本文摘自《路由器配置与管理完全手册(Cisco篇)试读样章》第五章