Cisco IPv6

實地了解動手設定NAT 設定Cisco路由器節省IP使用量

2011-10-19
Ipv6雖然在1988年底左右就推出,但是到2011年的今天,都IPv6的使用並不普遍,很多大型企業都也不一定都採用IPv6技術。另外,IPv4的分發數量也快用光了,因此如何有效利用IP位址,就顯得十分迫切。這裡將示範如何在Cisco網路設備上進行設定,以節省IP的使用量。
使用IPv4技術來管理網路,至今已經有三十年左右的歷史,雖然在1988年底左右就推出IPv6,但是到2011年的今天,IPv6的使用仍不普及,許多大型企業也仍未使用IPv6,因此如何有效利用IP位址,是一個很重要的議題。

本文將在Cisco網路設備上做設定,以便節省IP位址的使用量,其中所採用的關鍵技術是知名的NAT(Network Address Translation),也就是網路位址轉換技術。

NAT技術就是路由器在轉發網路封包的時候重新轉換IP位址,這種技術使用時機相當普遍,也是當前用來節省公有IP的技術。

在NAT技術裡面,有很多細部的分類,PAT(Port Address Translation)就是其中相當知名的一種,以下將介紹這兩種技術,更重要的是,也會講解如何在Cisco網路設備中設定用來使用NAT和PAT等技術。

NAT與PAT技術簡介

NAT與PAT都是用來將已經註冊的IP位址轉換到私有的IP位址,簡化IP位址的管理,以便讓企業內部的網路連到外部的網際網路,而且甚至不需要有註冊的子網路。

而在Cisco設備中,NAT會被應用在Cisco路由器上。一般的作法會把Cisco路由器設備同時連接兩段網路,一段是內部網路,另一段則是外部網際網路。

一旦內部網路中有任何電腦想發送網路封包到外部的網際網路,當封包流過Cisco路由器設備時,Cisco路由器設備就會做NAT位址轉換的動作。然後,再傳送封包到外部網際網路中。

當然,如果想省事一點的話,也可以透過適當的設定,讓外部網際網路只用一個公有IP位址,但卻給整個內部網路所有的電腦使用。這樣的作法也能夠隱藏內部網路各電腦的IP位址,而獲得一定程度的安全性。

私有IP位址

在開始介紹之前,先介紹一下何謂私有IP位址(Private IP Address),同時也會一併介紹私有IP位址的範圍。

眾所皆知,目前IPv4的規格與技術已經被使用了約三十年,原本所設計的IP位址個數也逐漸不敷使用。當初設計IPv4時,應該很難想像到網路普及如此迅速,而IP位址的使用量會如此廣泛。

為了更有效地使用IP位址,於是出現了私有IP位址的設計。私有IP位址被定義在RFC 1918的規格中,當電腦並不需要存取網際網路時,可以只用私有IP位址,而私有IP位址並不需要註冊,因為私有IP位址只有內部網路才可以使用。私有IP位址的IP範圍如下表所示:

一般公司內部的網路都是分配私有IP位址給內部的電腦,不僅如此,若讀者家裡有架設自己的無線網路基地台,這個基地台也會分配私有IP位址給每一台連上網路的筆記型電腦,而這些私有的IP位址在外面的網際網路中是看不到的,因此各個內部網路(Intranet)就可以重複使用這些私有IP位址範圍,以增加IP位址的使用性。

Link-local位址

另外還有一段私有IP位址是被定義在RFC 3330和RFC 3927文件中,這段私有IP位址稱為Link-local Addresses。

設計這段私有IP位址的目的在於,希望在沒有DHCP伺服器的情況之下還能夠提供IP位址。而Link-local addresses的範圍是:

但是,在這段範圍中並不是所有的位址都可以使用,目前而言,169.254.0.0/24和169.254.255.0/24被保留起來,以便未來可以提供不同的用途。

如果使用Windows 9x的作業系統平台(不包含Windows NT作業系統),是不能經由DHCP伺服器來取得IP位址,這個時候,就會隨意從169.254.1.0?169.254.254.255這個範圍之間取一個IP位址來使用,當然,這樣隨意取用的作法很可能造成IP衝突。若有IP衝突,就只能手動處理了。

Link-local address比私有IP位址擁有比較多的限制,而這些限制都被定義在RFC 1918文件內,另外還有一點必須注意的是,Link-local address所發送出來的網路封包,以及要送往Link-local address的網路封包都不能經過路由器,這個限制被定義在RFC 3927中,有興趣的讀者可以參考RFC 3927和RFC 1918文件。

位址轉換技術用語

在NAT與PAT的敘述中,所謂的「內部網路」(Inside network)指的是需要經過位址轉換的網路區域,一般而言,內部網路都像是公司內部的網路,或是某組織架構中的網路,沒有直接暴露在網際網路上的網路環境。

所謂的「外部網路」(Outside network)則指的是其他的網路區段。在外部網路中,是不需要做位址轉換,也就是說,外部網路上的IP位址都會是公有IP位址。

一般來說,外部網路指的通常都是網際網路或是直接暴露於網際網路的網路區域。接下來介紹四種不同的位址種類稱呼:

Inside global位址
Inside local位址
Outside global位址
Outside local位址

Inside global位址是指經由Network Information Center或Server Provider所分派的邏輯IP位址,是給內部網路的電腦所使用。

Inside local位址則是內部網路中所取得的IP位址,但是卻不是透過Network Information Center或Service Provider所提供的IP位址。

Outside global位址是網際網路中實際有效,而且能被繞送的IP位址,是給外部網際網路電腦所使用的。而Outside local位址則是外部網際網路中的電腦在內部網路中所運行的IP位址。

看到這裡,讀者可能會昏頭,簡單來說,就是Inside與Outside是用來反映出電腦實際所在的位置,若是內部網路就是Inside,若位於網際網路則是Outside。

而Local和Global則是指所使用的IP位址是公有IP位址還是私有IP位址。若是公有IP位址,則是Global;如果是使用私有IP位址,將屬於Local。這樣說應該就較容易理解了。

NAT轉換方式

常用的NAT轉換方式有三種,分別是靜態(Static)NAT、動態(Dynamic)NAT以及Overlapping。

靜態NAT是指將私有IP位址對應到公有IP位址,並允許內部網路的電腦使用公有IP位址連線到網際網路,而其使用的對應方式是採用一對一的方式。

動態NAT方式則是將一個私有IP位址與一群公有IP位址做對應。而Overlapping與動態NAT剛好相反,是將多個私有IP位址與單一公有IP位址做對應。接著,來看看下面這個範例:

假設有一台Cisco路由器同時連接網際網路和內部網路。在以上這個網路示意圖中,右邊就是網際網路,也就是Global,左邊則是內部網路,也就是Local。而NAT對應表如下所示:

上面就是一個簡單的NAT應用範例。因為上面將外部公有IP位址和內部私有IP位址做一對一的對應,所以上面這種NAT是屬於靜態NAT方式。

PAT轉換方式

PAT是在Inside Global的位址加上獨特的埠編號來區分不同筆的位址轉換。而由於埠編號是由16個位元所組成的,所以單一Inside Global的位址可以用來與65,536個位址做對應。

簡單來說,對於NAT而言是一個位址與一個位址做對應,但PAT則是一個位址加上一個埠編號,才與一個位址做對應,所以可能的對應組合變得更多。用下面這個圖來說明,就比較容易明白。

在以上的網路架構圖中,左邊兩台電腦是私有網路中的兩台電腦,右邊的是網際網路,左邊兩台電腦想透過中間的路由器A做PAT位址轉換,並連到外面的網際網路。

假設路由器所獲得的外部IP位址是171.69.68.10,由於只得到一個IP位址,所以路由器A必須使用PAT位址轉換的方式,才能同時讓兩台以上的電腦共同使用這個IP位址連到網際網路。下面是對於這個網路架構的PAT位址轉換表的範例:

當然,PAT位址轉換的技術並不是每個埠編號都會拿來使用,PAT技術一旦找到可用的埠編號就會拿來使用,而PAT技術只會採用以下這些埠的範圍:

0-511
512-1023
1024-65535

靜態NAT的設定方式

瞭解NAT技術的運作過程之後,再來就是介紹靜態NAT的設定方式。靜態NAT的設定主要分成以下三個動作:

1. 建立Inside local位址和Inside global位址的對應關係。
2. 定義哪些介面屬於Inside。
3. 定義哪些介面屬於Outside。

建立NAT對應關係

第一個動作的設定指令如下。這個指令關鍵字是ip nat inside source static,指明了這個設定是屬於IP設定的NAT部分,而且是設定Inside的靜態NAT。

後面的local要填入Inside local位址,而global則必須填入Inside global位址。若要取消靜態NAT,必須執行no ip nat inside source static指令。

定義Inside介面

第二個動作的指令如下所示。首先,要先進入某個介面模式,進入介面模式的指令關鍵字是interface,後面則是接上介面種類,這裡的範例是ethernet介面。

一般而言,接內部網路通常都是使用ethernet介面,接著填上第幾個網路介面,路由器是以零為起始來計算。

接著,透過「ip nat inside」指令將這個介面設定為內部網路。因此這個指令範例就是把第一個乙太網路介面設定為「內部網路」,讀者請根據自己的網路環境自行更改參數值。

定義Outside介面

第三個動作就是指定哪些介面所連接的網路是網際網路。相同地,一開始必須先進入某個介面,一般而言,都會透過Serial介面來連接網際網路。

接著,透過ip nat outside指令來將這個介面設定為「外部網路」。這樣就大功告成了。

不過,這三個動作並沒有先後順序,也就是說,讀者想先進行建立NAT對應關係、定義Inside介面或是定義Outside介面都可以。

動態NAT的設定方式

動態NAT的設定方式則是分成五個動作來進行,分別說明如下:

1. 設定Inside global位址的範圍
2. 設定Inside local位址的範圍
3. 設定Inside global位址與Inside local位址的對應關係
4. 設定Inside介面
5. 設定Outside介面

雖然這五個動作看起來好像頗為簡單,但是事實上比靜態NAT複雜得多。

設定Inside global位址範圍

第一個動作是設定Inside global位址的範圍,其設定指令如下所示:

這個指令關鍵字是ip nat pool,其用意是製作一個「IP位址範圍群組」,形成一個pool,這裡可以為這個IP位址範圍的pool設定一個名稱。看起來是不是比靜態NAT好許多呢?這有助於IT人員規劃IP位址的使用。名稱後面接的就是這個IP位址範圍的起始IP位址和結束IP位址。

事實上,ip nat pool這個指令還有更複雜的參數使用,方便讀者指定IP位址範圍。ip nat pool指令的完整參數形式如下:

除了剛剛提到的參數之外,使用者可以選擇另外輸入網路遮罩,或是Prefix的長度。此處設定好的IP位址範圍pool等一下就會用到。若要移除所設定好的pool,只要輸入以下指令即可:

和一般Cisco路由器的指令一樣,只要在原本的指令前面加上no即可。

設定Inside local位址範圍

第二個動作則是設定Inside local的位址範圍,其設定指令如下所示:

也許有些讀者看到這個指令會覺得很奇怪,因為這是設定存取控制清單的指令,沒錯,這裡就是透過標準型存取控制清單來設定Inside local的位址範圍。而在這個存取控制清單中被允許的IP位址範圍就是Inside local的位址範圍。

存取控制清單(Access Control List,ACL)顧名思義就是一個清單,內容包含一些「規則」,也可以視為條件,用來指導Cisco路由器設備如何辨識哪些網路封包,以及要對這些網路封包做哪些動作。

例如,網路管理人員可能會想要阻絕某些網路封包,希望只允許某些特定的網路封包,而當網路管理人員在Cisco路由器設備上設定好存取控制清單之後,當網路封包通過Cisco路由器設備時,就會依據存取控制清單的內容來決定是否要讓這個網路封包經過。

基本上,存取控制清單分為以下兩個類型:

·標準型存取控制清單
·延伸型存取控制清單

這裡所使用的是標準型存取控制清單。指令關鍵字是access-list,後面接的access-list-number指的是存取控制規則的識別碼,由使用者自行指定。

在存取控制清單中,每一條規則都有其特定的識別碼(ID),以便於辨識每一條專屬的存取控制規則,由於標準型存取控制清單的識別碼範圍是從1到99以及1300到1999之間,所以只能指定這個範圍中的識別碼。

接下來是permit,因為設定這個標準型存取控制清單的目的在於允許Inside local的位址能夠被轉換,也就是能夠存取網路,所以這裡要使用permit。

而後面的source-wildcard指的是字元遮罩,這個字元遮罩可輸入也可忽略,若沒有輸入字元遮罩,預設值是0.0.0.0。

字元遮罩是用來指定一個以上的位址,不過不同的是,在存取控制清單中,位元值為0代表符合(Match)目前這個位元值所對應的位址值,而位元值為1則代表忽略(Ignore)。

這點和子網路遮罩剛好相反,在子網路遮罩中,位元值為0,代表忽略(Ignore),而位元值為1時,代表符合(Match)。

剛剛說過這裡字元遮罩的預設值是0.0.0.0,所以代表要符合前面輸入的IP位址的每一個位元才能套用這個存取控制規則。

若要刪除某一筆存取控制規則,則指令格式如下:

從中可以看出這是標準的反向操作指令,在Cisco IOS上,很多指令的反向操作通常都只是在原本指令的前面加上no關鍵字。

這個步驟其實是設定動態NAT時最重要的步驟,必須在這裡多加介紹。須注意的是,這裡的標準型控制清單所包含的IP位址範圍,最好是「真正需要透過NAT技術連線到網際網路的電腦」。

請記得,存取控制清單的最後面還是會有一個隱藏的存取控制清單,用來拒絕所有不符合其他被定義之存取控制清單的網路封包,但是最好也不要因此就設定成permit any,這是一件很可怕的事情。

如果針對所有內部網路的電腦都做NAT的話,這台Cisco路由器的工作負載將會變得十分龐大,在設定之前請認真考慮清楚,因為這樣的設定會讓Cisco路由器的效能變得很差。

設定NAT對應位址關係

接下來,設定NAT的對應位址關係,也就是Inside local位址和Inside global位址的對應關係。其設定指令如下所示:

這裡會用到之前兩個步驟的結果,也就是標準型存取清單和IP位址範圍的pool。其指令關鍵字是ip nat inside source list,後面接上標準型存取控制清單的識別碼,然後接上pool,後面再接上pool的名稱 。

這樣就可以把「定義在IP範圍pool中的Inside global位址和標準型存取控制清單中的Inside local位址」對應在一起了。

設定Inside介面與設定Outside介面

最後免不了也要設定Inside介面和Outside介面,因為剛剛已經介紹過設定方式,這裡就不再多加敘述。這些動作完成之後,就設定好動態NAT的設定。

檢視設定值的方法

接下來,最重要的莫過於如何檢視PAT與NAT的設定,因此底下開始介紹檢視PAT/NAT設定值的方法,將說明如何清除PAT/NAT位址轉換對應表,以及如何顯示PAT/NAT位址轉換對應表的資料。

清除位址轉換對應表

前面提到,PAT技術和NAT技術一樣,就是幫忙做公有IP位址和私有IP位址之間的轉換動作,讓使用私有IP位址的電腦也能夠方便地存取外面的網際網路。

而這種位址的轉換對應,會儲存在NAT位址轉換對應表中,若要清除這樣的位址對應表,可透過下列這個指令完成:

之前的文章提過,常用的NAT運行方式有三種,分別是靜態(Static)NAT、動態(Dynamic)NAT以及Overlapping。

而上面這個指令可以清除所有動態對應的NAT位址轉換關係。如果只是要移除某一個動態NAT的位址對應關係,則可以執行下面這個指令:

上面這個指令可以指定特定一個Inside的轉換對應關係,若要同時指定Inside和Outside的位址轉換對應關係,可以使用下面這個指令:

若想移除特定一筆包含Outside的位址轉換對應關係,則可以使用下列這個指令:

要注意的是,這裡的位址指定順序是Local位址在前,而Global位址在後。這裡的順序和上一個指令剛好相反。

上面就是要刪除NAT位址轉換表中資料的指令,不過事實上,NAT位址轉換表中的資料預設是會自動逾時而被刪除的,如果是NAT相關設定的話,則資料存在於NAT位址轉換表中二十四小時後就會自動被刪除,除非重新設定這筆資料。

而剛剛所說的所有移除指令是用來當這些資料還沒有逾時的時候,將其從NAT位址轉換表中移除。

顯示位址轉換對應表

再來介紹如何顯示PAT位址轉換對應表的資料,與一般的Cisco設備指令類似,這裡也是使用show指令,指令格式如下所示:

由於PAT位址轉換的資料是存在NAT位址轉換對應表內,所以可以從NAT位址轉換對應表來觀察PAT設定。

透過下面這個指令就可以顯示出NAT的位址轉換對應表,下面是執行這個指令之後的範例:

另外,還有一個指令是可以顯示NAT位址轉換的統計資料,其指令如下所示:

其執行範例如下所示:

位址轉換疑難排解

以下將介紹一些基本的位址轉換技術的疑難排解技巧。假設讀者們遇到位址轉換紀錄沒有出現在NAT位址轉換表中,那該怎麼辦呢?

一般來說,若在NAT的網路環境中遇到IP的連線問題,通常會很難找到問題所在,此時很多人可能都會怪罪到NAT設定。

因此身為一個專業的網路管理人員,必須學會如何識別是否是NAT的問題,學會如何在NAT的網路環境中做基本的疑難排解。如果遇到類似這樣的問題,先嘗試看看下列這些步驟:

步驟一:先根據既有的NAT位址轉換設定來推想當前可能的位址轉換。
步驟二:確認在NAT位址轉換表中每一筆位址轉換資料都是正確的。
步驟三:使用show和debug指令來確認位址轉換的設定。
步驟四:詳細確認網路封包的流向,確認發送網路封包之後會發生什麼事情。

如果想要使用debug指令來確認NAT設定的話,可以使用debug ip nat指令,下達這個指令之後,就可以即時看到所有經由目前這台Cisco路由器所轉換的位址變化。

如果想得知每個封包更詳細的位址轉換資料,則可使用debug ip nat detailed指令,如果有任何的錯誤發生,或是任何的例外情形,例如分配global位址時發生錯誤之類的狀況,這個指令也會列印出來。

以下是比較常用的debug ip nat指令的執行範例:

一開始兩行顯示的是DNS正在處理request和reply的回應。而剩下的資料顯示出正在做Telnet的連線處理,Telnet連線的兩端,一台是內部網路的電腦,而另一台是位於網際網路中的電腦。

每一行最後面都有一個數字是用[ ]符號包起來的,這個數字是網路封包的編號,這個編號蠻有用的,可用來對應每個網路封包所對應的資料。

結語

這篇文章介紹了IP位址轉換技術的運作方式,大家可以看出,NAT與PAT的技術其實很類似,PAT算是NAT的延伸,等於是把埠編號再拿來做對應,能夠更加善用IP位址。網路的IP管理是一個基本卻又相當複雜且繁瑣的過程,唯有相當熟悉網路位址的基本概念,才能做好對應的管理工作。

當然,IP的技術不是只有這樣而已,這裡所提及的只是轉換的技術與管理,也許很多人知道NAT相關技術的運作原理,但是如何在Cisco路由器上做設定,就較少人明白,希望每位讀者看完這篇文章後,都能夠對於在Cisco路由器上設定NAT感到得心應手。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!