首先扔幾條命令:
ip nat inside source static 1.1.1.1 2.2.2.2
ip nat inside destination list 1 pool roc
ip nat outside source static 2.2.2.2 1.1.1.1
ip nat outside destination list 2 pool aking
解析以上幾條命令:
把從inside接口進入,從outside接口出去的數據包源地址1.1.1.1轉換爲2.2.2.2
把從inside接口進入,從outside接口出去的數據包list 1中目的地址轉換爲pool roc中地址;
把從outside接口進入,從inside接口出去的數據包源地址2.2.2.2轉換爲1.1.1.1
把從outside接口進入,從inside接口出去的數據包list 2中的目的地址轉換爲pool aking中地址;
1) 首先,我們看一下NAT中的四種地址:
inside local address,內網中源設備所使用的IP地址,此地址通常是一個私有地址;
inside global address,公用地址,用於將私有地址轉換爲此地址,通常是ISP所提供;
outside local address,目標設備所使用的地址,可以是目標設備用的私有地址,也可直接是公用地址;
outside global address,目標設備所使用的公用地址;
2) 接着,我們看一下NAT中的轉換方式:
從內網中設備上發出的IP包是以“inside local address”作爲源地址,以“outside local address”作爲目的地址。當數據包到達NAT設備的“inside”接口後,地址分別被翻譯成“inside global address”和“outside global address”並從“outside”接口送出。
外網設備上發出的IP包以“outside global address”作爲源地址,以“inside global address”作爲目的地址。當數據包到達NAT設備的“outside”接口後,地址分別被翻譯成“outside local address”和“inside local address”並從“inside”接口送出。
3) 接着,看一下圖,加深理解;
從圖上應當知道:外出IP包經過NAT轉換後,在公共網絡上傳輸的都是Global即全局地址。
4) 接着,看一下權威文檔對ip nat作用的解析:
① ip nat inside source 與 ip nat outside destination 等價
功能1:將從內到外的IP包的源地址進行轉換(內部局部—>內部全局)
功能2:將從外到內的IP包的目的地址進行轉換(內部全局—>內部局部)
② ip nat outside source 與 ip nat inside destination 等價
功能1:將從外到內的IP包的源地址進行轉換(外部全局—>外部局部)
功能2:將從內到外的IP包的目的地址進行轉換(外部局部—>外部全局)
③ ip nat inside destination
功能1:將從內到外的IP包的目的地址進行轉換(外部局部—>外部全局)
功能2:將從外到內的IP包源地址進行轉換(外部全局—>外部局部)
④ ip nat outside destination
功能1:將從外到內的IP包的目的地址進行轉換(內部全局—>內部局部)
功能2:將從內到外的IP包源地址進行轉換(內部局部—>內部全局)
5)呵呵,看到權威寫的後,是不是又有點迷糊了~~那好,看一下我的解釋吧;
ip nat inside source:
將內部局部地址轉換爲內部全局地址;數據方向inside->outside,在outside上執行轉換;
ip nat outside source:
將外部全局地址轉換爲外部局部地址;數據方向outside->inside,在inside上執行轉換;
ip nat inside destination:
將內部全局地址轉換爲內部局部地址;數據方向outside->inside,在outside上執行轉換
ip nat outside destination:
將外部局部地址轉換爲外部全局地址;數據方向inside->outside,在inside上執行轉換
6) 接着看一下NAT轉換表的觸發點所在接口:
inside source看成inside作爲源,那麼觸發點就是在inside接口;
inside destination看成inside作爲目的,那麼觸發點就是在outside接口;
outside source看成outside作爲源,那麼觸發點就是在outside接口;
outside destination看成outside作爲目的,那麼觸發點就是在inside接口;
7) 總結一下:不要IP nat X Y list 1 pool pool中的X Y分開來看,因爲X Y就是一個整體,其代表的意思是NAT範圍的四種地址,即內部局部地址,內部全局地址,外部全局地址,外部局部地址;
8) 最後:看一些經典的列子:
第一種情況:翻譯內網機器的地址
內網地址是 10.10.10.x 網段的地址,外網地址是 171.16.68.x 的地址。路由器行使 NAT 功能,它的 S0 口接內網, S1 口接外網。
內網的設備 10.10.10.1 需要和外網通信,它所使用的外網地址是 171.16.68.5; 換句話說,當路由器從外網收到一個去 171.16.68.5 的數據包時,它知道該數據包實際是要送給 10.10.10.1 的。
我們看到,由於外網地址和內網地址沒有衝突,因此對外網設備 171.16.68.1 來說,它的地址不需要再做翻譯了,即 outside local 等於 outside global . 這種情況包括了大部分的 NAT 應用,即只翻譯 inside 方地址,而不需要翻譯 outside 地址。
NAT 設備中應該維護一張類似於下表的地址映射:
Inside Global |
Inside Local |
Outside Local |
Outside Global |
171.16.68.5 |
10.10.10.1 |
171.16.68.1 |
171.16.68.1 |
下面不推薦看了,越看越會迷糊的。^-^
第二種情況是翻譯外網機器的地址,這種方式並不常用,因爲這樣會導致私有地址路由泄漏到公網上。但這個例子可以加深對 NAT 的理解。
這裏 NAT 設備對外網進來的包的源地址做翻譯,翻譯成與內網地址在同網段的地址。即外部機器 172.16.68.1 在內部機器看來是 10.10.10.5
Inside Global |
Inside Local |
Outside Local |
Outside Global |
10.10.10.1 |
10.10.10.1 |
10.10.10.5 |
171.16.68.1 |
第三種情況:對內網機器和外網機器都要做地址翻譯,此時通常兩部分的地址有衝突或重疊。因此 NAT 設備對數據的源和目的都做了地址翻譯。在這種情況下,雙方看到的地址都不是對方的真實地址。
Inside Global |
Inside Local |
Outside Local |
Outside Global |
171.16.68.5 |
10.10.10.1 |
10.10.10.5 |
171.16.68.1
|