摘要:由于互聯網用戶的迅猛發展,IP地址越來越不夠用,網絡地址轉換(NAT)的出現解決了這一問題。本文通過實例著重闡述了NAT的三種網絡地址轉換方式及地址的轉換過程。
關鍵詞:NAT 靜態轉換 動態轉換 端口多路復用
由于互聯網用戶的迅猛發展,IP地址越來越不夠用,怎么辦呢?網絡地址轉換(NAT)的出現解決了這一問題。NAT提供了局域網共享上網的簡單方案,內部網絡用戶連接互聯網時,NAT將用戶的內部IP地址轉換成一個外部公共IP地址,反之,數據從外部返回時,NAT反向將目標地址替換成初始的內部用戶的地址。簡言之,NAT的作用就是把內網的私有地址,轉化成外網的公有地址,使得內部網絡上的(被設置為私有IP地址的)主機可以訪問Internet。
那么NAT有哪些方式可以實現網絡地址的轉換呢?怎么實現?
在配置網絡地址轉換的過程之前,首先必須搞清楚內部接口和外部接口,以及在哪個外部接口上啟用NAT。通常情況下,連接到用戶內部網絡的接口是NAT內部接口,而連接到外部網絡(如Internet)的接口是NAT外部接口。NAT的實現方式有三種,即靜態轉換Static Nat、動態轉換Dynamic Nat和端口多路復用OverLoad。
①靜態轉換是指將內部網絡的私有IP地址轉換為公有IP地址時,IP地址是一對一的,是一成不變的,某個私有IP地址只轉換為某個公有IP地址。借助于靜態轉換,可以實現外部網絡對內部網絡中某些特定設備(如服務器)的訪問。
實例分析:
假設內部局域網使用的lP地址段為192.168.0.1——192.168.0.254,路由器局域網端(即默認網關)的IP地址為192.168.0.1,子網掩碼為255.255.255.0。網絡分配的合法IP地址范圍為66.158.68.128——66.158.68.135,路由器在廣域網中的IP地址為66.158.68.129,子網掩碼為255.255.255.248可用于轉換的IP地址范圍為66.158.68.130——66.158.68.134。要求將內部網址192.168.0.2——192.168.0.6分別轉換為合法IP地址66.158.68.130——66.158.68.134。
第一步,設置外部端口。
interface serial 0
ip address 66.158.68.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 66.158.68.130(將內部網絡地址192.168.0.2轉換為合法IP地址66.158.68.130)
同理可將內部網絡地址192.168.0.3轉換為合法IP地址66.158.68.131;192.168.0.4轉換為合法IP地址66.158.68.132;……;192.168.0.6轉換為合法IP地址66.158.68.134
這樣,靜態地址轉換配置就完成了。
②動態轉換是指將內部網絡的私有IP地址轉換為公用IP地址時,IP地址是不確定的,是隨機的,所有被授權訪問Internet的私有IP地址可隨機轉換為任何指定的合法IP地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作為外部地址時,就可以進行動態轉換。動態轉換可以使用多個合法外部地址集。當ISP提供的合法IP地址略少于網絡內部的計算機數量時??梢圆捎脛討B轉換的方式。
實例分析:
假設內部網絡使用的IP地址段為188.18.100.1——188.18.100.254,路由器局域網端口(即默認網關)的IP地址為188.18.100.1,子網掩碼為255.255.255.0。網絡分配的合法IP地址范圍為66.158.68.128——66.158.68.191,路由器在廣域網中的IP地址為66.158.68.129,子網掩碼為255.255.255.192,可用于轉換的IP地址范圍為66.158.68.130——66.158.68.190。要求將內部網址188.18.100.1——188.18.100.254動態轉換為合法IP地址66.158.68.130——66.158.68.190。
第一步,設置外部端口。
命令語法如下:
ip nat outside
如:interface serial 0 (進入串行端口serial 0)
ip address 66.158.68.129 255.255.255.192(將其IP地址指定為66.158.68.129,子網掩碼為255.255.255.192)
ip nat outside (將串行口serial 0設置為外網端口)
注意,可以定義多個外部端口。
第二步,設置內部端口。
命令語法如下:
ip nat inside
如:interface ethernet 0 (進入以太網端口Ethernet 0)
ip address 188.18.100.1 255.255.255.0(將其IP地址指定為188.18.100.1,子網掩碼為255.255.255.0)
ip nat inside (將Ethernet 0 設置為內網端口。)
注意,可以定義多個內部端口。
第三步,定義合法IP地址池。
命令語法如下:
ip nat pool 地址池名稱 起始IP地址 終止IP地址 子網掩碼
其中,地址池名字可以任意設定。
如:ip nat pool chinanet 66.158.68.130 66.158.68.190 netmask 255.255.255.192 (指明地址緩沖池的名稱為chinanet,IP地址范圍為66.158.68.130——66.158.68.190,子網掩碼為255.255.255.192)。需要注意的是,即使掩碼為255.255.255.0,也會由起始IP地址和終止IP地址對IP地址池進行限制。
或ip nat pool test 66.158.68.130 66.158.68.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-list 標號 permit 源地址 通配符(其中,標號為1——99之間的整數)
access-list 1 permit 188.18.100.0 0.0.0.255 (允許訪問Internet的網段為188.18.100.0——188.18.100.255,反掩碼為0.0.0.255)。需要注意的是,在這里采用的是反掩碼,而非子網掩碼。反掩碼與子網掩碼的關系為:反掩碼+子網掩碼=255.255.255.255。例如,子網掩碼為255.255.0.0,則反掩碼為0.0.255.255。
另外,如果想將多個IP地址段轉換為合法IP地址,可以添加多個訪問列表。例如,當欲將188.18.98.0——188.18.98.255和188.18.99.0——188.18.99.255轉換為合法IP地址時,應當添加下述命令:
access-list2 permit 188.18.98.0 0.0.0.255
access-list3 permit 188.18.99.0 0.0.0.255
第五步,實現網絡地址轉換。
在全局設置模式下,將由access-list指定的內部本地地址與指定的內部合法地址池進行地址轉換。命令語法如下:
ip nat inside source list 訪問列表標號pool內部合法地址池名字
如:ip nat inside source list 1 pool chinanet
如果有多個內部訪問列表,可以一一添加,以實現網絡地址轉換,如
ip nat inside source list 2 pool chinanet
ip nat inside source list 3 pool chinanet
如果有多個地址池,也可以一一添加,以增加合法地址池范圍,如
ip nat inside source list 1 pool cernet
ip nat inside source list 2 pool cernet
ip nat inside source list 3 pool cernet
這樣,動態地址轉換設置就完成了。
③端口多路復用(Port address Translation,PAT)是指改變外出數據包的源端口并進行端口轉換,即端口地址轉換(PAT,Port Address Translation)。采用端口多路復用方式,內部網絡的所有主機均可共享一個合法外部IP地址實現對Internet的訪問,從而可以最大限度地節約IP地址資源。同時,又可隱藏網絡內部的所有主機,有效避免來自internet的攻擊。因此,目前網絡中應用最多的就是端口多路復用方式。
實例分析:
假設內部網絡使用的IP地址段為8.108.108.1——8.108.108.2
54,路由器局域網端口(即默認網關)的IP地址為8.108.108.1,子網掩碼為255.255.255.0。網絡分配的合法IP地址范圍為208.88.168.0——208.88.168.3,路由器廣域網中的IP地址為208.88.168.1,子網掩碼為255.255.255.252,可用于轉換的IP地址為208.88.168.2。要求將內部網址8.108.108.1——8.108.108.254 轉換為合法IP地址208.88.168.2。
第一步,設置外部端口。
interface serial 0
ip address 208.88.168.1 255.255.255.252
ip nat outside
第二步,設置內部端口。
interface ethernet 0
ip address 8.108.108.1 255.255.255.0
ip nat inside
第三步,定義合法IP地址池。
ip nat pool onlyone 208.88.168.2 208.88.168.2 netmask 255.255.255.252 (指明地址緩沖池的名稱為onlyone,IP地址范圍為208.88.168.2,子網掩碼為255.255.255.252。由于本例只有一個IP地址可用,所以,起始IP地址與終止IP地址均為208.88.168.2。如果有多個IP地址,則應當分別鍵入起止的IP地址。)
第四步,定義內部訪問列。
access-list 1 permit 8.108.108.0 0.0.0.255 (允許訪問Internetr的網段為8.108.108.0——8.108.108.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地址。)
注意:overload是復用動態地址轉換的關鍵詞。
這樣,端口復用動態地址轉換配置就完成了。
當然,NAT不只解決IP地址不足的問題,它還有更多的應用,如實現負載均衡、針對UDP的穿透等等,這里就不再說了。
參考文獻:
[1]思科網絡技術學院教程.Allan Reid著.人民郵電出版社(2008-02出版).
作者簡介:
張知青,男,生于1971年12月,四川省仁壽縣人,現就職于四川省樂山職業技術學院。王碧玉,男,生于1971年10月,四川省樂山市沙灣區人,現就職于四川省樂山市竹根職業中專學校。