Cisco PT模擬實驗(19) 路由器的NAT功能配置

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臺;直通線,交叉線,串口線。

實驗拓撲


blob.png

實驗步驟:

        新建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版)

RFC 3022 - Traditional IP Network Address Translator

NAT詳解:基本原理、穿越技術(P2P打洞)、端口老化等

相關文章
相關標籤/搜索