试验背景:随着接入因特网的计算机数量不断猛增,IPv4版本地址资源也就愈加显得捉襟见肘。好多企业申请的IP地址都是经过子网不断划分得到的。A类,B类地址基本已用完,而一般的用户根本就申请不到整段的公网C类地址。如果,要想让每一个连入互联网的主机拥有公网的IP地址,在IPv4的年代是根本不可能的事情,而IPv6正在不断发展中,IPv4到IPv6的过度还是需要一段时间的。为了解决这一问题,A类,B类,C类地址里便规划出了一部分私有地址(A类:10.0.0.0~10.255.255.255,B类:172.16.0.0~172.31.255.255,C类:192.168.1.0~192.168.255.255)作为企业内部使用,而内网与外网之间的转换便用到了现在主流的NAT(Network Adderss Translation)技术。NAT技术允许使用私有IP地址的企业局域网可以透明地连接到像因特网这样的公网网络上。NAT不仅解决了IP地址不足的问题,而且还能够隐藏内部网络的细节,避免来自网络外部的攻击,起到一定的安全作用。当然,任何事物,当你提高它其中一部分性能的时候,其它与之关联的性能必然会有所降低。而企业内部启用了NAT之后,做NAT转换的路由器必须对每一个数据包进行IP地址处理,从而造成了一定的网络延迟。
 
试验目的:1、通过试验了解NAT的基本原理
2、静态NAT的实现与原理
3、动态NAT的实现与原理
4、端口多路复用NAT(PAT)的实现与原理
5、TCP负载均衡配置
 
试验网络拓扑:
 
试验步骤:
一、配置模拟公网的基本参数(由于不是重点,点到为止)
为了增加试验的真实性,选用R6和R7互联来模拟公网,并且启用RIP v2(如果,中间路由器多了,还可以启用OSPF路由协议),而两边的网络相当于两个不同的企业。(R6和R7配置完成之后,配置内网的交换路由设备时,要想着R6和R7之间的连接就是公网,而我们根本就不知道它是如何相连的,我们只需要在企业内部出外网的路由器接口上启用虚拟拨号功能进行IP地址协商动态获得IP地址就可以了,考虑到试验局限性的原因,这里就当出外网的路由器接口已经通过了虚拟拨号验证并分配的公网IP地址。因此,接下来只需要配置默认路由和NAT就可以连入互联网(实际上是R6和R7之间的互联)
 
R6的具体配置:
clip_image004
 
R7的具体配置:
clip_image006
 
检查公网R6和R7是否连接正常:
clip_image008
 
 
二、 配置内网路由器的基本参数,并启用默认路由(不是重点,点到为止)
R5的具体配置:
注意:配置默认路由的时候,由于根本就不知道公网的存在,所以,下一跳应该写出外网的端口号。
clip_image010
 
R6的具体配置:
clip_image012
 
 
 
******************NAT技术的实施****************
其实NAT技术是可以借助于某些代理服务器来实现,但企业考虑到运算成本和网络性能,很多时候,都是在路由器上实现的。当内网数据发送连接外网的路由器上时(R5和R10),NAT将自动修改IP包头中的源IP包头中的源IP地址和目的IP地址,IP地址校验则在NAT处理过程中自动完成。NAT支持的业务类型和应用有HTTP,TFTP,Telnet,NTP,NFS以及任何应用数据流中不承载源/目的IP地址的TCP/IP业务;支持在数据流中有IP地址的业务类型有ICMP,FTP(包括PORT和PASV),TCP/IP上的NetBIOS(数据报、名称和会话服务),DNS,H.323/NetMeeting,IP多播(只转换源地址);不支持的业务类型有路由表更新,DNS区域传送,BOOTP,talk、ntalk,SNMP,Netshow,VPN。
 
三、 静态NAT的配置:
静态NAT转换就是将内部网络的私有IP地址转换成公有合法的IP地址,IP地址的对应关系是一对一的,是不变的,即某个私有IP地址只能转换成某个固定的公有IP地址。这种转换一般拥有公司里某些特定的设备(如服务器)的访问,是不能节省公网IP地址的,但是可以隐藏企业内部服务器的IP地址,降低外网的攻击,从而增强内部设备的安全性。
在内部局部(内网局域网配置的私有地址)和内部全局地址(出外网路由器接口的公网地址)之间建立静态地址转换,将内部局部地址172.16.0.1转换为内部全局地址100.100.100.1
设置NAT功能的路由器需要由一个内部端口(Inside)和一个外部端口(Outside)。内部端口连接的网络用户使用的是内部IP地址(私有地址),外部端口连接的外部的网络使用的是外部IP地址(公有地址,具有全球唯一性),如因特网。要NAT功能发挥作用,必须在这两个端口上启用NAT。R5的端口F0/0应设置为Inside,F0/1应设置为Outside;R10的E0/0应设置为Outside,E0/1应设置为Inside。
clip_image014
clip_image016
 
配置完静态NAT之后,使用PC22 ping路由器R10 E0/0接口的IP地址,可以触发R5上数据流量的通过,R5上的静态NAT转换表便会生成。在特权模式下使用show ip nat translation便可以查看静态NAT的统计信息,也可以在其它模式下使用do show ip nat translation查看。
(注意:Pro是协议的意思,Inside global是内部局部IP地址,Inside local是内部全局IP地址,Outside local是外部局部IP地址(由其所有者给外部网络上的主机分配的IP地址),Outsid global是外部全局IP地址(外部主机表现在内部网络的IP地址))
 
 
这里引用一个很形象的例子(书上一段话)加以说明:
其实,NAT地址转换就像这个过程,这些地址就是我们穿的鞋子。内部局部地址就是我们回家之后在家里穿的拖鞋,只能在家里穿不能穿出门,而内部局部地址则是我们出门要穿的皮鞋,出门换上进家脱下来;外部地址就是来家里拜访的客人所穿的鞋子,外部全局地址是客人穿来的皮鞋,到了我们家里要换上我们专门为他准备的拖鞋—外部局部地址,而客人离开的时候,就得换回他自己的皮鞋才能出门。其中,我们自己的皮鞋和客人的皮鞋不能混穿,我们自己的拖鞋和客人的拖鞋不能混穿。这就是4中类型的地址之间的关系。
clip_image018
 
注意:也可以使用主机PC22 ping 主机PC23的私有地址192.168.1.1(理论是ping不通的,实验也证明了这一点)。
四、 动态NAT的配置:
动态NAT是指将内部网络的私有地址转换为公有地址时,IP地址对应关系是不确定的、随即的,所有被授权访问因特网的私有地址可随即转换为任何指定的合法地址。当ISP(网络服务提供商)提供的合法地址少于网络内部的计算机数量时,可以采用动态转换的方式。
在配置动态NAT之前,最后将刚才配置的静态NAT删除,以免给动态NAT造成影响。
clip_image020
clip_image022
 
如果删除不掉刚才配置的静态NAT,可以使用clear ip nat translation * 命令来清除NAT转换表中的所有条目。清除完之后,可以使用show ip nat translation 命令进行查看。如果要清除NAT转换表中的某一条目,可以使用clear ip nat translation inside local-ip global-ip命令。
clip_image024
 
接下来配置动态NAT
首先,第一条命令是定义一个ACL条目,允许172.16.0.0/16段的网络通过连接外网的路由器(注意:这里配置有点误区,将172.16.0.0/16配置成为一个子网172.16.0.0/24。但是,测试主机172.16.0.1和172.16.0.2即属于172.16.0.0/16段同时也属于172.16.0.0/24段里的IP地址,对试验不会造成太大的影响,希望引起注意。正确的配置应该是access-list 2 permit 172.16.0.0 0.0.255.255)。
第二条命令是定义一个合法IP地址池。语法为: “ Router(config)#ip nat pool pool-name star-ip end-ip {netmask netmask|prefix-length prefix-length} [type rotary] ”其中pool-name是定义的地址池名称,star-ip到end-ip是地址池范围,netmask是子网掩码,prefix-length是子网掩码的另外一种表示方法,type rotary为地址池中的地址可以循环使用。
第三条命令是实现网络地址转换。将由access-list指定的内部局部地址与指定的内部全局地址池进行地址转换。语法为Router(config)#ip nat inside source list access-list-number pool pool-name [overload],其中access-list-number是刚才定义的ACL编号,pool-name是刚才定义的地址池名称,overload使用地址复用,用于PAT。
R5的具体配置:
定义ACL的access-list-number为2,地址池名称为pool-2,范围为100.100.100.5~100.100.100.6
clip_image026
 
R10的具体配置:
定义ACL的access-list-number为1,地址池名称为pool-1,范围为200.200.200.5~200.200.200.6(注意:其中第二条命令后面出现了个$,表明此条命令太长,被缩减,正确的配置应该为ip nat pool pool-1 200.200.200.5 200.200.200.6 netmask 255.255.255.0)
clip_image028
 
配置完成之后,同样,使用PC22 ping 100.100.100.2。然后将PC22的IP地址改为172.16.0.2和172.16.0.3,也就相当于有三台主机触发了R5上的NAT流量。然后,在路由器R5上使用show ip nat translations命令查看NAT转换表,可以发现只显示了172.16.0.1和172.16.0.2,而172.16.0.3是ping不通100.100.100.2的,原因是172.16.0.1和172.16.0.2都占用了所以的公网IP地址池,如果想要172.16.0.3ping通100.100.100.2,而且NAT列表里有这项条目,可以使用clear ip nat translations清空NAT列表,然后再使用。同样,172.16.0.1~172.16.0.3都ping不通私网IP:192.168.0.0网段。
clip_image030
 
五、 PAT的配置:
PAT(Port Address Translation端口多路复用)是改变外出数据包的源IP地址和源端口并进行端口转换,即端口地址转换采用端口多路复用方式。内部网络的所以主机均可共享一个合法外部IP地址实现因特网的访问,从而可以最大限度地节约IP地址资源。同时,又可以隐藏网络内部的所有主机,以有效地避免来自因特网的攻击。因此,目前网络中使用最多的就是端口多路复用方式。而内部局部地址是通过TCP或UDP端口号来彼此区分的。
首先清除动态NAT转换表,然后将刚才配置过的命令删除掉,以免给PAT配置造成影响。
clip_image024[1]
clip_image032
 
PAT的配置和动态NAT的配置基本相同,就是在实现网络地址转换的时候,需要在命令后面加上overload参数。以R5为例,下面第一条命令是定义一个ACL 10允许172.16.0.0/24的网段通过R5出外网,第二条命令设置的地址池名字为onlyone-2 范围为100.100.100.1~100.100.100.1,也就是100.100.100.1,第二条命令也可以用“ip nat pool .lyone-2 fastethernet 0/1 overload”代替,其中,fastethernet 0/1就是路由器R5连接公网的端口。
clip_image034
clip_image036
 
配置完成之后,同样,使用PC22 ping 100.100.100.2。然后将PC22的IP地址改为172.16.0.2、172.16.0.3和172.16.0.4,也就相当于有三台主机触发了R5上的NAT流量。然后,在路由器R5上使用show ip nat translations命令查看NAT转换表,可以发现,只要是172.16.0.0段的IP地址都被转换成了公网IP:100.100.100.1,而他们之间就是靠IP后面端口号来区分的。
clip_image038
 
六、 TCP负载均衡配置:
TCP负载均衡是指利用NAT技术,用对外的虚拟IP地址来代表多个同样的服务器,本实验以四台WEB服务器(其实只用了一台WEB服务器(PC23用了四次),内网主机访问之后,将其IP地址改成地址池里的其它IP地址而得到的)为例进行说明。
假如现在在192.168.1.0网段有四台WEB服务器(由PC23不断改变IP地址充当)IP地址分别为172.16.0.10、172.16.0.11、172.16.0.12、172.16.0.13,使用一个虚拟主机172.16.0.100来代表这个服务器组。要求利用NAT技术在3个服务器之间实现负载均衡。
第一条命令是:在R5上建立一个ACL 30,并允许虚拟主机172.16.0.100通过。
第二条命令是:配置虚拟主机对于真实主机的连续地址池为172.16.0.10~172.16.0.13,并命名为real-host,设置网络前缀长度为16,且该地址集为循环(rotary)型。由于地址过长,type后面省略的是rotary。
第三条命令是:设置访问控制列表 30与NAT地址集real-host之间的映射。
clip_image040
 
接下来需要在R10上做一个静态的地址映射,将虚拟主机地址172.16.0.100映射到连接外网的端口上,并启用80端口。命令为:“ip nat inside source static tcp 172.16.0.100 80 200.200.200.2 80。 并启用http服务功能。
clip_image042
 
配置完成之后,在PC23上设置IP地址为192.168.1.10~192.168.1.13,然后在PC22上访问[url]http://200.200.200.2/[/url],然后在R10上使用show ip nat translations查看NAT转换表
clip_image044