ip nat inside/outside source/destination 詳解

首先扔幾條命令:

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

 

 

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