NAT技术四
一、使用ACL控制转换
如下图所示:网络A和网络B都连接到Internet。由于业务需要,两个网络需要相互访问,因而在路由器A和路由器B之间建立了IPsec ×××。当网络A和网络B之间互访时,则不必做NAT转换。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
路由器A配置如下:
Router(config)#access-list 100 deny ip 192.168.10.0 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0.0.0.255 192.168.20.0 0.0.0.255  (1)
Router(config)#access-list 100 permit ip 192.168.10.0 0.0.0.255 any
Router(config)#ip nat inside source list 100 interface e1 overload               (2)
Router(config)#int e0
Router(config-if)#ip add 192.168.10.1 255.255.255.0
Router(config-if)#ip nat inside
Router(config)#int e1
Router(config-if)#ip add 202.1.1.1 255.255.255.252(外部接口地址)
Router(config-if)#ip nat outside
命令详解:
(1)       访问控制列表100是用来匹配出进行NAT转换的数据包,第一个条目中从192.168.10.0192.168.20.0的数据包不需要进行转换,到其它网络的数据包需要转换(关于×××内容,以后有机会再说)。
(2)       符合访问控制列表的流量进行PAT转换

 

如果该单位能申请到较多的IP地址,路由器A的配置可能如下:
Router(config)#access-list 100 deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255  (1)
Router(config)#access-list 100 permit ip 192.168.10.0 0.0.0.255 any
Router(config)#ip nat pool Real_add 202.1.1.2 202.1.1.200 netmask 255.255.255.0    (2)
Router(config)#ip nat inside source list 100 pool Real_add                        (3)
Router(config)#int e0
Router(config-if)#ip add 192.168.10.1 255.255.255.0
Router(config-if)#ip nat inside
Router(config)#int e1
Router(config-if)#ip add 202.1.1.1 255.255.255.252(外部接口地址)
Router(config-if)#ip nat outside
命令详解:
(1)       匹配需要进行转换的流量
(2)       配置可以用来转换的地址池
(3)       进行NAT转换配置,符合访问控制列的的流量使用地址池中的地址进行转换。

 

这时候使用访问控制列表来进行NAT转换的时候,NAT转换表中形的条目是这样的:
Pro    Inside global      Inside local      Outside local    Outside global
---     202.1.1.1         192.168.10.10    ----            ----
也就是说,当使用访问控制列表来进行NAT转换时,不能形成一个完整的条目。这在某些应用中会产生问题,所以需要其它的技术,来形成一个完整的NAT转换条目。

 

二、使用路由图控制转换
如图所示,企业为了优化网络访问,申请了两个ISP的宽带线路。可以提高内部用户访问Inbernet的速度。
对于这个企业的需求,对网络的优化方案如下:
1)        当内部用户所需要的资源在ISP1时,需要从E1端口进行通讯;当内部用户所需要的资源在ISP2时,需要从E0端口通讯。
2)        不同ISP网络上所来的访问,需要从各自的线路返回。
在这种拓扑中,如果使用ACL来控制NAT的转换,就会出现问题,比如说我们作了如下配置:(假设从ISP1的网络为100.1.1.0/24,从ISP2的网络地址为200.1.1.0/24
NAT部分:
Router(config)#ip nat pool isp1 100.1.1.2 100.1.1.254 prefix-length 24
Router(config)#ip nat pool isp2 200.1.1.2 200.1.1.254 prefix-length 24
Router(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 100.1.1.0 0.0.0.255
Router(config)#access-list 101 permit ip 10.1.1.0 0.0.0.255 200.1.1.0 0.0.0.255
Router(config)#ip nat inside source list 100 pool isp1
Router(config)#ip nat inside source list 101 pool isp2
Router(config)#int e0
Router(config-if)#ip nat inside
Router(config)#int e1
Router(config-if)#ip nat outside
Router(config)#int e2
Router(config-if)#ip nat outside
命令详解:(略)
如果内部一台主机10.1.1.10对外部进行一次telnet访问后,NAT转换表中形的条目如下:
Pro  Inside global      Inside local       Outside local      Outside global
tcp  100.1.1.10:57767   10.1.1.1:57767     100.1.1.3:23       100.1.1.3:23
---   100.1.1.10         10.1.1.1           ---                ---
如果该主机现在想访问ISP2的一个资源,NAT表中会出现如下情况:
Pro Inside global      Inside local       Outside local      Outside global
tcp 100.1.1.10:24597   10.1.1.1:24597     200.1.1.3:23       200.1.1.3:23

tcp 100.1.1.10:26160   10.1.1.1:26160     100.1.1.3:23       100.1.1.3:23
--- 100.1.1.10         10.1.1.1           ---                ---
注意:这时候外出的数据包中的源IP地址是ISP1的地址。因而返回的数据包会从ISP2转到ISP1网络,再回到企业内部。所以在这种情况下,不能使用ACL来进行NAT的过滤。

 

可使用路由图来形成转换的配置如下:
Router(config)#ip nat pool isp1 100.1.1.10 100.1.1.100 prefix-length 24
Router(config)#ip nat pool isp2 200.1.1.10 200.1.1.100 prefix-length 24
Router(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 100.1.1.0 0.0.0.255
Router(config)#access-list 101 permit ip 10.1.1.0 0.0.0.255 200.1.1.0 0.0.0.255
Router(config)#route-map isp1-map permit 10                        (1)
Router(config-route-map)#match ip address 100                       (2)
Router(config)#route-map isp2-map permit 10                        (3)
Router(config-route-map)#match ip address 101
Router(config)#ip nat inside source  route-map  isp1-map  pool isp1    4
Router(config)#ip nat inside source  route-map  isp2-map  pool isp2
Router(config)#int e0
Router(config-if)#ip nat inside
Router(config)#int e1
Router(config-if)#ip nat outside
Router(config)#int e2
Router(config-if)#ip nat outside
命令详解:
(1)       建立ISP1的路由图
(2)       符合访问控制列表的流量适用于路由图
(3)       建立ISP2的路由图
(4)       调用路由图,建立NAT的转换映射
这种配置时,内部用户访问外部的时候,就形成了完整的NAT转换表。才能达到优化网络的目的。
Pro Inside global      Inside local       Outside local      Outside global
tcp 100.1.1.10:11787   10.1.1.1:11787     100.1.1.3:23       100.1.1.3:23
tcp 200.1.1.10:14877   10.1.1.1:14877     200.1.1.3:23       200.1.1.3:23