非常有意思的策略地址轉換故障排查

某客戶要求本地主機A10.1.1.1)新增訪問需求,原主機A在邊界路由器將地址轉換爲A123.1.1.30)後訪問外聯單位的主機B1.1.1.1),現新增加一個系統C3.3.3.3,需要將地址轉換爲A223.1.1.31)去訪問。如下圖所示網絡結構,R3模擬外聯單位路由器,R4模擬互聯網;

wKioL1YCKCjD2hWhAACxfqqRDQ0726.jpg


簡單來說就是一個策略NAT

A10.1.1.1-B1.1.1.1)將A地址轉換爲23.1.1.30

A10.1.1.1-B3.3.3.3)將A地址轉換爲23.1.1.31

首先定義匹配策略,需要定義源和目的,使用擴展訪問控制列表:

ip access-listextended nat30

 permit ip host 10.1.1.1 host 1.1.1.1

ip access-listextended nat31

 permit ip host 10.1.1.1 host 3.3.3.3

然後定義route-map

route-map nat30permit 10

 match ip address nat30    

route-map nat31permit 10

 match ip address nat31

最後定義nat

ip nat insidesource static 10.1.1.1 23.1.1.30 route-map nat30

ip nat insidesource static 10.1.1.1 23.1.1.31 route-map nat31

然後進行測試,竟然不通!!!

 

然後進行測試,竟然不通!!!

 

然後進行測試,竟然不通!!!

 

由於是生產環境,無法抓包,無法debug….

 

自己檢查了幾遍IP地址、調用的策略名等沒有任何問題,命令放入IOS同版本的模擬器去執行,測試無問題!

 

Show ip access 檢查匹配項,竟然無匹配,說明問題出在匹配上,繼續檢查aclIP地址等等等等……

 

開始懷疑其它nat轉換影響了該策略轉換,發現現網配置裏有這麼一條:

ip nat pool nat100 23.1.1.100 23.1.1.100 netmask255.255.255.255

access-list 110permit ip host 10.1.1.1 any

ip nat insidesource list 110 pool nat100 overload

 

也就是說本網段訪問其它地址時會被轉換成23.1.1.100PAT,在直覺中,策略的靜態一對一轉換轉換應該會優於PAT吧。。。

 

但是在access-list 110中插入deny iphost 10.1.1.1 host 1.1.1.1deny ip host 10.1.1.1 host 3.3.3.3後測試,沒有任何問題!

 

難道是PAT優先靜態轉換?

 

找到問題所在就好,測試了另外一種轉換方式也可以實現:

 

ip nat pool nat3023.1.1.30 23.1.1.30 netmask 255.255.255.0

ip nat pool nat3123.1.1.31 23.1.1.31 netmask 255.255.255.0

access-list 130permit ip host 10.1.1.1 host 23.1.1.30

access-list 131permit ip host 10.1.1.1 host 23.1.1.31

ip nat insidesource list 130 pool nat30 overload

ip nat insidesource list 131 pool nat31 overload

 

看來都是pat,大家級別一樣了,就最小匹配啦!

 

那麼留給大家的問題是,這兩種實現方式在實際應用中有什麼區別呢?

 

使用靜態route-map的轉換方式,可以用於對端需要主動發起訪問的情況,這樣當對端1.1.1.13.3.3.3可以主動訪問23.1.1.3023.1.1.31

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章