初識 NATIP 地址分為公網(wǎng)地址和私有地址。公網(wǎng)地址有 IANA 統(tǒng)一分配,用于連接互聯(lián)網(wǎng);私有地址可以自由分配,用于私有網(wǎng)絡(luò)內(nèi)部通信。
私網(wǎng)和公網(wǎng)
隨著互聯(lián)網(wǎng)用戶的快速增長,2019 年 11 月 25 日全球的公網(wǎng) IPv4 地址已耗盡。在 IPv4 地址耗盡前,使用 NAT( Network Address Translation )技術(shù)解決 IPv4 地址不夠用的問題,并持續(xù)至今。
NAT 技術(shù)的是將私有地址轉(zhuǎn)換成公網(wǎng)地址,使私有網(wǎng)絡(luò)中的主機(jī)可以通過少量公網(wǎng)地址訪問互聯(lián)網(wǎng)。
但 NAT只是一種過渡技術(shù),從根本上解決問題,是采用支持更大地址空間的下一代 IP 技術(shù),即 IPv6 協(xié)議,它提供了幾乎用不完的地址空間。
NAT技術(shù)
NAT 技術(shù)IP 地址中預(yù)留了 3 個私有地址網(wǎng)段,在私有網(wǎng)絡(luò)內(nèi),可以任意使用。
私有地址范圍
其余的 IP 地址可以在互聯(lián)網(wǎng)上使用,由 IANA 統(tǒng)一管理,稱為公網(wǎng)地址。
公網(wǎng)地址范圍
NAT 解決了 IPv4 地址不夠用的問題,另外 NAT 屏蔽了私網(wǎng)用戶真實(shí)地址,提高了私網(wǎng)用戶的安全性。
典型的 NAT 組網(wǎng)模型,網(wǎng)絡(luò)通常是被劃分為私網(wǎng)和公網(wǎng)兩部分,各自使用獨(dú)立的地址空間。私網(wǎng)使用私有地址 10.0.0.0/24 ,而公網(wǎng)使用公網(wǎng)地址。為了讓主機(jī) A 和 B 訪問互聯(lián)網(wǎng)上的服務(wù)器 Server ,需要在網(wǎng)絡(luò)邊界部署一臺 NAT 設(shè)備用于執(zhí)行地址轉(zhuǎn)換。NAT 設(shè)備通常是路由器或防火墻。
典型NAT組網(wǎng)
基本 NAT
基本 NAT 是最簡單的一種地址轉(zhuǎn)換方式,它只對數(shù)據(jù)包的 IP 層參數(shù)進(jìn)行轉(zhuǎn)換,它可分為靜態(tài) NAT 和動態(tài) NAT 。
靜態(tài) NAT 是公網(wǎng) IP 地址和私有 IP 地址有一對一的關(guān)系,一個公網(wǎng) IP 地址對應(yīng)一個私有 IP 地址,建立和維護(hù)一張靜態(tài)地址映射表。
動態(tài) NAT 是公網(wǎng) IP 地址和私有 IP 地址有一對多的關(guān)系,同一個公網(wǎng) IP 地址分配給不同的私網(wǎng)用戶使用,使用時間必須錯開。它包含一個公有 IP 地址池和一張動態(tài)地址映射表。
舉個動態(tài) NAT 栗子
私網(wǎng)主機(jī) A( 10.0.0.1 )需要訪問公網(wǎng)的服務(wù)器 Server( 61.144.249.229 ),在路由器 RT 上配置 NAT ,地址池為 219.134.180.11 ~ 219.134.180.20 ,地址轉(zhuǎn)換過程如下:
基本NAT
A 向 Server 發(fā)送報文,網(wǎng)關(guān)是 10.0.0.254 ,源地址是 10.0.0.1 ,目的地址是 61.144.249.229 。
A發(fā)包
RT 收到 IP 報文后,查找路由表,將 IP 報文轉(zhuǎn)發(fā)至出接口,由于出接口上配置了 NAT ,因此 RT 需要將源地址 10.0.0.1 轉(zhuǎn)換為公網(wǎng)地址。
RT收包
RT 從地址池中查找第一個可用的公網(wǎng)地址 219.134.180.11 ,用這個地址替換數(shù)據(jù)包的源地址,轉(zhuǎn)換后的數(shù)據(jù)包源地址為 219.134.180.11 ,目的地址不變。同時 RT 在自己的 NAT 表中添加一個表項,記錄私有地址 10.0.0.1 到 公網(wǎng)地址 219.134.180.11 的映射。RT 再將報文轉(zhuǎn)發(fā)給目的地址 61.144.249.229 。
NAT轉(zhuǎn)換
Server 收到報文后做相應(yīng)處理。
Server 發(fā)送回應(yīng)報文,報文的源地址是 61.144.249.229 ,目的地址是 219.134.180.11 。
Server發(fā)回應(yīng)包
RT 收到報文,發(fā)現(xiàn)報文的目的地址 219.134.180.11 在 NAT 地址池內(nèi),于是檢查 NAT 表,找到對應(yīng)表項后,使用私有地址 10.0.0.1 替換公網(wǎng)地址 219.134.180.11,轉(zhuǎn)換后的報文源地址不變,目的地址為 10.0.0.1 。RT 在將報文轉(zhuǎn)發(fā)給 A 。
NAT轉(zhuǎn)換
A 收到報文,地址轉(zhuǎn)換過程結(jié)束。
A收包
如果 B 也要訪問 Server ,則 RT 會從地址池中分配另一個可用公網(wǎng)地址 219.134.180.12 ,并在 NAT 表中添加一個相應(yīng)的表項,記錄 B 的私有地址 10.0.0.2 到公網(wǎng)地址 219.134.180.12 的映射關(guān)系。
B的NAT轉(zhuǎn)換
NAPT
在基礎(chǔ) NAT 中,私有地址和公網(wǎng)地址存在一對一地址轉(zhuǎn)換的對應(yīng)關(guān)系,即一個公網(wǎng)地址同時只能分配給一個私有地址。它只解決了公網(wǎng)和私網(wǎng)的通信問題,并沒有解決公網(wǎng)地址不足的問題。
NAT表
NAPT( Network Address Port Translation )對數(shù)據(jù)包的 IP 地址、協(xié)議類型、傳輸層端口號同時進(jìn)行轉(zhuǎn)換,可以明顯提高公網(wǎng) IP 地址的利用率。
NAPT的NAT表
舉個栗子
私網(wǎng)主機(jī) A( 10.0.0.1 )需要訪問公網(wǎng)的服務(wù)器 Server 的 WWW 服務(wù)( 61.144.249.229 ),在路由器 RT 上配置 NAPT ,地址池為 219.134.180.11 ~ 219.134.180.20 ,地址轉(zhuǎn)換過程如下:
A 向 Server 發(fā)送報文,網(wǎng)關(guān)是 RT( 10.0.0.254 ),源地址和端口是 10.0.0.1:1024 ,目的地址和端口是 61.144.249.229:80 。
A發(fā)包
RT 收到 IP 報文后,查找路由表,將 IP 報文轉(zhuǎn)發(fā)至出接口,由于出接口上配置了 NAPT ,因此 RT 需要將源地址 10.0.0.1:1024 轉(zhuǎn)換為公網(wǎng)地址和端口。
RT 從地址池中查找第一個可用的公網(wǎng)地址 219.134.180.11 ,用這個地址替換數(shù)據(jù)包的源地址,并查找這個公網(wǎng)地址的一個可用端口,例如 2001 ,用這個端口替換源端口。轉(zhuǎn)換后的數(shù)據(jù)包源地址為 219.134.180.11:2001 ,目的地址和端口不變。同時 RT 在自己的 NAT 表中添加一個表項,記錄私有地址 10.0.0.1:1024 到 公網(wǎng)地址 219.134.180.11:2001 的映射。RT 再將報文轉(zhuǎn)發(fā)給目的地址 61.144.249.229 。
NAPT轉(zhuǎn)換
Server 收到報文后做相應(yīng)處理。
Server 發(fā)送回應(yīng)報文,報文的源地址是 61.144.249.229:80 ,目的地址是 219.134.180.11:2001 。
Server發(fā)回應(yīng)包
RT 收到報文,發(fā)現(xiàn)報文的目的地址在 NAT 地址池內(nèi),于是檢查 NAT 表,找到對應(yīng)表項后,使用私有地址和端口 10.0.0.1:1024 替換公網(wǎng)地址 219.134.180.11:2001,轉(zhuǎn)換后的報文源地址和端口不變,目的地址和端口為 10.0.0.1:1024 。RT 再將報文轉(zhuǎn)發(fā)給 A 。
NAPT轉(zhuǎn)換
A 收到報文,地址轉(zhuǎn)換過程結(jié)束。
如果 B 也要訪問 Server ,則 RT 會從地址池中分配同一個公網(wǎng)地址 219.134.180.11 ,但分配另一個端口 3001 ,并在 NAT 表中添加一個相應(yīng)的表項,記錄 B 的私有地址 10.0.0.2:1024 到公網(wǎng)地址 219.134.180.12:3001 的映射關(guān)系。
B的NAPT轉(zhuǎn)換
Easy IP
在標(biāo)準(zhǔn)的 NAPT 配置中需要創(chuàng)建公網(wǎng)地址池,也就是必須先知道公網(wǎng) IP 地址的范圍。而在撥號接入的上網(wǎng)方式中,公網(wǎng) IP 地址是有運(yùn)營商動態(tài)分配的,無法事先確定,標(biāo)準(zhǔn)的 NAPT 無法做地址轉(zhuǎn)換。要解決這個問題,就要使用 Easy IP 。
Easy IP 又稱為基于接口的地址轉(zhuǎn)換。在地址轉(zhuǎn)換時,Easy IP 的工作原理與 NAPT 相同,對數(shù)據(jù)包的 IP 地址、協(xié)議類型、傳輸層端口號同時進(jìn)行轉(zhuǎn)換。但 Easy IP 直接使用公網(wǎng)接口的 IP 地址作為轉(zhuǎn)換后的源地址。Easy IP 適用于撥號接入互聯(lián)網(wǎng),動態(tài)獲取公網(wǎng) IP 地址的場合。
Easy IP
Easy IP 無需配置地址池,只需要配置一個 ACL(訪問控制列表),用來指定需要進(jìn)行 NAT 轉(zhuǎn)換的私有 IP 地址范圍。
NAT Server
從基本 NAT 和 NAPT 的工作原理可知,NAT 表項由私網(wǎng)主機(jī)主動向公網(wǎng)主機(jī)發(fā)起訪問而生成,公網(wǎng)主機(jī)無法主動向私網(wǎng)主機(jī)發(fā)起連接。因此 NAT 隱藏了內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu),具有屏蔽主機(jī)的作用。但是在實(shí)際應(yīng)用中,內(nèi)網(wǎng)網(wǎng)絡(luò)可能需要對外提供服務(wù),例如 Web 服務(wù),常規(guī)的 NAT 就無法滿足需求了。
為了滿足公網(wǎng)用戶訪問私網(wǎng)內(nèi)部服務(wù)器的需求,需要使用 NAT Server 功能,將私網(wǎng)地址和端口靜態(tài)映射成公網(wǎng)地址和端口,供公網(wǎng)用戶訪問。
NAT Server
舉個栗子
A 的私網(wǎng)地址為 10.0.0.1 ,端口 8080 提供 Web 服務(wù),在對公網(wǎng)提供 Web 服務(wù)時,要求端口號為 80 。在 NAT 設(shè)備上啟動 NAT Server 功能,將私網(wǎng) IP 地址和端口 10.0.0.1:8080 映射成公網(wǎng) IP 地址和端口 219.134.180.11:80 ,這樣公網(wǎng)主機(jī) C 就可以通過 219.134.180.11:80 訪問 A 的 Web 服務(wù)。
NAT ALG
基本 NAT 和 NAPT 只能識別并修改 IP 報文中的 IP 地址和端口號信息,無法修改報文內(nèi)攜帶的信息,因此對于一些 IP 報文內(nèi)攜帶網(wǎng)絡(luò)信息的協(xié)議,例如 FTP 、DNS 、SIP 、H.323 等,是無法正確轉(zhuǎn)換的。
ALG 能夠識別應(yīng)用層協(xié)議內(nèi)的網(wǎng)絡(luò)信息,在轉(zhuǎn)換 IP 地址和端口號時,也會對應(yīng)用層數(shù)據(jù)中的網(wǎng)絡(luò)信息進(jìn)行正確的轉(zhuǎn)換。
舉個栗子:ALG 處理 FTP 的 Active 模式
FTP 是一種基于 TCP 的協(xié)議,用于在客戶端和服務(wù)器間傳輸文件。FTP 協(xié)議工作時建立 2 個通道:Control 通道和 Data 通道。Control 用于傳輸 FTP 控制信息,Data 通道用于傳輸文件數(shù)據(jù)。
私網(wǎng) A( 10.0.0.1 )訪問公網(wǎng) Server( 61.144.249.229 )的 FTP 服務(wù),在 RT 上配置 NAPT,地址池為 219.134.180.11 ~ 219.134.180.20 ,地址轉(zhuǎn)換過程如下:
NAT ALG
A 發(fā)送到 Server 的 FTP Control 通道建立請求,報文源地址和端口為 10.0.0.1:1024 ,目的地址和端口為 61.144.249.229:21 ,攜帶數(shù)據(jù)是 “ IP = 10.0.0.1 port=5001 ”,即告訴 Server 自己使用 TCP 端口 5001 傳輸 Data。
A發(fā)包
RT 收到報文,建立 10.0.0.1:1024 到 219.134.180.11:2001 的映射關(guān)系,轉(zhuǎn)換源 IP 地址和 TCP 端口。根據(jù)目的端口 21 ,RT 識別出這是一個 FTP 報文,因此還要檢查應(yīng)用層數(shù)據(jù),發(fā)現(xiàn)原始數(shù)據(jù)為 “ IP = 10.0.0.1 port=5001 ”,于是為 Data 通道 10.0.0.1:5001 建立第二個映射關(guān)系:10.0.0.1:5001 到 219.134.180.11:2002 ,轉(zhuǎn)換后的報文源地址和端口為 219.134.180.11:2001 ,目的地址和端口不變,攜帶數(shù)據(jù)為 “ IP = 219.134.180.11 port=2002 ”。
NAT ALG轉(zhuǎn)換
Server 收到報文,向 A 回應(yīng) command okay 報文,F(xiàn)TP Control 通道建立成功。同時 Server 根據(jù)應(yīng)用層數(shù)據(jù)確定 A 的 Data 通道網(wǎng)絡(luò)參數(shù)為 219.134.180.11:2002 。
A 需要從 FTP 服務(wù)器下載文件,于是發(fā)起文件請求報文。Server 收到請求后,發(fā)起 Data 通道建立請求,IP 報文的源地址和端口為 61.144.249.229:20 ,目的地址和端口為 219.134.180.11:2002,并攜帶 FTP 數(shù)據(jù)。
Data通道
NAT 實(shí)戰(zhàn)基本 NAT 實(shí)驗
實(shí)驗拓?fù)鋱D
拓?fù)鋱D
實(shí)驗要求
ENSP 模擬器
PC 通過公網(wǎng)地址訪問互聯(lián)網(wǎng)
實(shí)驗步驟
根據(jù)接口 IP 地址表,配置各個設(shè)備的接口地址。
IP地址表
PC配置
RT配置
ISP配置
在 RT 上配置 NAT 配置。
NAT配置
配置基本 NAT 只需要一條命令:把私有 IP 地址轉(zhuǎn)換成公網(wǎng) IP 地址,在接口視圖下配置 nat static global global-address inside host-address 命令。默認(rèn)路由是網(wǎng)關(guān)路由器上的常見配置。使用 display nat static 命令查看 RT 上的靜態(tài) NAT 配置。
在 PC 上驗證聯(lián)網(wǎng)功能。
PC驗證結(jié)果
抓包查看 NAT 轉(zhuǎn)換效果。分別抓包 RT 的內(nèi)網(wǎng)口 G0/0/0 和外網(wǎng)口 G0/0/1 的報文,看出發(fā)送的 Echo Request 報文和接收的 Echo Reply 報文都有進(jìn)行 NAT 轉(zhuǎn)換。
RT內(nèi)網(wǎng)口抓包
RT外網(wǎng)口抓包
NAPT 實(shí)驗
實(shí)驗拓?fù)鋱D
拓?fù)鋱D
實(shí)驗要求
RT 使用 NAPT 功能
ISP 分配 4 個可用的公網(wǎng)地址:202.0.0.3 ~ 202.0.0.6
VLAN 10 的用戶使用兩個公網(wǎng)地址
VLAN 20 的用戶使用另外兩個公網(wǎng)地址
實(shí)驗步驟
根據(jù)接口 IP 地址表,配置各個設(shè)備的接口地址。配置命令可參考上一個實(shí)驗步驟 1 。
IP地址表
在 RT 上配置 NAPT 配置。
NAPT配置
在 NAPT 的配置中,使用基本 ACL 來指定私有 IP 地址范圍。ACL 2010 指定 VLAN 10 的 IP 地址空間,ACL 2020 指定 VLAN 20 的 IP 地址空間。使用 nat address-group group-index start-address end-address 命令指定公網(wǎng) IP 地址范圍,分別指定了兩個 NAT 地址組,編號分別選擇了 1 和 2 。在外網(wǎng)接口上,使用 nat outbound acl-number address-group group-index ,綁定 NAT 轉(zhuǎn)換關(guān)系。
使用 display nat address-group 命令查看 RT 上的 NAT 地址組配置。命令 display nat outbound 查看出方向 NAT 的轉(zhuǎn)換關(guān)系。
分別在 PC10 和 PC 20 上驗證上網(wǎng)功能。
PC10驗證結(jié)果
PC20驗證結(jié)果
抓包查看 NAT 轉(zhuǎn)換效果。分別抓包 RT 的內(nèi)網(wǎng)口 G0/0/1 和外網(wǎng)口 G0/0/0 的報文,查看 VLAN 10 的用戶出發(fā)送的 Echo Request 報文和接收的 Echo Reply 報文都有進(jìn)行 NAT 轉(zhuǎn)換。
RT內(nèi)網(wǎng)口VLAN10抓包
RT外網(wǎng)口抓包
其它常用 NAT 命令
NAT Server 是在接口視圖下配置,命令格式為:nat server protocol { tcp | udp } global global-address global-port inside host-address host-port 。
檢查 NAT Server 配置信息命令:display nat server 。
檢查 NAT 會話命令:display nat session all 。
啟動 NAT ALG 功能命令:nat alg all enable 。
查看 NAT ALG 功能命令:display nat alg 。
原文標(biāo)題:42張圖詳解 NAT : 換個馬甲就能上網(wǎng)
文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7492瀏覽量
88562 -
NAT
+關(guān)注
關(guān)注
0文章
141瀏覽量
16206
原文標(biāo)題:42張圖詳解 NAT : 換個馬甲就能上網(wǎng)
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論