NAT 详解
?
NAT技術(一、二、三、四、五) 系列:https://blog.51cto.com/wwwcisco/category1.html
CCNA學習筆記之NAT:http://sweetpotato.blog.51cto.com/533893/1392884
網絡地址轉換NAT原理及應用:http://blog.csdn.net/xiaofei0859/article/details/6630467
NAT技術基本原理與應用:http://www.cnblogs.com/dongzhuangdian/p/5105844.html
NAT地址轉換原理全攻略:http://blog.csdn.net/lycb_gz/article/details/12079455
NAT基本結構和分類:http://blog.csdn.net/lycb_gz/article/details/11999459
?
?
NAT?
?
一、概述
?
? ? ? ? NAT ( Network?Address?Translation ) 中文意思是"網絡地址轉換",它是一個IETF(Internet?Engineering?Task?Force,?Internet工程任務組) 標準,允許一個整體機構以一個公用IP(Internet?Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術。NAT 可以讓那些使用私有地址的內部網絡連接到Internet或其它IP網絡上。NAT路由器在將內部網絡的數據包發送到公用網絡時,在IP包的報頭把私有地址轉換成合法的IP地址。
?
RFC1918規定了三塊專有的地址,作為私有的內部組網使用:
- A類:10.0.0.0—10.255.255.255 ? ? ?10.0.0.0/8
- B類:172.16.0.0—172.31.255.255 ??172.16.0.0/12
- C類:192.168.0.0—192.168.255.255?192.168.0.0/16
這三塊私有地址本身是可路由的,只是公網上的路由器不會轉發這三塊私有地址的流量;當一個公司內部配置了這些私有地址后,內部的計算機在和外網通信時,公司的邊界路由會通過NAT或者PAT技術,將內部的私有地址轉換成外網IP,外部看到的源地址是公司邊界路由轉換過的公網IP地址,這在某種意義上也增加了內部網絡的安全性。
? ? ? ? Basic NAT是一種把一組IP地址映射成另一組IP地址的方法,映射的過程在IP中繼設備上完成,對用戶完全透明。NAPT則要復雜一些,它把許多(不能太多)IP地址連同TCP/UDP端口號映射到單獨一個IP地址和端口號上。無論是Basic NAT還是NAPT都提供一種把內部的私有地址轉換成在公網上可用的全球唯一IP地址的方法。
?
分類
?
NAT有三種類型:
NAPT 是使用最普遍的一種轉換方式,在 HomeGW 中也主要使用該方式。它又包含兩種轉換方式:SNAT和DNAT。
? ? ? ? (1) 源NAT(Source NAT,SNAT):修改數據包的源地址。源NAT改變第一個數據包的來源地址,它永遠會在數據包發送到網絡之前完成,數據包偽裝就是一具SNAT的例子。
? ? ? ? (2) 目的NAT(Destination NAT,DNAT):修改數據包的目的地址。Destination NAT剛好與SNAT相反,它是改變第一個數據懈的目的地地址,如平衡負載、端口轉發和透明代理就是屬于DNAT。
?
對于 NAT (?網絡地址轉換 ) 技術來講,最重要的一點是,在配置 NAT 的路由器上形成了 NAT 轉換表,這個轉換表的形成是非常關鍵的。配置 NAT 后,能形成正確的轉換表,那么我們的工作就算成功了。
?
NAT 的三個方向:
NAT 在outside口生效,所有在inside口需要先路由,在 outside 口先 nat。
ip nat inside source:
將內部局部地址轉換為內部全局地址;數據方向inside->outside,在outside上執行轉換;
ip nat inside destination:
將內部全局地址轉換為內部局部地址;數據方向outside->inside,在outside上執行轉換
ip nat outside source:
將外部全局地址轉換為外部局部地址;數據方向outside->inside,在outside上執行轉換;
?
NAT 的應用分類:
ip nat source:
- (1) 靜態 nat 的映射:永遠一個 ip 對應另外一個 ip 。?
? ? ? ? ? 命令:ip nat inside source static A.B.C.D A.B.C.D??? - (2) 動態 nat 的映射:每次一個 IP 會對應另外一個公網的 IP;
? ? ? ? ? 命令:ip nat inside source list 2 pool qing - (3) 動態 PAT 映射:pool 里面只有一個 IP。
? ? ? ? ? 命令:ip nat inside source list 2 pool qing overload - (4) 靜態 PAT 映射:
? ? ? ? ? 命令:
? ? ? ? ? ? ? ? ip nat inside source list 3 interface fastEthernet 0/0 overload
? ? ? ? ? ? ? ? ip nat inside destination:
? ? ? ? ? ? ? ? tcp 負載均衡,外網主動發起流量訪問內網服務器。只用動態,沒有靜態。
? ? ? ? ? ? ? ? ip nat inside destination list 10 pool feng
? ? ? ? ? ? ? ? ip nat outside source:
? ? ? ? ? ? ? ? 當兩端同時做 nat 既 inside 和 outside 需要同時翻譯并出現地址沖突的時候,
? ? ? ? ? ? ? ? 需要用 outside source 和其他同時命令同時實現。
Cisco 路由器 配置 3 種 NAT 的主要命令:
Cisco路由器配置3中NAT的主要命令:靜態NAT:1、指定NAT內部接口在內網相應接口的接口配置模式下執行:ip nat inside2、指定NAT外部接口在外網相應接口的接口配置模式下執行:ip nat outside3、在內部本地地址與內部全局地址之間建立靜態地址轉換關系:ip nat insde source static 內部本地地址 內部全局地址動態地址NAT:1、指定NAT內部接口在內網相應接口的接口配置模式下執行:ip nat inside2、指定NAT外部接口在外網相應接口的接口配置模式下執行:ip nat outside3、在全局配置模式下,定義一個標準的access-list規則,聲明允許哪些內部本地地址可以進行動態地址轉換:access-list list-number permit 源地址 通配符其中,list-number為1-99之間的一個任意整數。4、在全局配置模式下,定義內部全局地址池:ip nat pool 地址池名 起始IP地址 終止IP地址 netmask 子網掩碼其中,地址池名可以任意設定,但最好有一定的說明意義。5、在全局配置模式下,定義符合先前定義的access-list規則的IP數據包與先前定義的地址池中的IP地址進行轉換:ip nat inside source list list-number pool 內部全局地址池名網絡地址端口轉換NAPT:1、指定NAT內部接口在內網相應接口的接口配置模式下執行:ip nat inside2、指定NAT外部接口在外網相應接口的接口配置模式下執行:ip nat outside3、在全局配置模式下,定義內部全局地址池:ip nat pool 地址池名 起始IP地址 終止IP地址 netmask 子網掩碼其中,地址池名可以任意設定,但最好有一定的說明意義。4、在全局配置模式下,定義一個標準的access-list規則,聲明允許哪些內部本地地址可以進行復用地址轉換:access-list list-number permit 源地址 通配符其中,list-number為1-99之間的一個任意整數。5、在全局配置模式下,定義符合先前定義的access-list規則的IP數據包與先前定義的地址池中的IP地址進行復用地址轉換:ip nat inside source list list-number pool 內部全局地址池名 overload?
?
二、工作原理
?
了解原理之前先了解下 NAT 術語。
在配置了 NAT 的路由器上,可以把整個網絡分成兩部分:內部網絡??和?外部網絡。
?
NAT 技術中有四個術語:
local 、global 是相對于端口狀態說的,local 是 inside 部分可以被路由的,global 是 outside 部分可以被路由的。
網絡地址轉換常常和代理服務搞混,但是它們之間有明確的不同。NAT 對源和目的計算機都是透明的。沒有任何一方會意識到它正在和第三方設備打交道。但是代理服務卻不是透明的。源計算機知道它正向代理服務器發起一個請求,而且你還必須進行配置才能這樣做。目的計算機會認為代理服務器就是與它直接通信的源計算機。還有,代理服務通常工作在 OSI 參考模型的第 4 層 (傳輸層) 或更高,而 NAT 工作在第 3 層 (網絡層)。由于代理服務工作在更高層,所以通常它將比 NAT 要慢。
NAT 工作在 OSI 參考模型的網絡層 (第3層) 是有道理的,因為路由器就工作在這一層:
?
NAT 原理
? ? ? ? NAT設備維護一個狀態表,用來把非法的IP地址映射到合法的IP地址上去。每個包在NAT設備中都被翻譯成正確的IP地址,發往下一級,這意味著給處理器帶來了一定的負擔。但對于一般的網絡來說,這種負擔是微不足道的。在運行NAT的路由器中,當數據包被傳送時,NAT可以轉換數據包的IP地址和TCP/UDP數據包的端口號。設置NAT功能的路由器至少要有一個Inside(內部)端口和一個Outside(外部)端口。內部端口連接內網的用戶,外部端口一般連接到Internet。當IP數據包離開內部網絡時,NAT負責將內網IP源地址(通常是專用地址)轉換為合法的公共IP地址。當IP數據包進入內網時,NAT將合法的公共IP目的地址轉換為內網的IP源地址。
? ? ? ??NAT的基本工作原理是:當私有網主機和公共網主機通信的IP包經過NAT網關時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉換。
? ? ? ? 當內部網絡中的一臺主機想傳輸數據到外部網絡時,它先將數據包傳輸到NAT路由器上,路由器檢查數據包的報頭,獲取該數據包的源IP信息,并從它的NAT映射表中找出與該IP匹配的轉換條目,用所選用的內部全局地址(全球唯一的IP地址)來替換內部局部地址,并轉發數據包。?
? ? ? ? 當外部網絡對內部主機進行應答時,數據包被送到NAT路由器上,路由器接收到目的地址為內部全局地址的數據包后,它將用內部全局地址通過NAT映射表查找出內部局部地址,然后將數據包的目的地址替換成內部局部地址,并將數據包轉發到內部主機。
? ? ? ? 其實主要就是 修改 IP 數據包中的源 IP 地址,或目的 IP 地址。主要目的是把 RFC1918所提議的私有地址轉變成在 Internet 上可路由的公有合法地址。對于某些有限的應用(如 DNS、 FTP 等),它也可以修改 IP 數據包有效載荷中的地址。由于應用的復雜性, NAT 目前支持的應用有限,當然,如果需要,完全可以針對新的應用做相應的開發工作。
? ? ? ? 總體來說,NAT進行地址轉換的過程就是“本地地址”與“全局地址”之間的轉換過程,無論數據包是從內部網絡發往外部網絡,還是從外部網絡發往內部網絡。不同的只是本地地址和全局地址所對應的網絡不同,以及數據包重新封裝的源和目的地址不同。具體如圖所示。
?
NAT基本地址轉換原理
這個過程是通過NAT中的本地址與全局地址映射條目來實現的,所以事先要在NAT路由器上配置這樣的映射條目。
?
NAT中的轉換方式:
?
? ? ? ? 當內部網絡用戶訪問外部網絡時,所進行的是“內部本地地址”和“內部全局地址”之間的轉換。
? ? ? ? 在NAT路由器接收到來自內部網絡主機發送的數據包時,其源IP地址(SA)為“內部本地地址”,目的IP地址(DA)為“外部本地地址”。當數據包被轉發到外部網絡時,數據包的源IP地址(SA)就會轉變為“內部全局地址”,而目的IP地址(DA)被轉變為“外部全局地址”。也就是把數據包的所有源IP地址(SA)和目的IP地址(DA)全部由本地地址轉換為全局地址。如圖6-9上部分數據包IP地址轉換示意圖。
? ? ? ? 相反,當外部網絡用戶訪問內部網絡時,所進行的是“外部本地地址”和“外部全局地址”之間的轉換。
? ? ? ? 在NAT路由器接收到來自外部網絡主機發送的數據包時,其源IP地址(SA)就是“外部全局地址”,目的IP地址(DA)就是“內部全局地址”。相當于由內部網絡向外部網絡發送數據包時數據包中的源IP地址(SA)和目的IP地址(DA)的互換。而當數據包被路由器轉發到本地網絡時,源IP地址(SA)被轉變為“外部本地地址”,目的IP地址(DA)被轉變為“內部本地地址”,也相當于由內部網絡向外部網絡發送數據包時數據包中的源IP地址(SA)和目的IP地址(DA)的互換。如圖6-9下部分數據包IP地址轉換示意圖
?
NAT基本IP地址轉換原理
以上是從總體上介紹NAT的IP地址轉換原理的,實際NAT應用有時并不需要對源IP地址和IP地址進行全面替換,僅需要對源IP地址或者僅需要對目的IP地址進行轉換即可達到所需的目的。下面予以介紹。
?
內部地址NAT轉換原理
? ? ? ? 多數情況下使用NAT的目的就是為了使內部網絡中的多個用戶能使用一個注冊IP地址訪問外部網絡,所以僅需要配置內部地址NAT轉換。即通過ip nat inside source命令實現“內部本地地址”到“內部全局地址”之間的轉換(既可以采用靜態NAT方式實現,也可以采取動態NAT方式實現),只需要定義內部本地址與內部本局地址的映射。
?
一個簡單的 NAT 轉換示例
這是一個簡單的NAT轉換示例。要實現以下目的:當NAT路由器的內部網絡s0接口上接收到一個源地址為內部本地地址10.10.10.1,目的IP地址為外部本地地址171.16.68.1的數據包時,在轉發到s1接口時,原來數據包源地址的內部本地地址10.10.10.1被轉換成內部全局地址171.16.68.5,但目的地址不變,然后繼續發送。在這個過程中,所進行的只是數據包中源IP地址的轉換,由內部本地地址向內部全局地址轉換,且只是內部地址之間的轉換。
? ? ? ? 相反,當在NAT路由器的外部網絡接口s1上接收源地址為172.16.68.1外部本地地址,目的地址為內部全局地址172.16.68.5的外部服務器響應數據包時,目的地址將被轉換成10.10.10.1這個內部本地地址,然后繼續發送。在這個過程中,所進行的只是數據包中目的IP地址的轉換,由內部全局地址向內部本地地址轉換,也只是內部地址之間的轉換。
下面僅以靜態NAT轉換方式為例介紹內部地址轉換的配置步驟,詳細的NAT配置方法將在本章后面具體介紹。
(1)使用“ip nat inside source static”全局配置命令啟用基于內部源IP地址的靜態NAT IP地址轉換。也就是定義內部本地地址和內部全局地址,使它們之間形成一一對應的映射關系。
Router(config)#ip nat inside source static 10.10.10.1 171.16.68.5 !--- 在內部本地地址10.10.10.1與內部全局地址171.16.68.5之間建立靜態NAT映射關系,!--- 使內部網絡主機知道要以171.16.68.5這個地址到達外部網絡主機(2)使用以下兩條語句配置路由器的s0為NAT的內部網絡接口。
Router(config)#interface s0 !--- 進入s0串口配置模式 Router(config-if)#ip nat inside !--- 把s0串口指定為內部網絡接口(3)使用以下兩條語句配置路由器的s1為NAT的外部網絡接口。
Router(config)#interface s1 !--- 進入s1串口配置模式 Router(config-if)#ip nat outside !--- 把s1串口指定為外部網絡接口(4)使用show ip nat translations特權模式命令驗證上述進行的路由器NAT配置。輸出信息中顯示以上配置的NAT條目配置為:內部本地地址為10.10.10.1,內部全局地址為171.16.68.5。這與上面的配置是一致的,證明配置是成功的。
Router#show ip nat translations !--- 在特權模式下顯示當前路由器NAT配置Pro Inside global Inside local Outside local Outside global --- 171.16.68.5 10.10.10.1 --- ---此時如果對外部網絡目的主機進行ping操作,就會有數據包從內部網絡轉發到外部網絡。然后再在路由器特權模式下執行“show ip nat translations”命令,顯示的NAT信息如下。多了一條icmp協議類型數據包(執行ping操作后加的)顯示,但因為此時沒有配置外部網絡的本地地址和全局地址,所以顯示的外部本地地址和外部全局地址都是一樣的,都是ping操作目的主機地址171.16.68.1。
Router#show ip nat translationsPro Inside global Inside local Outside local Outside global icmp 171.16.68.5:15 10.10.10.1:15 171.16.68.1:15 171.16.68.1:15 --- 171.16.68.5 10.10.10.1 --- ---通過以上配置后,從內部網絡發往外部網絡的數據包只是源地址(SA)將在經過路由器后進行轉換(由內部本地地址10.10.10.1轉換成內部全局地址171.16.68.5),但目標地址(DA)不變,但從外部網絡發往內部網絡的應答數據包的源地址沒有改變,只是經過路由器后的數據包目的地址發生了轉換(由內部全局地址172.16.68.5轉換成內部本地地址10.10.10.1),但源地址(SA)不變。因為此時還沒有為NAT路由器配置外部網絡的本地地址和全局地址轉換。
此時,數據包在內、外部網絡中的源地址、目的地址的轉換方式參如圖
【經驗之談】在內部地址的NAT轉換中,無論數據包來自哪里,數據包中地址變化的只是內部地址之間的轉換。但要注意,地址變化所對應的是源地址,還是目的地址是要看數據包是來自內部網絡,還是來自外部網絡:如果是來自內部網絡,轉換是源地址;如果是來自外部網絡,轉換的是目的地址。
?
外部地址NAT轉換原理
當公司服務器位于內部網絡,使用內部網絡私有IP地址,為了方便外部網絡用戶對內部網絡服務器進行訪問,則需要使用ip nat outside source命令配置“外部全局地址”與“外部本地地址”之間的轉換(既可以采用靜態NAT方式實現,也可以采取動態NAT方式實現)。外部地址NAT轉換與上節介紹的內部地址NAT轉換是相反的,它僅需要定義外部地址(包括外部本地地址和外部全局地址)。
下面同樣以上面那個簡單的NAT轉換示例進行介紹。本示例要實現的目的是:當NAT路由器外部網絡接口s1接收到來自外部網絡用戶發送的源IP地址為外部全局地址171.16.68.1,目的地址為外部本地地址10.10.10.1的數據包在被路由器轉發到s0接口時,數據包中的源IP地址轉變為外部本地地址10.10.10.5(即由外部全局地址轉換成外部本地地址),目的IP地址不變,即也只是源IP地址的轉換;而由內部網絡用戶發送的響應數據包中,卻只是目的IP地址(即由外部本地地址轉換為外部全局地址)的轉換,源IP地址不變。
下面僅以靜態NAT轉換方式為例介紹外部地址NAT轉換的配置步驟,詳細的NAT配置方法將在本章后面具體介紹。
(1)使用ip nat outside source static全局配置命令啟用基于外部源IP地址的靜態NAT IP地址轉換。也就是定義外部全局地址和外部本地地址之間的映射關系。
Router(config)#ip nat outside source static 171.16.68.1 10.10.10.5 !--- 在外部全局地址171.16.68.1與外部本地地址10.10.10.5之間建立靜態NAT轉換關系,!--- 使外部網絡主機知道要以10.10.10.1這個地址到達內部網絡主機(2)使用以下兩條語句配置路由器的s0作為NAT的內部網絡接口。
Router(config)#interface s0 Router(config-if)#ip nat inside(3)使用以下兩條語句配置路由器的s1作為NAT的外部網絡接口。
Router(config)#interface s1 Router(config-if)#ip nat outside【注意】對于特定的NAT網絡來說,路由器上的內、外部網絡接口是固定的,不會隨著通信方向的改變而改變。如在上節介紹的內部地址的NAT轉換示例中,我們同樣是把s0接口作為內部網絡接口,s1接口作為外部網絡接口。
(4)使用show ip nat translations特權模式命令驗證上述進行的路由器NAT配置。從中可以看出,此時NAT的外部本地地址為10.10.10.5,外部全局地址為171.16.68.1。這與上面的配置是一致的,證明配置是成功的。
Router#show ip nat translationsPro Inside global Inside local Outside local Outside global--- --- --- 10.10.10.5 171.16.68.1同樣,如果此時執行一個從外部網絡主機(171.16.68.1)到內部網絡主機(10.10.10.1)的ping操作,然后再在路由器特權模式下執行“show ip nat translations”命令,則顯示如下結果。因為此時僅配置了外部本地地址和外部全局地址,所以結果中顯示的內部本地地址和全局地址都是一樣的,都是ping操作目的主機地址10.10.10.1。
Router#show ip nat translationsPro Inside global Inside local Outside local Outside global--- --- --- 10.10.10.5 171.16.68.1 icmp 10.10.10.1:37 10.10.10.1:37 10.10.10.5:37 171.16.68.1:37與上節介紹的僅配置內部地址相反,此處從外部網絡發往內部網絡的數據包的源IP地址(SA)將在經過路由器后進行轉換(由外部全局地址171.16.68.1轉換成外部本地地址10.10.10.5),但目標地址(DA)不變;但從內部網絡發往外部網絡的響應數據包的源IP地址沒有改變,只是經過路由器后的數據目的IP地址發生了改變(由外部本地地址10.10.10.5轉換成外部全局地址171.16.68.1)。因為此時還沒有為NAT路由器配置內部本地地址和內部全局地址轉換。此時,數據包在內、外部網絡中的源IP地址、目的IP地址的轉換方式如圖6-12所示。
【經驗之談】在僅進行外部地址NAT轉換時,無論數據包來自哪里,數據包中地址變化的只是外部地址之間的轉換。同樣也需注意,地址變化所對應的是源IP地址,還是目的IP地址是要看數據包是來自內部網絡,還是來自外部網絡:如果來自內部網絡,轉換是目的IP地址;如果來自外部網絡,轉換的是源IP地址。這與前面的內部地址NAT轉換是對應相反的。
外部地址NAT轉換示例
?
內/外部地址NAT轉換原理
? ? ? ? 下面介紹同時進行內、外部地址NAT轉換原理及基本配置步驟。它需要同時使用ip nat inside source命令定義“內部全局地址”與“內部本地地址”之間的轉換,及使用ip nat outside source命令定義“外部全局地址”和“外部本地地址”之間的轉換(既可以采用靜態NAT方式實現,也可以采取動態NAT方式實現)。這樣,無論數據包是從哪個方向發送的,數據包中的源地址和目的地址都將同時發生變化。主要應用于重疊網絡(Overloading Network)中的NAT應用中。具體配置方法將在本章6.6節介紹。
? ? ? ? 同樣以那個簡單的NAT轉換示例的基本網絡結構為例進行介紹。在下面的示例中,通過配置可以實現:當NAT路由器內部網絡接口s0接收到來自內部網絡,源IP地址為內部本地地址10.10.10.1,目的IP地址為外部本地地址10.10.10.5的數據包,在轉發到s1接口前,將這個數據包中的源IP地址將轉換成內部全局地址171.16.68.5,目的IP地址將被轉換成外部全局地址171.16.68.1。
? ? ? ? 當NAT路由器外部接口s1接收到來自外部網絡,源IP地址為外部全局地址171.16.68.1,目的地址為內部全局地址172.16.68.5的數據包時,將源IP地址轉換成外部本地地址10.10.10.5,將目的IP地址將被轉換成內部本地址10.10.10.1。
? ? ? ? 下面僅以靜態NAT轉換方式(可以采用動態NAT轉換方式)為例介紹內、外部地址同時轉換的配置步驟,詳細的靜態,或者動態NAT轉換配置方法將在本章后面具體介紹。
同樣,如果此時分別執行一個從內部主機到外部主機,以及從外部主機到內部主機的ping操作,然后再在路由器特權模式下執行“show ip nat translations”命令,則顯示如下結果。因為此時同時配置了內、外部本地地址和全局地址,所以結果中顯示了兩條NAT配置項,分別顯示了與外部網絡和內部網絡中的本地地址和全局地址轉換對應的ping操作icmp消息:與外部本地地址和全局地址對應的Ping操作ICMP消息中顯示內部網絡中的本地地址和全局地址是一樣的,而與內部網絡本地地睛和全局地址對應的Ping操作ICMP消息中顯示外部網絡中的本地地址和全局地址是一樣的,都是對應的Ping操作目的主機地址。
Router#show ip nat translationsPro Inside global Inside local Outside local Outside global --- --- --- 10.10.10.5 171.16.68.1 icmp 10.10.10.1:4 10.10.10.1:4 10.10.10.5:4 171.16.68.1:4 icmp 171.16.68.5:39 10.10.10.1:39 171.16.68.1:39 171.16.68.1:39 --- 171.16.68.5 10.10.10.1 --- ---經過以上配置后,數據包發送(無論是從哪個方面發送的)時不僅源IP地址會發生變化,目標IP地址也會同時發生變化,如圖6-13所示。
在由內部網絡向外部網絡發送的數據包中,源IP地址是由內部本地地址(10.10.10.1)轉換成內部全局地址(172.16.68.5),目的IP地址由外部本地地址(10.10.0.5)轉換成外部全局地址(171.16.68.1);在由外部網絡向內部網絡發送的數據包中,源IP地址是由外部全局地址(171.16.68.1)轉換成外部本地地址(10.10.0.5),目的IP地址由內部全局地址(172.16.68.5)轉換成內部本地地址(10.10.10.1)。兩個方向的數據包中的源IP地址和目的IP地址的轉換分別如圖6-14和圖6-15所示。
圖6-13 同時配置了內、外部地址轉換后的NAT轉換示例
圖6-14?數據包從內部網絡發到外部網絡時的地址轉換方式 圖6-15?數據包從外部網絡發到內部網絡時的地址轉換方式
從圖6-14和圖6-15可以看出,圖6-14中的源IP地址轉換過程恰好是圖6-15中的目的地址轉換的反過程。同理,圖6-14中的目的IP地址轉換過程恰好是圖6-15中的源IP地址轉換的反過程。
? ? ? ? 另外,經過細心分析我們可以發現,在由內部網絡發往外部網絡的數據包中所進行的地址轉換都是由本地地址轉換為全局地址,也就是都是由內部網絡一側的地址向外部網絡一側的地址轉換;相反,在由外部網絡發往內部網絡的數據包中所進行的地址轉換都是由全局地址轉換為本地地址,也就是都是由外部網絡一側的地址向內部網絡一側的地址轉換。
NAT配置中的常用命令:?
ip nat {inside|outside}:接口配置命令。以在至少一個內部和一個外部接口上啟用NAT。ip nat inside source static local-ip global-ip :全局配置命令。在對內部局部地址使用靜態地址轉換時,用該命令進行地址定義。 access-list access-list-number {permit|deny} local-ip-address :使用該命令為內部網絡定義一個標準的IP訪問控制列表。 ip nat pool pool-name start-ip end-ip netmask netmask [type rotary] :使用該命令為內部網絡定義一個NAT地址池。 ip nat inside source list access-list-number pool pool-name [overload] :使用該命令定義訪問控制列表與NAT內部全局地址池之間的映射。 ip nat outside source list access-list-number pool pool-name [overload] :使用該命令定義訪問控制列表與NAT外部局部地址池之間的映射。 ip nat inside destination list access-list-number pool pool-name :使用該命令定義訪問控制列表與終端NAT地址池之間的映射。 show ip nat translations : 顯示當前存在的NAT轉換信息。 show ip nat statistics : 查看NAT的統計信息。 show ip nat translations verbose : 顯示當前存在的NAT轉換的詳細信息。 debug ip nat : 跟蹤NAT操作,顯示出每個被轉換的數據包。 Clear ip nat translations * : 刪除NAT映射表中的所有內容.?
?
三、基本配置
?
- 1、 靜態轉換:Router(config)#ip nat inside source static 內部本地地址 內部全局地址
- 2、 動態轉換:
? ? ? ? Router(config)#ip nat pool 地址池 起始地址 最后地址 netmask 子網掩碼
? ? ? ? Router(config)#access-list 表號 permit 網絡號 反掩碼
? ? ? ? Router(config)#ip nat inside source list 表號 pool 地址池 - 3、 PAT:
? ? ? ? Router(config)#access-list 表號 permit 網絡號 反掩碼
? ? ? ? Router(config)#ip nat inside source list 表號 interface 外部接口
?
?
四、簡單案例
?
如下圖所示,一個中小型企業網絡,使用一臺路由器和外部相連接,企業有 WWW 服務器和 FTP 服務器,用來提供給外部用戶訪問。企業內部員工也需要和Internet 連接。如果企業能夠申請到多個公網地址(六個公網地址: 202.1.1.1-202.1.1.6)。
配置命令和命令解釋:
配置:根據企業目前需求,我們可以做如下配置:(假設 ISP 端路由器使用 202.1.1.6) Router(config)#int e0 (1) Router(config-if)#ip add 10.1.1.254 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.248 Router(config-if)#ip nat outside Router(config)#ip nat inside source static 10.1.1.1 202.1.1.2 (2) Router(config)#ip nat inside source static 10.1.1.2 202.1.1.3 (3) Router(config)#access-list 1 permit 10.1.1.0 0.0.0.255 (4) Router(config)#ip nat inside source list 1 interface e1 overload (5) Router(config)#ip route 0.0.0.0 0.0.0.0 202.1.1.6 (6)命令解釋: (1):配置路由器接口 IP 地址及標記 NAT 的內部端口和外部端口 (2):當外部用戶訪問服務器 202.1.1.2,路由器使用靜態 NAT 的方式轉到 10.1.1.1 (3):當外部用戶訪問服務器 202.1.1.3,路由器使用靜態 NAT 的方式轉到 10.1.1.2 (4):配置標準訪問控制列表,匹配內部 10.1.1.0/24 網絡的主機 (5):配置 PAT,允許內部 10.1.1.0/24 用戶能夠進行 NAT 轉換 (6):配置靜態路由,使經過 NAT 轉換后的數據包能夠發送至 ISP注意事項:當配置靜態 NAT 后, NAT 轉換表中就會形成轉換條目。動態 NAT和 PAT 在配置映射后,在轉換表中并沒有形成條目。當內部符合訪問控制列表1 條件的數據包到達路由器后,觸發轉換條件,該數據包要求查找轉換表,如果轉換表中有轉換條目存在,使用該條目轉換,如果沒有轉換條目,則根據映射創建條目并轉換?
?
NAT 技術二
?
一、 端口地址重定向:
?
如圖所示,該企業申請 ADSL 上網,只獲得了一個公有合法 IP 地址。為了企業的應用,可以使用端口地址重定向功能來完成。
配置命令和命令解釋
Router(config)#int e0 (1) Router(config-if)#ip add 10.1.1.254 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 Router(config)#ip nat inside source static tcp 10.1.1.1 80 202.1.1.1 80 (2) Router(config)#ip nat inside source static tcp 10.1.1.2 21 202.1.1.1 21 (3) Router(config)#ip nat inside source static tcp 10.1.1.2 20 202.1.1.1 20 Router(config)#access-list 1 permit 10.1.1.0 0.0.0.255 (4) Router(config)#ip nat inside source list 1 interface e1 overload (5) Router(config)#ip route 0.0.0.0 0.0.0.0 202.1.1.2 (6)命令解釋: (1):配置路由器接口 IP 地址及標記 NAT 的內部端口和外部端口 (2):當外部用戶訪問服務器 202.1.1.1:80,路由器使用靜態 NAT 的方式轉到 10.1.1.1:80 (3):當外部用戶訪問服務器 202.1.1.1:21,路由器使用靜態 NAT 的方式轉到 10.1.1.1:21(由于 FTP 問題較復雜,這兒僅以一種 FTP 的應用為例) (4):配置標準訪問控制列表,匹配內部 10.1.1.0/24 網絡的主機 (5):配置 PAT,允許內部 10.1.1.0/24 用戶能夠進行 NAT 轉換 (6):配置靜態路由,使經過 NAT 轉換后的數據包能夠發送至 ISP?
?
二、 地址交叉(地址重疊):
?
如果兩個網絡當前的網絡地址出現相同的情況,且目前又需要兩個網絡之間相互直接通訊。這種情況被稱之為地址重疊。如下圖所示:
這時候可能出現多種情況:兩個網絡中都有雙方需要訪問的服務器只有一方網絡中有雙方需要訪問的服務器(如上圖)
不同的網絡情況,配置時略有不同。概括起來講,解決這個問題有兩種方案:
1、 靜態轉換 Router(config)#ip nat inside source static network 10.1.1.0 192.168.1.0 /24 (1) Router(config)#ip nat outside source static network 10.1.1.0 192.168.2.0 /24 (2) Router(config)#ip route 0.0.0.0 0.0.0.0 e1 Router(config)#int e0 Router(config-if)#ip add 10.1.1.254 255.255.255.0 Router(config-if)#ip nat inside Router(config)#int e1 Router(config-if)#ip nat outside 注解: (1):把內部網絡 10.1.1.0 轉換成 192.168.1.0,也就是說,對于外部網絡而言,內部網絡的地址是 192.168.1.0/24 (2):把外部網絡 10.1.1.0 傳輸來的數據全部修改成 192.168.2.0網段,也就是說,對于內部網絡而言,外部真實 10.1.1.0 網絡被認為是 192.168.2.0 網絡。2、 動態轉換 Router(config)#access-list 1 permit 10.1.1.0 0.0.0.255 Router(config)#ip nat pool in-pool 192.168.1.1 192.168.1.254 netmask 255.255.255.0 Router(config)#ip nat poolout-pool 192.168.2.1 192.168.2.254 netmask 255.255.255.0 Router(config)#ip nat inside list 1 pool in-pool Router(config)#ip nat outside list 1 pool out-pool Router(config)#ip route 0.0.0.0 0.0.0.0 e1 Router(config)#int e0 Router(config-if)#ip add 10.1.1.254 255.255.255.0 Router(config-if)#ip nat inside Router(config)#int e1 Router(config-if)#ip nat outside 該配置所得到的效果靜態轉換一樣。在此不再多說。?
?
三、 負載分擔(流量分配):
?
隨著企業的發展,企業的 WWW 服務器訪問的用戶越來越多,一臺服務器已經不能滿足當前的需要,更換一臺高端服務器價格不菲,這時候可以使用 NAT 的流量分擔功能。來解決企業當前的問題。如圖所示:兩臺 Web服務器承擔著相當的 WWW 服務功能。對于外部用戶而言,他們只知道該企業的 WWW 地址是 200.1.1.1
配置命令和命令解釋
基本配置如下: Router(config)#ip nat pool wwwserver 10.1.1.1 10.1.1.2 prefix-length 24 type rotary Router(config)#access-list 1 permit 200.1.1.1 0.0.0.0 Router(config)#ip nat inside destination list 1 pool wwwserver Router(config)#int e0 Router(config-if)#ip nat inside Router(config)#int e1 Router(config-if)#ip nat outside第一條命令是用來建立一個內部服務器的地址池,一定要注意后面的 type rotary,該參數用來分配流量。 Access-list 用來指定虛擬服務器地址。第三條命用來定義轉換關系。最后在兩個接口上調用 NAT 轉換表。注意,使用這種方法時,并不是最好的解決方案,相同的場景,以后會介紹更好的解決方案。?
?
四、 控制 NAT 轉換表大小:
?
1、 設置連接最大數量:該命令用來限制動態產生的轉換表的條目
? ? ? ? Router(config)#ip nat translation max-entries 最大數目
2、 設置超時值:動態產生的 NAT 轉換條目,根據不同的服務有不同的超時值。
? ? ? ? Router(config)#ip nat translation 協議時間 超時值
?
?
NAT 技術三
?
在上面 NAT 介紹中,提供了 NAT 的負載均衡的配置。但是,那種簡單的負載均衡有較多的局限性:
- 1、 不檢查內部服務器的狀態,可能會造成路由黑洞。
- 2、 不能靈活調整服務器的負載
為了解決這些問題,開始提出新的技術,引入了服務器負載平衡(Server Load Balancing)技術。該技術提供兩種工作模式:定向模式 和 分派模式。
?
?
一、定向模式:
在定向模式中,給服務器指定一個 IP 地址,真實的服務器不知道這個地址。在數據包進行轉發的時候,需修改數據包中的 IP 地址,并重新進行 CRC 計算,再進行數據包的轉發。
具體配置如下:
Router(config)#ip slb serverfarm Web_server (1) Router(config-slb-sfarm)#nat server (2) Router(config-slb-sfarm)#real 10.1.1.1 (3) Router(config-slb-real)#weight 10 (4) Router(config-slb-real)#faildetect numconns 8 numclients 3 (5) Router(config-slb-real)#retry 60 (6) Router(config-slb-real)#maxconns 2000 (7) Router(config-slb-real)#inservice (8) Router(config-slb-real)#exit Router(config-slb-sfarm)#real 10.1.1.2 (9) Router(config-slb-real)#weight 15 Router(config-slb-real)#faildetect numconns 8 numclients 3 Router(config-slb-real)#retry 60 Router(config-slb-real)#maxconns 3000 Router(config-slb-real)#inservice Router(config-slb-real)#exit Router(config)#ip slb vserver Out_server (10) Router(config-slb-vserver)#serverfarm Web_server (11) Router(config-slb-vserver)#virtual 200.1.1.1 tcp 80 (12) Router(config-slb-vserver)#delay 10 (13) Router(config-slb-vserver)#idle 1200 (14) Router(config-slb-vserver)#inservice (15)命令詳解: (1) 建立一個真實服務器群組,群組名 Web_server (2) 該群組使用定向模式提供服務。默認情況下真實服務器群組使用分派模式(如下一個圖例配置情況就是分派模式。 (3) 真實服務器的 IP 地址從(4) --(8)是配置真實服務器的一些連接特性 (4) 權重 10。該命令的意思是: 10.1.1.1 服務器我承擔的流量為 10/(10+15)。15 為另一臺服務器的權重 (5) 在認定該服務器失效前,路由器給服務器所發送的最多連接失敗數 (6) 指定在服務器失效后,路由器多長時間檢測一次服務器 (7) 該服務器最大連接數。這個參數設定是根據服務器的性能決定的 (8) 在這個群組中啟用該服務器 (9) 建立群組中的另一臺真實服務器 (10) 建立虛擬服務器,指定虛擬服務器名 Out_server (11) 指定哪個服務器群組處理該虛擬服務器的流量 (12) 配置虛擬服務器地址及其協議和端口號 (13) 連接終止后路由器上保持該 SLB 表項的時間 (14) 空閑超時值 (15) 啟用虛擬服務器?
?
二、分派模式:
處于分派模式時,真實的服務器上配置兩個地址:一個是自已的地址,一個是虛擬 IP 地址。當路由器進行數據轉發的時候,不需要對數據包的 IP 地址轉換,直接把數據包分發。注意,在分派模式的時候,中間的交換機必須是二層交換機。
具體配置如下:
Router(config)#ip slb serverfarm Web_server Router(config-slb-sfarm)#real 10.1.1.1 Router(config-slb-real)#weight 10 Router(config-slb-real)#inservice Router(config-slb-real)#exit Router(config-slb-sfarm)#real 10.1.1.2 Router(config-slb-real)#weight 15 Router(config-slb-real)#inservice Router(config-slb-real)#exit Router(config)#ip slb vserver Out_server Router(config-slb-vserver)#serverfarm Web_server Router(config-slb-vserver)#virtual 200.1.1.1 tcp 80 Router(config-slb-vserver)#inservice 分派模式的配置和定向模式很多都是相同的。分派模式中只少了一條命令: Router(config-slb-sfarm)#nat server?
?
NAT 技術四
?
一、使用 ACL 控制轉換
如下圖所示:網絡A和網絡B都連接到Internet。由于業務需要,兩個網絡需要相互訪問,因而在路由器A和路由器B之間建立了IPsec VPN。當網絡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 的數據包不需要進行轉換,到其它網絡的數 據包需要轉換(關于 VPN 內容,以后有機會再說)。 (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 1 00.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 20 0.1.1.3:23 tcp 100.1.1.10:26160 10.1.1.1:26160 100.1.1.3:23 10 0.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 10 0.1.1.3:23 tcp 200.1.1.10:14877 10.1.1.1:14877 200.1.1.3:23 20 0.1.1.3:23?
?
NAT 技術五
?
冗余鏈路是很多網絡所關注的問題, Cisco 公司的 NAT 技術提供在兩種情況下的冗余:
- 1、 在小型網絡中使用的冗余技術,靜態 NAT 和 HSRP 協議配合使用
- 2、 在大中型網絡中使用的冗余技術,有狀態的切換。
?
一、HSRP 和 靜態NAT:
用來提供網絡訪問服務的冗余鏈路。
?
配置如下:
路由器A: Router(config)#int e0 Router(config-if)#ip add 10.1.1.10 255.255.255.0 Router(config-if)#no ip redirects Router(config-if)#ip nat inside Router(config-if)#standby 1 ip 10.1.1.254 Router(config-if)#standby 1 priority 120 Router(config-if)#standby 1 preempt Router(config-if)#standby 1 name NAT Router(config-if)#standby 1 track e1 50 Router(config)#int e1 Router(config-if)#ip add 100.1.1.1 255.255.255.0 Router(config-if)#ip nat outside Router(config)#ip nat inside source static 10.1.1.1 100.1.1.3 reduandancy NAT Router(config)#ip nat inside source static 10.1.1.2 100.1.1.4 reduandancy NAT 路由器B: Router(config)#int e0 Router(config-if)#ip add 10.1.1.11 255.255.255.0 Router(config-if)#no ip redirects Router(config-if)#ip nat inside Router(config-if)#standby 1 ip 10.1.1.254 Router(config-if)#standby 1 preempt Router(config-if)#standby 1 name NATGROUP Router(config)#int e1 Router(config-if)#ip add 100.1.1.2 255.255.255.0 Router(config-if)#ip nat outside Router(config)#ip nat inside source static 10.1.1.1 100.1.1.3 reduandancy NATGROUP Router(config)#ip nat inside source static 10.1.1.2 100.1.1.4 reduandancy NATGROUP 命令詳解: 常用于小型網絡,只能為靜態NAT提供轉換?
?
二、有狀態的地址切換:
?
有狀態的地址切換,當流量從一臺路由器上通過時,另一臺路由器能夠獲得相同的NAT轉換表,故稱為有狀態的地址切換。
1. 使用HSRP的有狀態切換:
?
配置命令:
路由器A: Router(config)#int e0 Router(config-if)#ip add 10.1.1.10 255.255.255.0 Router(config-if)#no ip redirects Router(config-if)#ip nat inside Router(config-if)#standby 1 ip 10.1.1.254 Router(config-if)#standby 1 priority 120 Router(config-if)#standby 1 preempt Router(config-if)#standby 1 name SNAT Router(config-if)#standby 1 track e1 50 Router(config)#int e1 Router(config-if)#ip add 100.1.1.1 255.255.255.0 Router(config-if)#ip nat outside Router(config)#ip nat stateful id 1 Router(config-snat)#redundancy SNAT Router(config-snat-red)#mapping-id 100 Router(config)#ip nat pool SNAT-POOL 100.1.1.10 100.1.1.254 prefix-length 24 Router(config)#ip nat inside source route-map SNAT-MAP pool SNAT-POOL mapping-id 100 overload Router(config)#route-map SNAT-MAP permit 10 Router(config-route-map)#match ip address 100 Router(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 any路由器B: Router(config)#int e0 Router(config-if)#ip add 10.1.1.11 255.255.255.0 Router(config-if)#no ip redirects Router(config-if)#ip nat inside Router(config-if)#standby 1 ip 10.1.1.254 Router(config-if)#standby 1 preempt Router(config-if)#standby 1 name SNAT Router(config)#int e1 Router(config-if)#ip add 100.1.1.2 255.255.255.0 Router(config-if)#ip nat outside Router(config)#ip nat inside source static 10.1.1.1 100.1.1.3 reduandancy NATGROUP Router(config)#ip nat inside source static 10.1.1.2 100.1.1.4 reduandancy NATGROUP Router(config)#ip nat stateful id 2 Router(config-snat)#redundancy SNAT Router(config-snat-red)#mapping-id 100 Router(config)#ip nat pool SNAT-POOL 100.1.1.10 100.1.1.254 prefix-length 24 Router(config)#ip nat inside source route-map SNAT-MAP pool SNAT-POOL mapping-id 100 overload Router(config)#route-map SNAT-MAP permit 10 Router(config-route-map)#match ip address 100 Router(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 any 命令詳解: 這種有狀態的HSRP的SNAT,可以為兩種類型的轉換:NAT和PAT提供冗余。?
2、 不使用 HSRP 的狀態切換:
?
配置命令:
路由器A: Router(config)#int e0 Router(config-if)#ip add 10.1.1.1 255.255.255.0 Router(config-if)#ip nat inside Router(config)#int e1 Router(config-if)#ip add 100.1.1.1 255.255.255.0 Router(config-if)#ip nat outside Router(config)#int e2 Router(config-if)#ip add 192.168.1.254 255.255.255.0 Router(config)#ip nat stateful id 1 Router(config-ipnat-snat)#primary 192.168.1.254 Router(config-ipnat-snat-red)#peer 192.168.1.253 Router(config-ipnat-snat-red)#mapping-id 100 Router(config)#ip nat pool SNAT-POOL 100.1.1.10 100.1.1.100 prefix-length 24 Router(config)#ip nat inside source route-map SNAT-MAP pool SNAT-POOL mapping 100 overload Router(config)#route-map SNAT-MAP permit 10 Router(config-route-map)#match ip addredd 100 Router(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 any路由器B: Router(config)#int e0 Router(config-if)#ip add 10.1.1.1 255.255.255.0 Router(config-if)#ip nat inside Router(config)#int e1 Router(config-if)#ip add 100.1.1.1 255.255.255.0 Router(config-if)#ip nat outside Router(config)#int e2 Router(config-if)#ip add 192.168.1.254 255.255.255.0 Router(config)#ip nat stateful id 2 Router(config-ipnat-snat)#primary 192.168.1.254 Router(config-ipnat-snat-red)#peer 192.168.1.253 Router(config-ipnat-snat-red)#mapping-id 100 Router(config)#ip nat pool SNAT-POOL 100.1.1.10 100.1.1.100 prefix-length 24 Router(config)#ip nat inside source route-map SNAT-MAP pool SNAT-POOL mapping 100 overload Router(config)#route-map SNAT-MAP permit 10 Router(config-route-map)#match ip addredd 100 Router(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 any 命令詳解: 這種有狀態的SNAT,可以為大型網絡提供轉換?
?
?
?
?
總結
- 上一篇: C语言中生成可执行程序的过程
- 下一篇: Python自省(反射) 与 inspe