Cisco PT模擬實驗(19) 路由器的NAT功能配置html
實驗目的: 服務器
掌握NAT網絡地址轉換的原理及功能網絡
掌握NAT地址映射和端口映射的配置方法併發
掌握廣域網(WAN)接入技術的原理tcp
實驗背景:ide
情景一:A公司企業網計劃接入互聯網,向 ISP申請了一條專線並擁有足夠的公有IP地址,現要求在路由器上配置動態NAT,從而實現公司內部主機都能訪問外網。同時,爲適應公司不斷增加的業務需求,公司欲經過Web服務器發佈網站,現要求將內網的服務器IP地址映射爲固定的全局IP地址,實現外網訪問該服務器www服務。 學習
情景二:B公司一樣計劃接入互聯網,但只申請了一個公有IP,不足以分配至內網全部主機,要求實現公司內部主機訪問外網,且外網可以訪問內網服務器的www服務。測試
技術原理:網站
在互聯網中,公有地址用於不一樣外網之間通訊,全球惟一而且能在公網上被路由;而私有地址用於網絡內部,對於不一樣內網,私有地址可重用,但私有地址沒法實現不一樣」外網-內網「或"內網-內網"之間通訊,由於私有地址不能被路由。它要與外網通訊,必須通過NAT設備(如網關,路由器)。spa
網絡地址轉換(NAT,Network Address Translation)屬於接入廣域網(WAN)技術,是一種將私有IP地址轉化爲公有IP地址的轉換技術,主要用於實現內部網絡主機訪問外部網絡的功能。根據轉換方式有基於地址映射(三層技術,雙向通訊)和基於地址端口映射(四層技術,單向通訊)兩種,常見NAT類型包括:
靜態NAT:將私網中的主機地址永久地、映射爲公網中的固定合法IP地址(一對一)。
動態NAT:經過定義一系列的合法公有地址池,將每一個內部本地地址動態地、一一映射爲合法的內部全局地址。
NAPT:將多個內部地址都映射到一個合法公網地址(外網接口或公有地址池),以不一樣的協議端口號與不一樣的內部地址相對應(多對一)。
端口映射:經過靜態配置,將私網中的主機地址及端口映射爲一個固定的公有地址及端口(一對一)。
根據NAT模型定義,可將路由器所鏈接的網絡分別視爲內部網絡(內網)和外部網絡(外網)。注意"內網與外網","私網與公網"的區別;
內部地址和外部地址:分別對應於NAT定義的內部網絡和外部網絡的全部地址;
本地地址:出如今「某個網絡」內部的全部地址,包括內部本地地址(Inside Local)和外部本地地址(Inside Global);
全局地址:出如今「某個網絡」外部的全部地址,包括內部全局地址(Outside Local)和外部全局地址(Outside Global);
NAT設備在公網和私網之間扮演代理的角色,其特色有:
NAT網關設置在私網到公網的路由出口位置,雙向流量必須都要通過NAT網關;
網絡訪問只能先由私網側發起,公網沒法主動訪問私網主機;
NAT網關在兩個訪問方向上完成兩次地址的轉換或翻譯,出方向作源信息替換,入方向作目的信息替換;
NAT網關的存在對通訊雙方是保持透明的;
NAT網關爲了實現雙向翻譯的功能,須要維護一張關聯表,把會話的信息保存下來
與通常NAT不一樣,NAPT採用TCP端口多路複用方式,經過不一樣的協議端口號與不一樣的內部地址一一對應提供併發性,內網全部主機都可共享一個公有IP地址以實現對Internet的訪問。NAPT能最大限度地節約IP地址資源,同時可隱藏內網主機,有效避免來自外網的***,所以被普遍應用於各類類型Internet接入方式和各類類型的網絡中,是最經常使用的NAT類型。
NAPT也稱「多對一」的NAT、端口地址轉換(Port Address Translations, PAT)、地址重載(Address Overloading)
與動態NAT的區別:NAPT至關於「開啓了地址重載的動態NAT」,擴展了對TCP和UDP的端口號的轉換
優點:可以使用一個全球有效IP地址得到通用性
缺點:其通訊僅限於TCP或UDP協議
NAT配置基本步驟:①定義NAT內部和外部接口;②定義您想用NAT實現的目標;③配置NAT以實現您在步驟2中所定義的目標;④驗證 NAT的運行狀況。
Cisco命令 | 命令描述 |
ip nat inside|outside | 定義NAT內部接口或外部接口 |
ip nat pool {name} {Start IP address} {End IP address} |
定義NAT地址池(內部全局地址) |
ip nat inside source |
轉換正從內部流往外部的 IP 數據包的源; 轉換正從外部流入內部的 IP 數據包的目的。 |
ip nat outside source |
轉換正從外部流入內部的 IP 數據包的源; 轉換正從內部流往外部的 IP 數據包的目的。 |
Cisco NAT執行順序(不一樣廠商則狀況也不一樣):對於inside->outside,先路由後NAT;對於outside->inside,先NAT後路由;
Cisco ACL默認拒絕全部未匹配到規則的數據包,在流量控制方面通常會在規則後添加permit any一項,而在NAT容許列表中則不建議使用 permit any,NAT可能消耗過多路由器資源而引起網絡故障。
實驗設備:Router-PT 3臺;Switch_2960 2臺;PC 4臺,Server 3臺;直通線,交叉線,串口線。
實驗拓撲:
實驗步驟:
新建Cisco PT 拓撲圖
爲各PC及Server設置IP及網關地址,其中網關地址分別爲路由接口的IP地址
對各Router進行相關配置(接口IP、默認路由等) —— 對應Router.Part1
情景一(應用基本的靜態、動態NAT技術)
在Router0上定義內外網絡接口
在Router0上配置靜態NAT —— 對應Router0.Part2.1
在Router0上配置動態NAT —— 對應Router0.Part2.2
情景二(應用靜態、動態PAT技術)
在Router2上定義內外網絡接口
在Router2上配置端口映射 —— 對應Router2.Part2.1
在Router2上配置NAPT映射 —— 對應Router2.Part2.2
測試各終端(PC、Server)之間的互通性
# PC0、PC1和Server0 設置 192.168.1.2 192.168.1.3 192.168.1.100 //子網掩碼和網關 255.255.255.0 192.168.1.1
# Server1 設置 8.8.8.8 //子網掩碼和網關 255.255.255.0 8.8.8.1
# PC二、PC3和Server2 設置 172.16.1.2 172.16.1.3 172.16.1.100 //子網掩碼和網關 255.255.255.0 172.16.1.1
/*=Part1 Router0 基本配置 */ Router>enable Router#conf t Router(config)#hostname R0 R0(config)#inter f0/0 R0(config-if)#ip address 192.168.1.1 255.255.255.0 //配置f0/0接口 R0(config-if)#no shutdown R0(config-if)#exit R0(config)#interface serial 2/0 R0(config-if)#ip address 12.1.1.6 255.255.255.0 //配置s2/0接口 R0(config-if)#no shutdown R0(config-if)#exit R0(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.6 //默認向出口下一跳轉發 /*=Part2.1 靜態NAT配置 */ R0(config)#inter f0/0 R0(config-if)#ip nat inside //定義內部接口 R0(config-if)#exit R0(config)#inter s2/0 R0(config-if)#ip nat outside //定義外部接口 R0(config-if)#exit R0(config)#ip nat inside source static 192.168.1.100 12.1.1.5 //配置靜態NAT映射 /*=Part2.2 動態NAT配置 */ //因爲各PC無需指定映射固定的公有地址,此處配置爲動態NAT R0(config)#ip nat pool no-pat 12.1.1.1 12.1.1.3 netmask 255.255.255.0 //建立公有地址池no-pat(3個IP) R0(config)#access-list 7 permit 192.168.1.0 0.0.0.255 //建立訪問列表(應映射的內部網絡) R0(config)#ip nat inside source list 7 pool no-pat //將訪問列表與公有地址池關聯(未啓用「地址重載」) R0#show ip nat translations //無記錄顯示 R0#show r
/*=Part1 Router1 基本配置 */ Router>enable Router#conf t Router(config)#hostname R1 R1(config)#inter f0/0 R1(config-if)#ip address 8.8.8.1 255.255.255.0 //配置f0/0接口IP R1(config-if)#no shutdown R1(config-if)#exit R1(config)#inter s2/0 R1(config-if)#ip address 12.1.1.6 255.255.255.0 //配置s2/0接口IP R1(config-if)#clock rate 64000 //必須配置時鐘纔可通訊 R1(config-if)#no shutdown R1(config-if)#exit R1(config)#inter s3/0 R1(config-if)#ip address 23.1.1.2 255.255.255.0 //配置s3/0接口IP R1(config-if)#clock rate 64000 //必須配置時鐘纔可通訊 R1(config-if)#no shutdown R1(config-if)#exit ... //實際上,企業網管沒法對ISP路由器進行配置,且運營商通常不作外部本地地址的路由轉發,故此處不作其餘相關配置。
/*=Part1 Router2 基本配置 */ Router>enable Router#conf t Router(config)#hostname R2 R2(config)#inter f0/0 R2(config-if)#ip address 172.16.1.1 255.255.255.0 //配置f0/0接口 R2(config-if)#no shutdown R2(config-if)#exit R2(config)#interface serial 2/0 R2(config-if)#ip address 23.1.1.1 255.255.255.0 //配置s2/0接口 R2(config-if)#no shutdown R2(config-if)#exit R2(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2 //默認向出口下一跳轉發 /*=Part2.1 端口映射配置 */ R2(config)#inter f0/0 R2(config-if)#ip nat inside //定義內部接口 R2(config-if)#exit R2(config)#inter s2/0 R2(config-if)#ip nat outside //定義外部接口 R2(config-if)#exit R2(config)#ip nat inside source static tcp 172.16.1.100 80 23.1.1.1 80 //將Server2的內網IP80端口映射到外網IP80端口上 /*=Part2.2 NAPT映射配置 */ //因爲只有一個公網IP,此處將外部映射IP設置爲外部接口上的IP R2(config)#access-list 5 permit 172.16.1.0 0.0.0.255 //建立訪問列表(應映射的內部網絡) R2(config)#ip nat inside source list 5 interface Serial2/0 overload //將訪問列表與接口地址(單個IP)關聯(開啓「地址重載」) //命令另外一種形式:ip nat inside source list 5 pool xxx overload //即配置地址池只含1個外網接口的IP地址 R2#show ip nat translations //無記錄顯示 R2#show r
# A企業網 - NAT測試 PC0:ping 8.8.8.8 //外網鏈路通 PC1:ping 8.8.8.8 //NAT地址映射均成功 訪問 http://8.8.8.8 //訪問成功,映射地址固定不變 # Router0 查看映射表 show ip nat translations //有NAT映射記錄顯示,每臺內網主機對應一個公有IP # B企業網 - NAT測試 PC2:ping 8.8.8.8 //外網鏈路通 PC3:ping 8.8.8.8 //NAT端口映射均成功 訪問 http://8.8.8.8 //訪問成功 # Router2 查看映射表 show ip nat translations //有記錄顯示,全部內網主機對應公有IP的隨機端口,內網主機被隱藏
後記:關於以上四種NAT類型,我的認爲從功能實現上是一個相對合理的劃分(即基於三層的地址映射、基於四層的端口映射兩種,又分別再細分爲靜態和動態分配),但這種劃分在國內文章並很少見,詞條命名是雜亂不統一,甚至概念混淆,如部分文章將NAPT與端口映射(靜態)區分開。若是對NAT技術有較爲深刻研究或有了解的權威文獻,歡迎留言,謝謝
實驗環境: Windows 10,Cisco PT 7.0
參考資料:CCNA學習指南(第7版)