王霞俊
(常州輕工職業技術學院 信息工程與技術學院, 常州 213164)
NAT(Network Address Translation,網絡地址翻譯)[1,2]已經成為目前最廣泛應用的網絡技術之一,是高職院校計算機網絡相關專業的必修課程,是信息安全課程和網絡工程課程的重要內容[3-5]。高職院校不僅僅強調對專業知識的理論學習,尤其重視學生的動手實踐能力的培養與提高[6-7]。因此,其實驗/實訓實踐環節對課程教學尤為重要。
針對目前高職院校計算機網絡實驗教學的現狀和特點,依托華三云實驗室(H3C Cloud Lab,HCL又稱為H3C模擬器)模擬仿真實驗平臺,設計并實現了Basic NAT、NAPT、Easy IP、NAT Server 4種實驗方案。這樣一方面通過這種有機綜合性實驗可以加深學生對各種NAT相關技術的理解和掌握,另一方面也可以減少昂貴網絡設備的投入,提高學生完成實驗的效率[8]。同時,對激發學生的學習興趣[9,10],提高學生實踐動手能力和創新能力,提高教師的教學研究水平也具有重要意義。
Internet技術的飛速發展,使越來越多的用戶加入到互聯網,因此IP地址短缺已成為一個十分突出的問題。NAT(Network Address Translation,網絡地址翻譯)就是在IP地址日益短缺的情況下提出的[11,12]。
NAT現在已經是一個IETF標準,允許一個機構以一個地址出現在Internet上。NAT技術使得一個私有網絡可以通過Internet注冊公網IP連接到外部世界。其中,位于Inside網絡和Outside網絡中NAT由器在發送數據包之前,負責把內部私有IP地址翻譯成外部合法公網IP地址,反之亦然。NAT技術也可以應用到防火墻技術里,可以有效的隱藏內部局域網中的主機,是一種有效的網絡安全保護技術。同時,NAT可以按照用戶的需要,在局域網內部提供給外部FTP、WWW、Telnet等服務[13-16],如圖1所示。

圖1 NAT的基本工作原理
通過設計并實現Basic NAT、NAPT、Easy IP、NAT Server四種實驗方案,能夠從理論上和實踐上更好地理解和掌握各種NAT的分類及實現技術,并且在實際網絡中能夠靈活使用NAT技術。
實驗拓撲結構如圖2所示。

圖2 實驗拓撲結構
實驗設備包括2臺H3C MSR 3600路由器2臺、2臺H3C S3600系列以太網交換機及多臺PC機。
在此拓撲結構中,路由器RTA左側的網絡代表私有IP的內網,路由器RTA右側以及路由器RTB代表了公網。這里,RTA充當了NAT設備,完成內網、外網IP的轉換工作。
2.3.1 Basic NAT實驗
1) 基本IP地址和路由配置
依據圖2實驗組網圖,完成RTA和RTB命名,各接口IP地址的配置,Client_A、Client_B和上Server上的IP地址配置等。
需要在RTA上配置缺省路由去往公網路由器RTB,完整的路由配置為:
[RTA]ip route-static 0.0.0.0 0 198.76.28.2
2) 檢查連通性
分別在Client_A和Client_B上ping Server(IP地址為198.76.29.4),其結果為無法ping通。產生這種結果的原因是在公網路由器上不可能有私網的路由,從Server回應的ping 響應報文到RTB的路由表上無法找到10.0.0.0網段的路由
3) 配置Basic NAT
在RTA上配置Basic NAT:
# 首先,通過ACL定義一條rule,匹配源地址屬于10.0.0.0/24網段的數據
[RTA]acl number 2000
[RTA-acl-basic-2000]rule 0 permit source 10.0.0.0 0.0.0.255
# 其次,配置NAT地址池,設置地址池中用于地址轉換的地址范圍為:198.76.28.11到198.76.28.20,在該命令中,數字1的含義是:地址池的索引號是1
[RTA]nat address-group 1 198.76.28.11 198.76.28.20
# 最后,將地址池與ACL關聯,并在正確的接口的正確方向上下發
# 進入接口模式視圖
[RTA] interface G0/1
# 將地址池1與acl 2000關聯,并在接口出方向上應用NAT
[RTA- G0/1] nat outbound 2000 address-group 1 no-pat
在該命令中,參數no-pat的含義是:表示不使用TCP/UDP端口信息實現多對多地址轉換,也即表示使用一對一地址轉換,只轉換數據包的地址而不轉換端口信息。
4) 檢查連通性、NAT表項
從Client_A、Client_B分別ping Server,其結果是可以Ping通。
在RTA上通過display nat session命令查看NAT會話信息,依據該信息輸出,可以看到該ICMP報文的源地址10.0.0.1已經轉換成公網地址198.76.28.12,目的端口號和源端口號均為1024。源地址10.0.0.2已經轉換成公網地址198.76.28.11,目的端口號和源端口號均為512。(注意:每次實驗中顯示的轉換后的公網地址和端口號可能不同,這是正常現象。)五分鐘后再次通過該命令查看表項,發現NAT表項全部消失,產生這種現象的原因是NAT表項具有一定的老化時間(aging-time),一旦超過老化時間,NAT會刪除表項。可以通過display nat aging-time命令查看路由器的NAT默認老化時間。
2.3.2 NAPT實驗
私網客戶端Client_A、 Client_B需要訪問公網服務器Server,但由于公網地址有限(例如只有一個公網IP地址),因此動態給各客戶端分配不同公網IP地址是不可行的,需要配置NAPT(Network Address Port Translation,網絡端口地址轉換),動態地為Client_A、Client_B分配一個公網IP地址和協議端口。
1) 基本IP地址和路由配置
與2.3.1 Basic NAT實驗任務同樣,配置RTA和RTB相關接口的IP地址以及路由。
2) 檢查連通性
從Client_A、Client_B上 ping Server(IP地址為198.76.29.4),其結果是不能ping通的。
3) 配置NAPT
在RTA上配置NAPT:
#首先,通過通過ACL定義一條rule,匹配源地址屬于10.0.0.0/24網段的數據
[RTA]acl number 2000
[RTA-acl-basic-2000]rule 0 permit source 10.0.0.0 0.0.0.255
#其次,配置NAT地址池1,地址池中只放入一個地址198.76.28.11
[RTA-acl-basic-2000]nat address-group 1 198.76.28.11 198.76.28.11
#在接口視圖下,將NAT地址池與ACL綁定并下發
[RTA] interface G0/1
[RTA- G0/1] nat outbound 2000 address-group 1
注意,這里NAPT配置命令中,不需要攜帶no-pat參數,意味著NAT要對數據包進行端口的轉換。
4) 檢查連通性、NAT表項
從Client_A、Client_B上分別ping Server,其結果是可以ping通。
在RTA上通過display nat session命令查看NAT會話信息,依據該信息輸出,可以看到源地址10.0.0.1和10.0.0.2轉換成的公網地址分別為198.76.28.11和198.76.28.11,10.0.0.1轉換后的端口為12289,10.0.0.2轉換后的端口為12288。當RTA出接口收到目的地址為198.76.28.11的回程流量時,正是用當初轉換時賦予的不同的端口來分辯該流量是轉發給10.0.0.1還是10.0.0.2。NAPT正是靠這種方式,對數據包的IP層和傳輸層信息同時進行轉換,顯著地提高公有IP地址的利用效率。
2.3.3 Easy IP實驗
私網客戶端Client_A、Client_B需要訪問公網服務器Server,但沒有公網IP地址可用。所以,只能用路由器公網接口IP地址動態為Client_A、Client_B分配公網地址和協議端口。
1) 基本IP地址和路由配置
與2.3.1 Basic NAT實驗任務同樣,配置RTA和RTB相關接口的IP地址以及路由。
2) 檢查連通性
從Client_A、Client_B ping Server(IP地址為198.76.29.4),其結果是無法ping通。
3) 配置Easy IP
在RTA上配置Easy IP:
#首先,通過通過ACL定義一條rule,匹配源地址屬于10.0.0.0/24網段的數據
[RTA]acl number 2000
[RTA-acl-basic-2000]rule 0 permit source 10.0.0.0 0.0.0.255
#然后在接口視圖下,將ACL與接口關聯,并在出方向上應用NAT
[RTA] interface G0/1
[RTA- G0/1] nat outbound 2000
4) 檢查連通性、NAT表項
從Client_A、Client_B分別ping Server,其結果是能夠ping通。
在RTA上通過display nat session命令查看NAT會話信息,依據該信息輸出,可以看到源地址10.0.0.1和10.0.0.2轉換成的公網地址分別為198.76.28.1和198.76.28.1(也就是路由器RTA的公網接口IP地址)。
2.3.4 NAT Server實驗
有時,內網的服務器,如Web、E-mail、FTP等,需要為外部用戶提供服務,前面介紹的Basic NAT、NAPT、Easy IP三種技術將無法實現。因為在RTA上始終沒有私有IP 10.0.0.0/24網段的路由,所以Server直接ping Client_A是不可達的。為了解決私有IP地址無法路由的問題,需要將內部網絡中的每個主機都被永久映射成外部網絡中的某個合法的地址,也就是這些內網服務器的私有IP地址必須采用靜態地址轉換成公網IP地址,以便外部用戶可以使用這些服務。
1) 基本IP地址和路由配置
實驗拓撲結構仍如圖2所示,只是Client_A是一個Web服務器,Client_B是一個FTP服務器。
完成RTA和RTB命名、各接口IP地址的配置,Client_A、Client_B和上Server上的IP地址配置等。
需要在RTA上配置缺省路由去往公網路由器RTB,完整的路由配置為:
[RTA]ip route-static 0.0.0.0 0 198.76.28.2
2) 檢查連通性
分別在Client_A和Client_B上ping Server(IP地址為198.76.29.4),其結果為無法ping通。
在Server上ping Client_A和Client_B,其結果也為無法ping通。
3) 配置NAT Server
在RTA上配置NAT Server:
# 首先,通過通過ACL定義一條rule,匹配源地址屬于10.0.0.0/24網段的數據
[RTA]acl number 2000
[RTA-acl-basic-2000]rule 0 permit source 10.0.0.0 0.0.0.255
# 其次,配置NAT地址池,地址范圍為:198.76.28.11到198.76.28.20
[RTA]nat address-group 1 198.76.28.11 198.76.28.20
#進入接口模式,在出接口上將私網服務器地址和公網地址做一對一NAT映射綁定
#將公網地址198.76.28.11與私有地址10.0.0.1一對一NAT映射綁定
[RTA]interface G0/1
[RTA- G0/1]nat server protocol tcp global 198.76.28.11 80 inside 10.0.1.1 80
#將公網地址198.76.28.12與私有地址10.0.0.2一對一NAT映射綁定
[RTA- G0/1]nat server protocol tcp global 198.76.28.12 21 inside 10.0.1.2 21
# 配置Basic NAT,以便其他內網機器可以訪問外網
#將地址池1與acl 2000關聯,并在接口出方向上應用NAT
[RTA- G0/1] nat outbound 2000 address-group 1 no-pat
4) 檢查連通性、查看NAT表項
從Client_A、Client_B分別ping Server,其結果是能夠ping通。
從Server主動ping Client_A的公網地址198.76.28.11,其結果是可以ping通。
從Server主動ping Client_B的公網地址198.76.28.12,其結果是可以ping通。
在Server上,通過瀏覽器訪問http://198.76.28.11和ftp://198.76.28.12,也是可行的。
在RTA上通過display nat server命令查看NAT Server表項,表項信息中顯示出地址198.76.28.11和地址10.0.0.1,198.76.28.12和地址10.0.0.2的一對一的映射關系。
2.3.5 四種實驗方案比較
通過實驗分析,可知,Basic NAT實現私網地址與公網地址一對一動態轉換。NAPT只定義了一個公網地址,利用不同的端口號來區分,實現私網地址與公網地址的多對一轉換,適用于撥號接入Internet或動態獲得IP地址的場合。Easy IP工作原理與普通NAPT相同,是NAPT的一種特例。它直接使用路由器出接口的IP地址作為轉換后的源地址,不用預先配置地址池,適用于出接口地址無法預知的場合。而NAT Server使公網主機可以主動連接私網服務器獲取服務,是一種靜態NAT,適合于對外提供服務。
本文研究了NAT技術,設計并實現了Basic NAT、NAPT、Easy IP、NAT Server 4種實驗方案,并在H3C HCL模擬器仿真環境中給出了詳細的實驗過程。教學實踐表明,這可以使學生從理論上和實踐上更好地理解和掌握NAT技術。在此實驗方案基礎上,可以進一步延伸和豐富實驗內容。比如,增加多個內網,添加VLAN、防火墻、ACL、VPN、RIP & OSPF路由協議等。