NAT的四種類型及類型檢測

考慮到UDP的無狀態(tài)特性,目前針對其的NAT實現(xiàn)大致可分為Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四種。值得指出的是,對于TCP協(xié)議而言,一般來說,目前NAT中針對TCP的實現(xiàn)基本上是一致的,其間并不存在太大差異,這是因為TCP協(xié)議本身 便是面向連接的,因此無需考慮網(wǎng)絡(luò)連接無狀態(tài)所帶來復雜性。
NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是1994年提出的。當在專用網(wǎng)內(nèi)部的一些主機本來已經(jīng)分配到了本地IP地址(即僅在本專用網(wǎng)內(nèi)使用的專用地址),但現(xiàn)在又想和因特網(wǎng)上的主機通信(并不需要加密)時,可使用NAT方法。
這種方法需要在專用網(wǎng)連接到因特網(wǎng)的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉(zhuǎn)換成全球IP地址,才能和因特網(wǎng)連接。
另外,這種通過使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助于減緩可用的IP地址空間的枯竭。在RFC 1632中有對NAT的說明。
用語定義
1.內(nèi)部Tuple:指內(nèi)部主機的私有地址和端口號所構(gòu)成的二元組,即內(nèi)部主機所發(fā)送報文的源地址、端口所構(gòu)成的二元組
2.外部Tuple:指內(nèi)部Tuple經(jīng)過NAT的源地址/端口轉(zhuǎn)換之后,所獲得的外部地址、端口所構(gòu)成的二元組,即外部主機收到經(jīng)NAT轉(zhuǎn)換之后的報文時,它所看到的該報文的源地址(通常是NAT設(shè)備的地址)和源端口
3.目標Tuple:指外部主機的地址、端口所構(gòu)成的二元組,即內(nèi)部主機所發(fā)送報文的目標地址、端口所構(gòu)成的二元組
詳細釋義
1. Full Cone NAT:所有來自同一 個內(nèi)部Tuple X的請求均被NAT轉(zhuǎn)換至同一個外部Tuple Y,而不管這些請求是不是屬于同一個應(yīng)用或者是多個應(yīng)用的。除此之外,當X-Y的轉(zhuǎn)換關(guān)系建立之后,任意外部主機均可隨時將Y中的地址和端口作為目標地址 和目標端口,向內(nèi)部主機發(fā)送UDP報文,由于對外部請求的來源無任何限制,因此這種方式雖然足夠簡單,但卻不那么安全
2. Restricted Cone NAT: 它是Full Cone的受限版本:所有來自同一個內(nèi)部Tuple X的請求均被NAT轉(zhuǎn)換至同一個外部Tuple Y,這與Full Cone相同,但不同的是,只有當內(nèi)部主機曾經(jīng)發(fā)送過報文給外部主機(假設(shè)其IP地址為Z)后,外部主機才能以Y中的信息作為目標地址和目標端口,向內(nèi)部 主機發(fā)送UDP請求報文,這意味著,NAT設(shè)備只向內(nèi)轉(zhuǎn)發(fā)(目標地址/端口轉(zhuǎn)換)那些來自于當前已知的外部主機的UDP報文,從而保障了外部請求來源的安 全性
3. Port Restricted Cone NAT:它是Restricted Cone NAT的進一步受限版。只有當內(nèi)部主機曾經(jīng)發(fā)送過報文給外部主機(假設(shè)其IP地址為Z且端口為P)之后,外部主機才能以Y中的信息作為目標地址和目標端 口,向內(nèi)部主機發(fā)送UDP報文,同時,其請求報文的源端口必須為P,這一要求進一步強化了對外部報文請求來源的限制,從而較Restrictd Cone更具安全性
4. Symmetric NAT:這是一種比所有Cone NAT都要更為靈活的轉(zhuǎn)換方式:在Cone NAT中,內(nèi)部主機的內(nèi)部Tuple與外部Tuple的轉(zhuǎn)換映射關(guān)系是立于內(nèi)部主機所發(fā)出的UDP報文中的目標地址及端口的,即與目標Tuple無關(guān); 在Symmetric NAT中,目標Tuple則成為了NAT設(shè)備建立轉(zhuǎn)換關(guān)系的一個重要考量:只有來自于同一個內(nèi)部Tuple 、且針對同一目標Tuple的請求才被NAT轉(zhuǎn)換至同一個外部Tuple,否則的話,NAT將為之分配一個新的外部Tuple;打個比方,當內(nèi)部主機以相 同的內(nèi)部Tuple對2個不同的目標Tuple發(fā)送UDP報文時,此時NAT將會為內(nèi)部主機分配兩個不同的外部Tuple,并且建立起兩個不同的內(nèi)、外部 Tuple轉(zhuǎn)換關(guān)系。與此同時,只有接收到了內(nèi)部主機所發(fā)送的數(shù)據(jù)包的外部主機才能向內(nèi)部主機返回UDP報文,這里對外部返回報文來源的限制是與Port Restricted Cone一致的。不難看出,如果說Full Cone是要求最寬松NAT UDP轉(zhuǎn)換方式,那么,Symmetric NAT則是要求最嚴格的NAT方式,其不僅體現(xiàn)在轉(zhuǎn)換關(guān)系的建立上,而且還體現(xiàn)在對外部報文來源的限制方面。
P2P的NAT研究
第一部分:NAT介紹
第二部分:NAT類型檢測
第一部分: NAT介紹
各種不同類型的NAT(according to RFC)
Full Cone NAT:
內(nèi)網(wǎng)主機建立一個UDP socket(LocalIP:LocalPort) 第一次使用這個socket給外部主機發(fā)送數(shù)據(jù)時NAT會給其分配一個公網(wǎng)(PublicIP:PublicPort),以后用這個socket向外面任何主機發(fā)送數(shù)據(jù)都將使用這對(PublicIP:PublicPort)。此外,任何外部主機只要知道這個(PublicIP:PublicPort)就可以發(fā)送數(shù)據(jù)給(PublicIP:PublicPort),內(nèi)網(wǎng)的主機就能收到這個數(shù)據(jù)包
Restricted Cone NAT:
內(nèi)網(wǎng)主機建立一個UDP socket(LocalIP:LocalPort) 第一次使用這個socket給外部主機發(fā)送數(shù)據(jù)時NAT會給其分配一個公網(wǎng)(PublicIP:PublicPort),以后用這個socket向外面任何主機發(fā)送數(shù)據(jù)都將使用這對(PublicIP:PublicPort)。此外,如果任何外部主機想要發(fā)送數(shù)據(jù)給這個內(nèi)網(wǎng)主機,只要知道這個(PublicIP:PublicPort)并且內(nèi)網(wǎng)主機之前用這個socket曾向這個外部主機IP發(fā)送過數(shù)據(jù)。只要滿足這兩個條件,這個外部主機就可以用自己的(IP,任何端口)發(fā)送數(shù)據(jù)給(PublicIP:PublicPort),內(nèi)網(wǎng)的主機就能收到這個數(shù)據(jù)包
Port Restricted Cone NAT:
內(nèi)網(wǎng)主機建立一個UDP socket(LocalIP:LocalPort) 第一次使用這個socket給外部主機發(fā)送數(shù)據(jù)時NAT會給其分配一個公網(wǎng)(PublicIP:PublicPort),以后用這個socket向外面任何主機發(fā)送數(shù)據(jù)都將使用這對(PublicIP:PublicPort)。此外,如果任何外部主機想要發(fā)送數(shù)據(jù)給這個內(nèi)網(wǎng)主機,只要知道這個(PublicIP:PublicPort)并且內(nèi)網(wǎng)主機之前用這個socket曾向這個外部主機(IP,Port)發(fā)送過數(shù)據(jù)。只要滿足這兩個條件,這個外部主機就可以用自己的(IP,Port)發(fā)送數(shù)據(jù)給(PublicIP:PublicPort),內(nèi)網(wǎng)的主機就能收到這個數(shù)據(jù)包
Symmetric NAT:
內(nèi)網(wǎng)主機建立一個UDP socket(LocalIP,LocalPort),當用這個socket第一次發(fā)數(shù)據(jù)給外部主機1時,NAT為其映射一個(PublicIP-1,Port-1),以后內(nèi)網(wǎng)主機發(fā)送給外部主機1的所有數(shù)據(jù)都是用這個(PublicIP-1,Port-1),如果內(nèi)網(wǎng)主機同時用這個socket給外部主機2發(fā)送數(shù)據(jù),第一次發(fā)送時,NAT會為其分配一個(PublicIP-2,Port-2), 以后內(nèi)網(wǎng)主機發(fā)送給外部主機2的所有數(shù)據(jù)都是用這個(PublicIP-2,Port-2).如果NAT有多于一個公網(wǎng)IP,則PublicIP-1和PublicIP-2可能不同,如果NAT只有一個公網(wǎng)IP,則Port-1和Port-2肯定不同,也就是說一定不能是PublicIP-1等于 PublicIP-2且Port-1等于Port-2。此外,如果任何外部主機想要發(fā)送數(shù)據(jù)給這個內(nèi)網(wǎng)主機,那么它首先應(yīng)該收到內(nèi)網(wǎng)主機發(fā)給他的數(shù)據(jù),然后才能往回發(fā)送,否則即使他知道內(nèi)網(wǎng)主機的一個(PublicIP,Port)也不能發(fā)送數(shù)據(jù)給內(nèi)網(wǎng)主機,這種NAT無法實現(xiàn)UDP-P2P通信。
第二部:NAT類型檢測
第一步:檢測客戶端是否有能力進行UDP通信以及客戶端是否位于NAT后?
第二步:檢測客戶端NAT是否是Full Cone NAT?
第三步:檢測客戶端NAT是否是Symmetric NAT?
第四步:檢測客戶端NAT是否是Restricted Cone NAT還是Port Restricted Cone NAT?
注:以上檢測過程中只說明了可否進行UDP-P2P的打洞通信,具體怎么通信一般要借助于Rendezvous Server。另外對于Symmetric NAT不是說完全不能進行UDP-P2P達洞通信,可以進行端口預測打洞,不過不能保證成功。
相關(guān)文章
FTTC/FTTH和FTTR有什么區(qū)別? 光纖接入方式詳細介紹
國內(nèi)主流 ISP 普遍都采用了光纖連接,常見術(shù)語包括 FTTC(光纖到路邊)、FTTB(光纖到樓宇)、FTTH(光纖到戶)和 FTTR(光纖到房間),他們之間有什么區(qū)別?詳細如下2025-03-05TP-Link PDDNS服將于務(wù)6月30日正式停運:用戶需轉(zhuǎn)向第三方DDNS服務(wù)
近期,路由器制造巨頭普聯(lián)(TP-Link)在用戶群體中引發(fā)了一系列重要變動,上個月,公司發(fā)出了一則通知,明確要求所有用戶必須通過實名認證流程,方能繼續(xù)使用其提供的DDNS服2025-02-15電腦怎么查看隱藏和顯示SSID? 服務(wù)集標識符等你來揭秘
之前我們介紹過ssid的概念,那么自己的設(shè)備怎么顯示ssid和隱藏ssid呢?下面我們就來看看詳細的教程2025-01-14SSID究竟是什么? WiFi網(wǎng)絡(luò)名稱及工作方式解析
SID可以看作是無線網(wǎng)絡(luò)的名稱,類似于有線網(wǎng)絡(luò)中的網(wǎng)絡(luò)名稱或者路由器的名稱,在無線網(wǎng)絡(luò)中,設(shè)備通過SSID來識別和連接到特定的無線網(wǎng)絡(luò)2025-01-14向日葵Q2Pro怎么樣? 貝銳向日葵Q2Pro工業(yè)級遠控設(shè)備測評
今天帶來的這款向日葵 Q2Pro ,就是一款專門用于工業(yè)設(shè)備、醫(yī)療設(shè)備等遠程控制的硬件產(chǎn)品,憑借其即插即用、斷網(wǎng)可遠控、無需被控主機安裝軟件等特性,為設(shè)備維護帶來了全2024-11-23雙頻BE5100面板AP! TP-LINK TL-7AP5100HI-PoE拆機測評
TP-LINK一款為TL-7AP5100HI-PoE 易展版的 Wi-Fi 7 AP 面板怎么樣?該面板隸屬 BE5100 規(guī)格家族,詳細請看下文拆機測評2024-06-28AP2.4g和5g的wifi區(qū)別 無線網(wǎng)2.4g和5g有什么區(qū)別
AP2.4g和5g的wifi區(qū)別 無線網(wǎng)2.4g和5g有什么區(qū)別WIFI這一名詞可謂是家喻戶曉,但是你知道2.4g和5g wifi的區(qū)別嗎2024-01-03- 無線路由器根據(jù)不同用戶群體的需求,提供了多種工作模式,只有選對了模式,才能充分發(fā)揮路由器的作用,路由器常見的三大工作模式為:路由模式、中繼模式和AP模式,不同的模2023-12-26
- 第一次測評PCIe 3.0 x1的雙口2.5G網(wǎng)卡,下面我們就來看看SSU雙口2.5G網(wǎng)卡拆機和測試雙口有沒有瓶頸2023-12-12
一篇文章告訴你公網(wǎng),私網(wǎng),內(nèi)網(wǎng),外網(wǎng)的區(qū)別
最近經(jīng)常有很多小白朋友在后臺問,公網(wǎng)、私網(wǎng)、內(nèi)網(wǎng)、外網(wǎng),這些的概念是啥樣的,又該怎么去界定2023-09-06