1、总结NAT NAT总结为什么要使用NAT? RFC1631中对NAT进行了描述。NAT最初的目的是通过允许使用较少的公有IP地址代表多数专用的IP地址,以减缓可用IP地址的枯竭速度。私网IP地址是不能够在公共网络里进行路由的。NAT技术让使用私有IP的私有网络能够连接到公共网络,如INTERNET。 通常在位于末节区域(内网)和公共网络(外网)之间的路由器上配置NAT。将分组发送给外网之前,NAT将内部本地地址转换为全局唯一的IP地址。几对NAT的重要概念和术语:1. inside device/outside device:内部设备/外部设备2. local/global:私网/公网3. i
2、p nat inside/ip nat outside:内口/外口下图便于大家理解这些概念:Ip nat outsideIp nat inside4.IL,inside local:分配给内部设备的地址,这些地址不会向外公布。5.IG,inside global:通过这个地址,让外部设备可以知道内部设备。6.OL,outside local:通过这个地址,让内部设备可以知道外部设备。7.OG,outside global:分配给外部设备的地址,这些地址不会对内公布。NAT的原理:(以动态转换内部源地址为例:ip nat inside source list 1 pool DY) 当从内部发起一
3、个向外部的连接时,NAT路由器通过查看路由表,知道这是一个以内部为源去往外部的连接,并发现源地址符合访问列表的设定,于是NAT从pool中取出一个IG地址,对该IL地址进行翻译,将分组的源IL地址改为IG地址后继续转发,并将翻译条目写入NAT表。外部目标设备再收到该分组后,以IG地址为目标地址进行应答。NAT收到应答分组后,查NAT表将应答分组的目标地址(刚刚的IG地址)翻译成IL地址然后转发往发起连接的那个主机。NAT的基本命令:1.配置内/外口:在接口配置模式下:ip nat inside/ip nat outside2.配置动态映射时的地址池:在全局配置模式下:ip nat pool p
4、ool-name start-ip end-ip netmask netmask3.地址映射命令:静态(转换内部源地址):ip nat inside source static (tcp) IL地址 IG地址动态(转换内部源地址):ip nat inside source list list-name pool pool-name动态(转换外部源地址):ip nat outside source list list-name pool pool-name动态(转换内部目的地址):ip nat inside destination list list-name pool pool-name(多用
5、在虚拟服务器中)4.查看NAT表:show ip nat translation5.显示NAT统计:show ip nat statistics6.NAT超时:ip nat translation timeout7.对NAT条目数目限制和更改:ip nat translation max-entries8.清除NAT表中的动态条目:clear ip nat translation *实验部分:其中:1.R1/R2/R3/SW的以太网网段是123.0.0.0/24, R1/R2/R3都是以E0/0连接到SW上,地址分别为:123.0.0.1/123.0.0.2/123.0.0.32.R3/R4之
6、间都以S1/0相连,网段是34.0.0.0/24,地址分别是34.0.0.3/34.0.0.43.R3/R5之间都以S1/1相连,网段是35.0.0.0/24,地址分别是35.0.0.3/35.0.0.54.R1和R2上有一条默认路由下一跳指向123.0.0.35.R4上:ip route 200.1.4.0 255.255.255.0 34.0.0.36.R5上:ip route 200.1.5.0 255.255.255.0 35.0.0.3下面是开始时所有路由器的配置:(假设给定的IG地址段是POOL R4: 200.1.4.1200.1.4.3, POOL R5: 200.1.5.12
7、00.1.5.3)R1:interface Ethernet0/0 ip address 123.0.0.1 255.255.255.0! ip route 0.0.0.0 0.0.0.0 123.0.0.3R2:interface Ethernet0/0 ip address 123.0.0.2 255.255.255.0! ip route 0.0.0.0 0.0.0.0 123.0.0.3R3:interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0! interface Serial1/0 ip address 34.0.0.3
8、255.255.255.0!interface Serial1/1 ip address 35.0.0.3 255.255.255.0 R4:interface Serial1/0 ip address 34.0.0.4 255.255.255.0! ip route 200.1.4.0 255.255.255.0 34.0.0.3R5:interface Serial1/1 ip address 35.0.0.5 255.255.255.0! ip route 200.1.5.0 255.255.255.0 35.0.0.3第一:静态的NAT:使用R1,R3,R4在NAT路由器R3上进行配置
9、:interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0 ip nat inside!interface Serial1/0 ip address 34.0.0.3 255.255.255.0 ip nat outside!interface Serial1/1 ip address 35.0.0.3 255.255.255.0!ip nat inside source static 123.0.0.1 200.1.4.1查看R3的NAT表:R3(config)#do show ip nat translationPro Inside
10、global Inside local Outside local Outside global- 200.1.4.1 123.0.0.1 - -此时,从R1的123.0.0.1去ping R4的34.0.0.4或者从R4的34.0.0.4去ping 200.1.4.1都是可以通的,这是因为NAT表中有翻译条目:200.1.4.1(IG)-123.0.0.1(IL)第二:动态的NAT:使用R1,R3,R4在NAT路由器R3上进行配置:interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0 ip nat inside!interface
11、Serial1/0 ip address 34.0.0.3 255.255.255.0 ip nat outside!interface Serial1/1 ip address 35.0.0.3 255.255.255.0!ip nat pool DY 200.1.4.1 200.1.4.3 netmask 255.255.255.0ip nat inside source list 1 pool DY!access-list 1 permit 123.0.0.1在第一次连接发起之前show ip nat translation可以发现NAT表是空的,然后用R1的123.0.0.1去ping
12、 R4的34.0.0.4,可以PING通,此时NAT表有200.1.4.1到123.0.0.1的映射了。然后我们使用命令do clear ip nat translation * 清楚表中的动态映射,再从R4去PING 200.1.4.1,可以发现:R4(config)#do ping 200.1.4.1Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 200.1.4.1, timeout is 2 seconds:U.U.USuccess rate is 0 percent (0/5)这是因为NAT表中已经没有了2
13、00.1.4.1这个地址的翻译条目,并在R3的路由表中也没有有关于200.1.4.1的路由,所以显示路由不可达。第三:Routing loop when useing dynamic NAT:使用R1,R3,R4从上面的例子中我们可以大概看出NAT的一个执行步骤:1.从inside到outside:先查找路由表,发现这是一个以内部地址为源到外部的连接,并且源符合list 1圈定的范围,于是NAT将地址翻译,把翻译条目保存进NAT表中。2.从outside到inside:先查NAT表,将IG地址翻译成IL地址,再查路由表。所以上个例子中,NAT表中没有翻译条目,无法将IG翻译IL,因为R3的路由
14、表中没有200路由(IG),只有123路由(IL),所以显示不可达了。如果说R3有能力为200去路由又会发生什么呢?我们在R3上多配置一条指向R4的默认路由:ip route 0.0.0.0 0.0.0.0 34.0.0.4, 然后打开debug ip packet, debug ip nat后在R4上PING 200.1.4.1,以下是R3的显示:*Mar 1 01:02:13.779: IP: tableid=0, s=34.0.0.4 (Serial1/0), d=200.1.4.1 (Serial1/0), routed via FIB*Mar 1 01:02:13.779: IP:
15、s=34.0.0.4 (Serial1/0), d=200.1.4.1 (Serial1/0), len 100, redirected*Mar 1 01:02:13.783: IP: tableid=0, s=34.0.0.3 (local), d=34.0.0.4 (Serial1/0), routed via FIB*Mar 1 01:02:13.783: IP: s=34.0.0.3 (local), d=34.0.0.4 (Serial1/0), len 56, sending*Mar 1 01:02:13.787: IP: s=34.0.0.4 (Serial1/0), d=200
16、.1.4.1 (Serial1/0), g=34.0.0.4, len 100, forward我们可以比较清楚的看到,从s=34.0.0.4, d=200.1.4.1在做了一个路由重定向后又以s=34.0.0.3, d=34.0.0.4发回了R4,网络在这里出现了打环的现象。第四:PAT:使用R1,R2,R3,R4(在R3上no ip route 0.0.0.0 0.0.0.0 34.0.0.4)interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0 ip nat inside!interface Serial1/0 ip addre
17、ss 34.0.0.3 255.255.255.0 ip nat outside!ip nat inside source list 1 interface Serial1/0 overloadaccess-list 1 permit 123.0.0.0 0.0.0.3在R1,R2上用PING和telnet对R4发起连接,然后查看NAT表如下:icmp 34.0.0.3:6 123.0.0.1:6 34.0.0.4:6 34.0.0.4:6tcp 34.0.0.3:39855 123.0.0.1:39855 34.0.0.4:23 34.0.0.4:23icmp 34.0.0.3:0 123.
18、0.0.2:0 34.0.0.4:0 34.0.0.4:0tcp 34.0.0.3:48670 123.0.0.2:48670 34.0.0.4:23 34.0.0.4:23可以看到,两个不同的IL地址被映射到同一个IG地址上,但是所用的端口号是不同的,以标识不同的IL地址。NAT试图保留BSD的语法,在可能的情况下将IL的端口号映射到同样的IG端口号,不同的IG端口号只在与IL相关的端口号在另一个映射中被占用时使用。第五:NAT的TCP负载分配:使用R1,R2,R3,R4外部看来有一个IG地址的单独的服务器,实际上R3将R1和R2两个IL地址轮流翻译。为了方便实验结果的观察,我们先在R1/R
19、2上做如下配置:R1(config)#line vty 0 4R1(config-line)#password R1R1(config-line)#loginR2(config)#line vty 0 4R2(config-line)#password R2R2(config-line)#login在R3上做的配置如下:interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0 ip nat inside!interface Serial1/0 ip address 34.0.0.3 255.255.255.0 ip nat outside
20、!ip nat pool VS 123.0.0.1 123.0.0.2 prefix-length 24 type rotaryip nat inside destination list 1 pool VS!access-list 1 permit 200.1.4.1做完以后我们在R4上telnet 200.1.4.1:R4(config)#do tel 200.1.4.1Trying 200.1.4.1 . OpenUser Access VerificationPassword: R1R1R4(config)#do disc 1Closing connection to 200.1.4.
21、1 confirm=R4(config)#do tel 200.1.4.1Trying 200.1.4.1 . OpenUser Access VerificationPassword: R2R2R4(config)#do disc 1 Closing connection to 200.1.4.1 confirm=R4(config)#do tel 200.1.4.1Trying 200.1.4.1 . OpenUser Access VerificationPassword: R1R1 R4(config)#do disc 1 Closing connection to 200.1.4.1
22、 confirm=R4(config)#do tel 200.1.4.1Trying 200.1.4.1 . OpenUser Access VerificationPassword: R2R2我们只是TELNET了200.1.4.1这个地址,却被轮流的连接到R1和R2上。另外要提及的两点就是当POOL中的地址不连续怎么办,前面的例子中我们的POOL中的地址都是连续的R3(config)#ip nat pool VS ? A.B.C.D Start IP address netmask Specify the network mask prefix-length Specify the pre
23、fix length此时如果打A.B.C.D就表示接下来的地址段是连续的,如果选后两个,就可以圈出不连续的地址段,比如200.1.4.1到200.1.4.100中的34和69必须拿出来做DNS的静态地址映射而不能进入地址池。那么我们可以这样去定义POOL:R3(config)#ip nat pool VS prefix-length 24R3(config-ipnat-pool)#address 200.1.4.1 200.1.4.33R3(config-ipnat-pool)#address 200.1.4.35 200.1.4.68R3(config-ipnat-pool)#address
24、 200.1.4.70 200.1.4.100还有一个就是:R3(config)#ip nat pool VS2 123.0.0.1 123.0.0.2 prefix-length 24 type ? match-host Keep host numbers the same after translation rotary Rotary address poolrotary 这个关键字我们已经知道了,就是让POOL中的地址轮流的被翻译;而match-host这个关键字和rotary是不能共存的,后一个打上去的会把前面的覆盖掉,match-host的意思是让IL的主机位与IG的主机位相同,如1
25、23.0.0.2/24的IL就翻译成200.1.4.2/24的IG。rotary需要轮流翻译而match-host将IL和IG主机位对应起来。第六:NAT的服务分配:使用R1,R2,R3,R4假设R3来为R4提供服务,80端口提供WWW服务,而21端口提供FTP服务(R4看来),而实际上WWW服务是由R1来提供的,FTP服务由R2提供。为了便于观察,我们用R1的TELNET来模拟WWW,用R2的TELNET来模拟FTP。R3上的配置如下:interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0 ip nat inside!interfac
26、e Serial1/0 ip address 34.0.0.3 255.255.255.0 ip nat outside!ip nat inside source static tcp 123.0.0.2 23 interface Serial1/0 21ip nat inside source static tcp 123.0.0.1 23 interface Serial1/0 80在R4上进行演示:R4(config)#do telnet 34.0.0.3 80Trying 34.0.0.3, 80 . OpenUser Access VerificationPassword: R1R1
27、R1 R4(config)#do disc 1 Closing connection to 34.0.0.3 confirm=R4(config)#do telnet 34.0.0.3 21Trying 34.0.0.3, 21 . OpenUser Access VerificationPassword: R2R2R2第七:用ROUTE-MAP实现双出口的NAT:使用R1,R3,R4,R51.我们先看看如果使用的是扩展列表时的情况:interface Ethernet0/0 ip address 123.0.0.3 255.255.255.0 ip nat inside!interface
28、Serial1/0 ip address 34.0.0.3 255.255.255.0 ip nat outside!interface Serial1/1 ip address 35.0.0.3 255.255.255.0 ip nat outside!ip nat pool R4 200.1.4.1 200.1.4.3 netmask 255.255.255.0ip nat pool R5 200.1.5.1 200.1.5.3 prefix-length 24ip nat inside source list 101 pool R4ip nat inside source list 10
29、2 pool R5!access-list 101 permit ip host 123.0.0.1 host 34.0.0.4access-list 102 permit ip host 123.0.0.1 host 35.0.0.5下面我们从R1上先PING R4再PING R5:R1(config)#do ping 34.0.0.4Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:!Success rate is 100 percent (5/5),
30、 round-trip min/avg/max = 24/63/104 msR1(config)#do ping 35.0.0.5Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 35.0.0.5, timeout is 2 seconds:.Success rate is 0 percent (0/5)发现R4可以通而R5不通在R3上打开DEBUG IP NAT:R3#*Mar 1 02:22:29.527: NAT*: s=123.0.0.1-200.1.4.1, d=35.0.0.5 45R3#*Mar 1 02:22:31.535: NAT*: s=123.0.0.1-200.1.4.1, d=35.0.0.5 46R3#*Mar 1 02:22:33.559: NAT*: s=123.0.0.1-200.1.4.1, d=35.0.0.5 47R3#*Mar 1 02:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1