網絡位址轉換NAT(Network Address Translation)技術作為延緩IPv4位址枯竭的方法之一,目前已經普遍流行于各種企業網絡之中。NAT技術的出現改變了原來簡答的網絡結構變得複雜,在節省IP位址和保護網絡的同時,也給網絡追蹤和網絡安全帶來了困難。本章主要學習NAT的基本配置,掌握NAT的工作原理以及在企業網絡部署中的應用。
1靜态NAT配置
1.1 實驗目的
(1)了解NAT的工作原理與用途
(2)了解NAT的分類
(3)了解ip nat inside 和ip nat outside的使用
(4)掌握靜态NAT的配置
1.2 實驗原理
1.NAT簡介
NAT最初定義在RFC1631,用在接入廣域網中,通過修改IP封包的位址資訊,實作将内部網絡的私有位址到外部網絡的公有位址的轉換。NAT的産生原因和無分類域間路由(CIDR)一樣,都是為了減緩IPv4位址耗竭的問題。NAT實作了私有位址到公有位址的轉換,使得企業内部網絡可以使用相同的私有位址,但在對外通信的時候卻可以使用公有位址通信,降低了企業對公有位址的需求。
RFC1918定義了Internet中的私有位址,主要包含以下幾類:
l A類:10.0.0.0~10.255.255.255
l B類:172.16.0.0~172.31.255.255
l C類:192.168.0.0~192.168.255.255
私有位址隻能用于企業網絡的内部通信,不用于Internet的通信,Internet上的路由器會丢棄目的IP為私有位址的封包。私有位址的出現使得每台主機的通信不必都申請公有位址,進而節省了IP位址,有助于緩解IPv4位址的枯竭。
NAT的相關術語:
NAT的一些術語
l 内部本地位址(Inside Local, IL),是指配置設定給内部網絡主機的IP位址,該位址可能是非法的未向相關機構注冊的IP位址,也可能是合法的私有網絡位址。
l 内部全局位址(Inside Global,IG),合法的全局可路由位址,在外部網絡代表着一個或多個内部本地位址。
l 外部本地位址(Outside Local,OL),外部網絡的主機在内部網絡中表現的IP位址,該位址是内部可路由位址,一般不是注冊的全局唯一位址。
l 外部全局位址(Outside Global,OG),外部網絡配置設定給外部主機的IP位址,該位址為全局可路由位址。
NAT除了應用在位址轉換外,在網絡的遷移和合并、伺服器負載均衡、建立虛拟主機等方面也有很好的應用。
2.NAT分類
NAT根據其應用主要分成以下幾類:靜态位址映射NAT,動态位址映射NAT、端口映射NAPT、NAT負載均衡。
NAT類型 | 特點 |
靜态NAT | 一個私有IP固定映射一個公有IP位址,提供内網伺服器的對外通路服務 |
動态NAT | 私有IP映射位址池中的公有IP,映射關系是動态的,臨時的 |
NAPT | 私有IP位址和端口号與同一個公有位址加端口進行映射 |
靜态轉換NAT是最簡單的方式,它在NAT表中為每個需要轉換的内部位址建立了固定的轉換條目,映射了唯一的全局位址。内部位址與全局位址一一對應。如:192.168.12.2 ---- 200.268.12.2。
如圖9-1所示,内網主機A:172.16.10.10發送資料外網主機B:210.38.224.20。在資料到達網絡邊緣NAT路由器之前,封包的源IP為A的IP位址:172.16.10.10,目的IP為B的IP位址:210.38.224.20。封包到達路由器後,路由器會查找NAT映射表,取得172.16.10.10映射的内部全局位址202.80.20.1,繼而将封包的源IP位址替換為202.80.20.1,如圖中資料包2所示。在外網主機B和内網主機A的通信過程中,則會将封包的目的IP位址進行替換。
靜态映射對外隐藏了内部主機的真實IP位址,起到保護内部主機的作用。靜态NAT還可以讓外部主機通過内部全局位址通路内部的伺服器,在内網需要向外提供網絡服務而又不願意暴露真實IP位址通常使用該類NAT技術。
其他類型的NAT工作原理在本章的其他小節另有講解。
3.NAT帶來的問題
NAT技術的出現從一定程度上緩解了IPv4位址衰竭問題,但是NAT也讓主機之間的通信變得複雜,導緻通信效率的降低。NAT的應用帶來了以下限制:
l 影響網絡速度,NAT的應用會使NAT裝置變成網絡的瓶頸
l 跟某些應用不相容,如果一些應用在有效載荷中協商下次會話的IP位址和端口号,NAT将無法對内嵌IP位址進行位址轉換,造成這些程式不能正常運作
l 位址轉換不能處理IP報頭加密的封包
無法實作對IP端到端的路徑跟蹤,經過NAT位址轉換後,對資料包的路徑跟蹤變得非常困難
4.靜态NAT配置步驟
表1 靜态NAT的配置步驟
配置說明 | 指令 | |
步驟1 | 配置内部接口、和外部接口 | //進入外部接口接口模式 Router(config-if)#interface interface-id Router(config-if)#ip nat outside //進入内部接口接口模式 Router (config-if)#interface interface-id Router (config-if)#ip nat inside |
步驟2 | 配置本地位址和全局位址的靜态映射 | Router (config)#ip nat inside source static x.x.x.x(本地位址) x.x.x.x(全局位址) |
步驟4 | 檢查NAT的運作結果 | Router #show ip nat translations |
指令詳解:
(1)例1:置内網主機192.168.20.100能夠被外網主機通路,外部通路位址為:200.30.2.100,NAT映射指令如下:
Router(config)# ip nat inside source static 192.168.20.100 00.30.2.100
(2)例2:配置内網主機192.168.20.100的Web服務80端口能夠被外網通路,外部通路位址為200.30.2.100,NAT映射指令如下:
Router(config)# ip nat tcp inside source static 192.168.20.100 80 00.30.2.100 80
(3) ip nat inside source與ip nat outside source的差別
ip nat inside source表示轉換IP包的源位址,當資料包從内部發往外部;或者轉換IP包的目的位址,當資料包從外部傳輸到内部。
Ip nat outside source表示轉換IP包的源位址,當資料包從外部傳輸到内部;或者轉換IP包的目的位址,當資料包從内部發往外部。
5.靜态NAT配置執行個體
網絡拓撲圖如圖2所示。
表2靜态NAT網絡IP位址表
裝置 | 接口 | IP位址 | 子網路遮罩 |
R1 | Fa 0/0 | 192.168.1.1 | /24 |
S2/0(DCE) | 210.38.220.1 | /24 | |
R2 | S2/0 | 210.38.220.2 | /24 |
PC1 | NIC | 192.168.1.10 | /24 |
PC2 | NIC | 192.168.1.20 | /24 |
背景說明:
某公司需要通路外部網絡,但是有需要向外隐藏内部的具體IP位址。同時,本公司的PC1主機192.168.1.10需要能夠被外部主機通路,映射的本地全局位址為210.38.220.10。要求根據上述要求,配置R1和R2路由器,使得PC1能夠通路外網,PC2不能夠通路外網,外部網絡可以通路PC1。
實驗步驟:
步驟1:R1配置
R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#ip nat inside //配置f0/0接口為内部接口
R1(config-if)#no shutdown
R1(config-if)#int s2/0
R1(config-if)#clock rate 64000 //DCE,配置時鐘頻率
R1(config-if)#ip address 210.38.220.1 255.255.255.0
R1(config-if)#ip nat outside //配置f0/0接口為外部接口
R1(config-if)#no shutdown //激活接口
R1(config)#ip nat inside source static 192.168.1.10 210.38.220.10 //配置内網位址192.168.1.10到外網位址210.38.220.10的靜态映射
步驟2:R2配置
R2(config)#int s2/0
R2(config-if)#ip address 210.38.224.2 255.255.255.0 //配置接口IP位址
R2(config-if)#no shutdown
步驟3:檢查配置結果與測試
(1)測試内網主機到外網通信。PC1上ping 路由器的接口。
C:\>ping 210.38.220.2
Pinging 210.38.220.2 with 32 bytes of data:
Reply from 210.38.220.2: bytes=32 time=94ms TTL=254
Reply from 210.38.220.2: bytes=32 time=93ms TTL=254
Reply from 210.38.220.2: bytes=32 time=78ms TTL=254
Reply from 210.38.220.2: bytes=32 time=78ms TTL=254
Ping statistics for 210.38.220.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 78ms, Maximum = 94ms, Average = 85ms
(2)測試外網主機通路内網。
(3)使用debug命名檢視IP位址變化。
R2#debug ip icmp
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
在R2上使用debug指令檢視來自于PC1的ICMP封包,可以觀察到封包的源位址已經變成210.38.220.2,說明完成了靜态映射功能。
(4)檢視路由器的NAT位址轉換表。
R1#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 210.38.220.10 192.168.1.10 --- ---
在R1上使用show ip nat translations檢視路由器中的靜态映射表,可以看到Inside local(本地局部位址)和Inside global(本地全局位址)的映射關系已經建立。