編輯詞條nat
編輯本段網絡位址轉換(NAT)
網絡位址轉換(NAT,Network Address Translation)
被廣泛應用于各種類型Internet接入方式和備種類型的網絡中。原因很簡單,NAT不僅完美地解決了lP位址不足的問題,而且還能夠有效地避免來自網絡外部的攻擊,隐藏并保護網絡内部的計算機。
雖然NAT可以借助于某些代理伺服器來實作,但考慮到運算成本和網絡性能,很多時候都是在路由器上來實作的。
随着接入Internet的計算機數量的不斷猛增,IP位址資源也就愈加顯得捉襟見肘。事實上,除了中國教育和科研計算機網(CERNET)外,一般使用者幾乎申請不到整段的C類IP位址。在其他ISP那裡,即使是擁有幾百台計算機的大型區域網路使用者,當他們申請IP位址時,所配置設定的位址也不過隻有幾個或十幾個IP位址。顯然,這樣少的IP位址根本無法滿足網絡使用者的需求,于是也就産生了NAT技術。
l.NAT簡介借助于NAT,私有(保留)位址的"内部"網絡通過路由器發送資料包時,私有位址被轉換成合法的IP位址,一個區域網路隻需使用少量IP位址(甚至是1個)即可實作私有位址網絡内所有計算機與Internet的通信需求。
NAT将自動修改IP封包頭申的源IP位址和目的IP位址,Ip位址校驗則在NAT處理過程中自動完成。有些應用程式将源IP位址嵌入到IP封包的資料部分中,是以還需要同時對封包進行修改,以比對IP頭中已經修改過的源IP位址。否則,在封包資料都分别嵌入IP位址的應用程式就不能正常工作。
2.NAT實作方式NAT的實作方式有三種,即
靜态轉換Static Nat、
動态轉換Dynamic Nat和
端口多路複用OverLoad。
靜态轉換是指将内部網絡的私有IP位址轉換為公有IP位址,IP位址對是一對一的,是一成不變的,某個私有IP位址隻轉換為某個公有IP位址。借助于靜态轉換,可以實作外部網絡對内部網絡中某些特定裝置(如伺服器)的通路。
動态轉換是指将内部網絡的私有IP位址轉換為公用IP位址時,IP位址對是不确定的,而是随機的,所有被授權通路上Internet的私有IP位址可随機轉換為任何指定的合法IP位址。也就是說,隻要指定哪些内部位址可以進行轉換,以及用哪些合法位址作為外部位址時,就可以進行動态轉換。動态轉換可以使用多個合法外部位址集。當ISP提供的合法IP位址略少于網絡内部的計算機數量時。可以采用動态轉換的方式。
端口多路複用是指改變外出資料包的源端口并進行端口轉換,即端口位址轉換(PAT,Port Address Translation).采用端口多路複用方式。内部網絡的所有主機均可共享一個合法外部IP位址實作對Internet的通路,進而可以最大限度地節約IP位址資源。同時,又可隐藏網絡内部的所有主機,有效避免來自internet的攻擊。是以,目前網絡中應用最多的就是端口多路複用方式。
3.網絡位址轉換(NAT)的實作在配置網絡位址轉換的過程之前,首先必須搞清楚内部接口和外部接□,以及在哪個外部接口上啟用NAT。通常情況下,連接配接到使用者内部網絡的接口是NAT内部接口,而連接配接到外部網絡(如Internet)的接口是NAT外部接□。
1).靜态位址轉換的實作假設内部區域網路使用的lP位址段為192.168.0.1~192.168.0.254,路由器區域網路端□(即預設網關)的IP位址為192.168.0.1,子網路遮罩為255.255.255.0。網絡配置設定的合法IP位址範圍為61.159.62.128~61.159.62.135,路由器在廣域網中的IP位址為61.159.62.129,子網路遮罩為255.255.255.248可用于轉換的IP位址範圍為61.159.63.130~61.159.62.134。要求将内部網止192.168.0.2~192.168.0.6分别轉換為合法IP位址61.159.62.130~61.159.62.134。
第一步,設定外部端口。
interface serial 0
ip address 61.159.62.129.255.255.255.248
ip nat outside
第二步,設定内部端口。
interface ethernet 0
ip address 192.168.0.1.255.255.255.0
ip nat inside
第三步,在内部本地與内部合法位址之間建立靜态位址轉換。
ip nat inside source static 内部本地位址内部合法位址
示例:
ip nat inside source static 192.168.0.2 61.159.62.130//将内部網絡位址192.168.0.2轉換為合法IP位址61.159.62.130
ip nat inside source static 192.168.0.3 61.159.62.131//将内部網絡位址192.168.0.3轉換為合法IP位址61.159.62.131
ip nat inside source static 192.168.0.4 61.159.62.132//将内部網絡位址192.168.0.4轉換為合法IP位址61.159.62.132
ip nat inside source static 192.168.0.5 61.159.62.133//将内部網絡位址192.168.0.5轉換為合法IP位址61.159.62.133
ip nat inside source static 192.168.0.6 61.159.62.134//将内部網絡位址192.168.0.6轉換為合法IP位址61.159.62.134
至此,靜态位址轉換配置完畢。
2).動态位址轉換的實作假設内部網絡使用的IP位址段為172.16.100.1~172.16.100.254,路由器區域網路端口(即預設網關)的IP位址為172.16.100.1,子網路遮罩為255.255.255.0。網絡配置設定的合法IP位址範圍為61.159.62.128~61.159.62.191,路由器在廣域網中的IP位址為61.159.62.129,子網路遮罩為255.255.255.192,可用于轉換的IP位址範圍為61.159.62.130~61.159.62.190。要求将内部網址172.16.100.1~172.16.100.254動态轉換為合法IP位址61.159.62.130~61.159.62.190。
第一步,設定外部端口。
設定外部端口指令的文法如下:
interface serial 0//進入串行端口serial 0
ip address 61.159.62.129 255.255.248//将其IP位址指定為61.159.62.129,子網路遮罩為255.255.255.248
ip nat outside //将串行口serial 0設定為外網端口
注意,可以定義多個外部端口。
第二步,設定内部端口。
設定内部接口指令的文法如下:
interface ethernet 0 //進入以太網端口Ethernet 0
ip address 172.16.100.1 255.255.255.0 // 将其IP位址指定為172.16.100.1,子網路遮罩為255.255.255.0
ip nat inside //将Ethernet 0 設定為内網端口。
注意,可以定義多個内部端口。
第三步,定義合法IP位址池。
定義合法IP位址池指令的文法如下:
ip nat pool 位址池名稱 起始IP位址 終止IP位址 子網路遮罩
其中,位址池名字可以任意設定。
ip nat pool net 61.159.62.130 61.159.62.190 netmask 255.255.255.192//指明位址緩沖池的名稱為net,IP位址範圍為61.159.62.130~61.159.62.190,子網路遮罩為255.255.255.192。需要注意的是,即使掩碼為255.255.255.0,也會由起始IP位址和終止IP位址對IP位址池進行限制。
或ip nat pool test 61.159.62.130 61.159.62.190 prefix-length 26
注意,如果有多個合法IP位址範圍,可以分别添加。例如,如果還有一段合法IP位址範圍為"211.82.216.1~211.82.216.254",那麼,可以再通過下述指令将其添加至緩沖池中。
ip nat pool cernet 211.82.216.1 211.82.216.254 netmask 255.255.255.0
或
ip nat pool test 211.82.216.1 211.82.216.254 prefix-length 24
第四步,定義内部網絡中允許通路Internet的通路清單。
定義内部通路清單指令的文法如下:
access-listl 标号 permit 源位址 通配符(其中,标号為1~99之間的整數)
access-listl permit 172.16.100.0 0.0.0.255 //允許通路Internet的網段為172.16.100.0~172.16.100.255,主機掩碼為0.0.0.255。需要注意的是,在這裡采用的是主機掩碼,而非子網路遮罩。子網路遮罩與主機掩碼的關系為:主機掩碼+子網路遮罩=255.255.255.255。例如,子網路遮罩為255.255.0.0,則主機掩碼為0.0.255.255;子網路遮罩為255.0.0.0,則主機掩碼為0.255.255.255;子網路遮罩為255.252.0.0,則主機掩碼為0.3.255.255;子網路遮罩為255.255.255.192,剛主機掩碼為 0.0.0.63。
另外,如果想将多個IP位址段轉換為合法IP位址,可以添加多個通路清單。例如,當欲将172.16.98.0~172.16.98.255和172.16.99.0~172.16.99.255轉換為合法IP位址時,應當添加下述指令:
access-list2 permit 172.16.98.0~0.0.0.255
access-list2 permit 172.16.99.0~0.0.0.255
第五步,實作網絡位址轉換。
在全局設定模式下,将由access-list指定的内部本地位址與指定的内部合法位址池進行位址轉換。指令文法如下:
ip nat inside source list 通路清單标号 pool 内部合法位址池名字
ip nat inside source list 1 pool chinanet
如果有多個内部通路清單,可以一一添加,以實作網絡位址轉換,如
ip nat insde source list 2 pool chinanet
如果有多個位址池,也可以一一添加,以增加合法位址池範圍,如
ip nat insde source list 2 pool cernet
至此,動态位址轉換設定完畢。
3).端口複用動态位址轉換内部網絡使用的IP位址段為10.100.100.1~10.100.100.254,路由器區域網路端口(即預設網關)的IP位址為10.100.100.1,子網路遮罩為255.255.255.0。網絡配置設定的合法IP位址範圍為202.99.160.0~202.99.160.3,路由器廣域網中的IP位址為202.99.160.1,子網路遮罩為255.255.255.252,可用于轉換的IP位址為202.99.160.2。要求将内部網址10.100.100.1~10.100.100.254 轉換為合法IP位址202.99.160.2。
ip address 202.99.160.1 255.255.255.252
in nat outside
?ip address 10.100.100.1 255.255.255.0
?ip nat inside
第三步,定義合法IP位址池。
in nat pool onlyone 202.99.160.2 202.99.160.2 netmask 255.255.255.252
// 指明位址緩沖池的名稱為onlyone,IP位址範圍為202.99.160.2,子網路遮罩為255.255.255.252。由于本例隻有一個IP位址可用,是以,起始IP位址與終止IP位址均為202.99.160.2。如果有多個IP位址,則應當分别鍵入起止的IP直址。
第四步,定義内部通路列。
access-list 1 permit 10.100.100.0 0.0.0.255
允許通路Internetr的網段為10.100.100.0~10.100.100.255,子網路遮罩為255.255.255.0。需要注意的是,在這裡子網路遮罩的順序跟平常所寫的順序相反,即0.255.255.255。
第五步,設定複用動态位址轉換。
在全局設定模式下,設定在内部的本地位址與内部合法IP位址間建立複用動态位址轉換。指令文法如下:
ip nat inside source list通路清單号pool内部合法位址池名字overload
ip nat inside source list1 pool onlyone overload //以端口複用方式,将通路清單1中的私有IP位址轉換為onlyone IP位址池中定義的合法IP位址。
至此,端口複用動态位址轉換完成。
編輯本段網絡位址轉換(NAT)-執行個體
示例一:全部采用端口複用位址轉換當ISP配置設定的IP位址數量很少,網絡又沒有其他特殊需求,即無需為Internet提供網絡服務時,可采用端口利用位址轉換方式,使網絡内的計算機采用同一IP位址通路Internet,在節約IP位址資源的同時,又可有效保護網絡内部的計算機。
網絡環境為:
區域網路采用10Mb/s光纖,以城域網方式接入Internet,如圖4-2-2所示。路由器選用擁有2個10/100 Mb/s自适應端口的Cisco 2611。内部網絡使用的IP位址段為192.168.100.1~192.101.254,區域網路端口Ethernet 0的IP位址為192.168.100.1,子網路遮罩為255.255.0.0。網絡配置設定的合法IP位址範圍為202.99.160.128~202.99.160.131,連接配接ISP的端口Ethernet 1的IP位址為202.99.160.129,子網路遮罩為255.255.255.252。可用于轉換的IP位址為202.99.160.130。要求網絡内部的所有計算機均可通路Internet。
案例分析:
既然隻有一個可用的合法IP位址,同時處于區域網路的伺服器又隻為區域網路提供服務,而不允許Internet中的主機對其通路,是以完全可以采用端口複用位址轉換方式實作NAT,使得網絡内的所有計算機均可獨立通路Internet。
配置清單:
interface fastethernet0/0
ip address 192.168.100.1 255.255.0.0 //定義本地端口IP位址
duplex auto
speed auto
ip nat inside // 定義為本地端口
!
interface fastethernet0/1
ip address 202.99.160.129 255.255.255.252
duplx auto
ip nat pool onlyone 202.99.160.130 202.99.160.130 netmadk 255.255.255.252 //定義合法IP位址池,名稱為onlyone
access-list 1 permit 192.168.100.0 0.0.0.255 //定義本地通路清單
access-list 1 permit 192.168.100.0 0.0.0.255
ip nat inside source list1 pool onlyone overload //采用端口複用動态位址轉換
示例二:動态位址+端口複用位址轉換許多FTP網站考慮到伺服器性能和Internet連接配接帶寬的占用問題,都限制同一IP位址的多個程序通路。如果采用端口複位址轉換方式,則網絡内的是以計算機都采用同一IP位址通路Internet,那麼,将是以而被禁止對該網站的通路。是以,當提供的合法IP位址數量稍多時,可同時采用端口複用和動态位址轉換方式,進而既可保證所有使用者都能夠獲得通路Internet的權力,同時,又不緻、某些計算機因使用同一IP位址而被限制權限。需要注意的是,由于所有計算機都采用動态位址轉換方式,是以Internet中的所有計算機将無法實作對網絡内部伺服器的通路。
網絡環境:
區域網路以2Mb/s DNA專線接入Internet,路由器選用安裝了廣域網子產品的Cisco 2611,如圖4-2-2所示。内部網絡使用的IP位址段為172.16.100.1~172.16.102.254,區域網路端口Ethernet 0的IP位址為172.16.100.1,子網路遮罩為255.255.0.0。網絡配置設定的合法IP位址範圍為202.99.160.128~202.99.160.129,子網路遮罩為255.255.255.192,可用于轉換的IP位址範圍為202.99.160.130~202.99.160.190。要求網絡部分的部分計算機可以不受任何限制地通路Internet,伺服器無需提供Internet通路服務。
既然要求網絡中的部分計算機可以不受任何限制地通路Internet,同時,伺服器無需提供Internet通路服務,那麼,隻需采用動态位址轉換+端口複用位址轉換方式即可實作。部分有特殊需求的計算機采用動态位址轉換的NAT方式,其他計算機則采用端口複用位址轉換的NAT方式。是以,部分有特殊需求的計算機可采用内部網址172.16.100.1~172.16.100.254,并動态轉換為合法位址202.99.160.130~202.99.160.189,其他計算機采用内部網址172.16.101.1~172.16.102.254,全部轉換為202.99.160.190。
ip address 10.100.100.1 255.255.255.0 //定義區域網路端口IP位址
ip nat inside //定義為局域端口
interface serial 0/0
ip address 202.99.160.129 255.255.255.192 //定義廣域網端口IP位址
ip nat outside //定義為廣域端口
ip nat pool public 202.99.160.130 202.130.160.190 netmask 255.255.255.192 //定義合法IP位址池,名稱為public
ip nat pool super 202.99.160.130 202.130.160.189 netmask 255.255.255.192 //定義合法IP位址池,名稱為super
ip nat inside source list1 pool super //定義清單達1采用動态位址轉換
ip nat inside source list2 pool public overload? //定義清單2采用端口複用位址轉換
access-list1 permit 172.16.100.0 0.0.0.255 //定義本地通路清單1
access-list2 permit 172.16.102.0 0.0.0.255 //定義本地通路清單2
access-list2 permit 172.16.102.0 0.0.0.255
示例三:靜态位址轉換+端口複用位址轉換其實在很多時候,網絡中的伺服器既為網絡内部的客戶提供網絡服務,又同時為Internet中的使用者提供通路服務。是以,如果采用端口複用位址轉換或動态位址轉換,将由于無法确定伺服器的IP位址,而導緻Internet使用者無法實作對網絡内部伺服器的通路。此時,就應當采用靜态位址轉換+端口複用位址轉換的NAT方式。也就是說,對伺服器采用靜态位址轉換,以確定伺服器擁有固定的合法IP位址。而對普通的客戶計算機則采用端口複用位址轉換,使所有使用者都享有通路Internet的權力。
區域網路采用10Mb/s光纖,以城域網方式接入Internet,如圖4-2-2所示。路由器選用擁有2個10/100 Mb/s自适應端口的Cisco 2611。内部網絡使用的IP位址段為10.18.100.1~10.18.104.254,區域網路端口Ethernet 0的IP位址為10.18.100.1,子網路遮罩為255.255.0.0。網絡配置設定的合法IP位址範圍為211.82.220.80~211.82.220.87,連接配接ISP的端口Ethernet 1的IP位址為211.82.220.81,子網路遮罩為255.255.255.248。要求網絡内部的所有計算機均可通路Internet,并且在Internet中提供Web、E-mail、FTP和Media等4種服務。
既然網絡内的伺服器要求能夠被Internet通路到,那麼,這部分主機必須擁有合法的IP位址,也就是說,伺服器必須采用靜态位址轉換。其他計算機由于沒有任何限制,是以,可采用端口複用位址轉換的NAT方式。是以,伺服器可采用内網址10.18.100.1~10.18.100.254,并分别映射為一個合法的IP位址。其他計算機則采用内部網址10.18.101.1~172.16.104.254,并全部轉換為一個合法的IP位址。
ip address 10.18.100.1 255.255.0.0 //定義區域網路口IP位址
ip nat inside //定義區域網路口
ip address 211.82.220.81 255.255.255.248 //定義廣域網口IP位址
ip nat outside //定義廣域網口
ip nat pool every 211.82.220.86 211.82.220.86 netmask 255.255.255.248 //定義合法IP位址池
access-list 1 permit 10.18.101.0 0.0.0.255 //定義本地通路清單1
access-list 1 premit 10.18.102.0 0.0.0.255
access-list 1 premit 10.18.103.0 0.0.0.255
access-list 1 premit 10.18.104.0 0.0.0.255
ip nat inside source list1 pool every overload //定義清單達1采用端口複用位址轉換
ip nat inside source static 10.18.100.10 211.82.220.82 //定義靜态位址轉換
ip nat inside source static 10.18.100.11 211.82.220.83
ip nat inside source static 10.18.100.12 211.82.220.84
ip nat inside source static 10.18.100.13 211.82.220.85
示例四:TCP/UDP端口NAT映射如果ISP提供的合法IP位址的數量較多,我們自然可以采用靜态位址轉換+端口複用動态位址轉換的方式得以完美實作。但如果ISP隻提供4個IP位址,其中2個作為網絡号和廣播位址而不可使用,1個IP位址要用于路由器定義為預設網關, 那麼将隻剩下1個IP位址可用。當然我們也可以利用這個僅存的一個IP位址采用端口複用位址轉換技術,進而實作整個區域網路的Internet接入。但是由于伺服器也采用動态端口,是以,Internet中的計算機将無法通路到網絡内部的伺服器。有沒有好的解決問題的方案呢?這就是TCP/UDP端口NAT映射。
我們知道,不同應用程式使用的TCP/UDP的端口是不同的,比如,Web服務使用50,FTP服務使用21,SMTP服務使用25,POP3服務使用110,等等。是以,可以将不同的TCP端口綁定至不同的内部IP位址,進而隻使用一個合法的IP位址,即可在允許内部所有伺服器被Internet通路的同時,實作内部所有主機對Internet通路。
區域網路采用10Mb/s光纖,以城域網方式接入Internet,如圖4-2-5所示。路由器選用擁有2個10/100 Mb/s自适應端口的Cisco 2611。内部網絡使用的IP位址段為192.168.1.1~192.168.1.254,區域網路端口Ethernet 0的IP位址為192.168.1.1,子網路遮罩為255.255.255.0。網絡配置設定的合法IP位址範圍為,211.82.220.128~211.82.220.131,連接配接ISP的端口Ethernet 1的IP位址為211.82.220.129,子網路遮罩為255.225.255.252,可用于轉換的IP位址為211.82.220.130。要求網絡内部的所有計算機均可通路Internet。
既然隻有一個可用的合法IP位址,當然隻能采用端口複用方式實作NAT,不過,由于同時又要求網絡内部的伺服器可以被Internet通路到,是以,必須使用PAT建立TCP/UDP端口的NAT映射。需要注意的是,也可以直接使用廣域端口建立TCP/UDP端口的NAT映射,也就是說,即使隻有一個IP位址,也可以完美實作端口複用。由于合法IP位址位于路由器端口上,是以,不再需要定義NAT池,隻簡單地使用inside source list語句即可。
需要注意的是,由于每種應用服務都有自己預設的端口,是以,這種NAT方式下,網絡内部每種應用服務中隻能各自有一台伺服器成為Internet中的主機,例如,隻能有一台Web伺服器,一台E-mail服務,一台FTP伺服器。盡管可以采用改變預設端口的方式建立多台應用伺服器,但這種伺服器在通路時比較困難,要求使用者必須先了解某種服務采用的新TCP端口。
ip address 192.168.1.1 255.255.255.0//指定區域網路口的IP位址
ip nat inside //指定區域網路接口
ip address 211.82.220.129 255.255.255.248 //指定廣域網口的IP位址
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list1 interface fastethernet0/1 overload //啟用端口複用位址轉換,并直接采用fastethernet0/1的IP位址。
ip nat inside source static tcp 192.168.1.11 80 202.99.160.129.80
ip nat inside source static tcp 192.168.1.12 21 202.99.160.129.21
ip nat inside source static tcp 192.168.1.13 25 202.99.160.129.25
ip nat inside source static tcp 192.168.1.13 110 202.99.160.129 110
示例五:利用位址轉換實作負載均衡随着通路量的上升,當一台伺服器難以勝任時,就必須采用負載均衡技術,将大量的通路合理地配置設定至多台伺服器上。當然,實作負載均衡的手段有許多種,比如可以采用伺服器群集負載均衡、交換機負載均衡、DNS解析負載均衡等等。
其實除此以外,也可以通過位址轉換方式實作伺服器的負載均衡。事實上,這些負載均衡的實作大多是采用輪詢方式實作的,使每台伺服器都擁有平等的被通路機會。
區域網路以2Mb/s DDN專線拉入Internet,路由器選用安裝了廣域網子產品的Cisco 2611,如圖4-2-6所示。内部網絡使用的IP位址段為10.1.1.1~10.1.3.254,區域網路端口Ethernet 0的IP位址為10.1.1.1,子網路遮罩為255.255.252.0。網絡配置設定的合法IP位址範圍為202.110.198.80~202.110.198.87,連接配接ISP的端口Ethernet 1的IP位址為202.110.198.81,子網路遮罩為255.255.255.248。要求網絡内部的所有計算機均可通路Internet,并且在3台Web伺服器和2台FTP伺服器實作負載均衡。
既然要求網絡内所有計算機都可以接入Internet,而合法IP位址又隻有5個可用,當然可采用端口複用位址轉換方式。本來對伺服器通過采用靜态位址轉換,賦予其合法IP位址即可。但是,由于伺服器的通路量太大(或者是伺服器的性能太差),不得不使用多台伺服器作負載均衡,是以,必須将一個合法IP位址轉換成多相内部IP位址,以輪詢方式減輕每台伺服器的通路壓力。
配置檔案:
ip adderss 10.1.1.1 255.255.252.0 //定義區域網路端口IP位址
ip address 202.110.198.81 255.255.255.248 //定義廣域網端口IP位址
access-list 1 permit 202.110.198.82 //定義輪詢位址清單1
access-list 2 permit 202.110.198.83 //定義輪詢位址清單2
access-list 3 permit 10.1.1.0 0.0.3.255 //定義本地通路清單3
ip nat pool websev 10.1.1.2 10.1.1.4 255.255.255.248 type rotary //定義Web伺服器的IP位址池,Rotary關鍵字表示準備使用輪詢政策從NAT池中取出相應的IP位址用于轉換進來的IP封包,通路202.110.198.82的請求将依次發送給web伺服器:10.1.1.2、10.1.1.3和10.1.1.4
ip nat pool ftpsev 10.1.1.8 10.1.1.9 255.255.255.248 type rotary //定義ftp伺服器的IP位址池。
ip nat pool normal 202.110.198.84 202.110.198.84 netmask 255.255.255.248 //定義合法IP位址池,名稱為normal
ip nat inside destination list 1 pool websev //inside destination list 語句定義與清單1相比對的IP位址的封包将使用輪詢政策
ip nat inside destination list 2 pool ftpsev