NAT技術四
一、使用ACL控制轉換
如下圖所示:網絡A和網絡B都連接到Internet。由於業務需要,兩個網絡需要相互訪問,因而在路由器A和路由器B之間建立了IPsec ***。當網絡A和網絡B之間互訪時,則不必做NAT轉換。
路由器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 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.0到192.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