聯(lián)網(wǎng)那么大,為什么我家里的設(shè)備連不上外面的世界?NAT?端口映射?內(nèi)網(wǎng)穿透?
這三個到底是一個意思,還是完全不同?
別急,今天這篇文章,帶你一次性徹底搞懂這幾個網(wǎng)絡(luò)世界的“玄學”名詞。建議點贊收藏 ??,早晚用得上!
核心概念
- NAT: 網(wǎng)絡(luò)地址轉(zhuǎn)換,是一種基礎(chǔ)網(wǎng)絡(luò)機制,解決IP地址不足問題,讓多個內(nèi)網(wǎng)設(shè)備共享一個公網(wǎng)IP訪問互聯(lián)網(wǎng)。
- 端口映射: 是NAT的一種具體配置方式,由網(wǎng)絡(luò)管理員主動設(shè)置,將路由器的公網(wǎng)IP的某個端口映射到內(nèi)網(wǎng)特定設(shè)備的特定端口,允許外部主動發(fā)起訪問內(nèi)網(wǎng)服務(wù)。
- 內(nèi)網(wǎng)穿透: 是一種技術(shù)/服務(wù)/解決方案,用于在設(shè)備位于不支持端口映射或沒有公網(wǎng)IP的NAT網(wǎng)關(guān)之后的情況下,建立從公網(wǎng)到內(nèi)網(wǎng)服務(wù)的連接通道。它依賴于NAT和端口映射的原理,但通過更復(fù)雜的方式(如中繼服務(wù)器、打洞)實現(xiàn)目標。
詳解區(qū)別
NAT (Network Address Translation - 網(wǎng)絡(luò)地址轉(zhuǎn)換)
- 基礎(chǔ)機制: 是現(xiàn)代網(wǎng)絡(luò)(尤其是家庭和企業(yè)網(wǎng)絡(luò))連接互聯(lián)網(wǎng)的基礎(chǔ)。
- 默認阻止入站連接: NAT的默認行為是只允許內(nèi)網(wǎng)主動發(fā)起的連接(出站)。對于外部主動發(fā)起的、指向NAT網(wǎng)關(guān)公網(wǎng)IP的新連接請求,如果NAT映射表中沒有預(yù)先存在的對應(yīng)條目,該請求會被丟棄(防火墻功能通常也起作用)。這是保護內(nèi)網(wǎng)安全的重要屏障。
- 透明性: 對于內(nèi)網(wǎng)設(shè)備來說,訪問外網(wǎng)通常是透明的(不需要特殊配置)。
- 內(nèi)網(wǎng)設(shè)備發(fā)起出站連接(訪問外網(wǎng))時,NAT網(wǎng)關(guān)(通常是路由器)會:
- 當外網(wǎng)服務(wù)器返回數(shù)據(jù)包到達NAT網(wǎng)關(guān)時,網(wǎng)關(guān)根據(jù)映射表,將目標IP(公網(wǎng)IP)和目標端口(臨時端口)反向轉(zhuǎn)換回對應(yīng)的內(nèi)網(wǎng)設(shè)備的私有IP和私有端口,然后將數(shù)據(jù)包轉(zhuǎn)發(fā)給內(nèi)網(wǎng)設(shè)備。
- 是什么? 一種在IP網(wǎng)絡(luò)中廣泛使用的技術(shù),主要用于解決IPv4地址枯竭的問題。它允許一個局域網(wǎng)(LAN)內(nèi)的多臺設(shè)備(擁有私有IP地址,如
192.168.x.x
, 10.x.x.x
, 172.16.x.x - 172.31.x.x
) 共享一個或少量公網(wǎng)IP地址訪問互聯(lián)網(wǎng)。 - 解決的問題: 核心是解決公網(wǎng)IPv4地址不足的問題,并附帶提供了一定的內(nèi)網(wǎng)安全隔離。
- 將數(shù)據(jù)包的源IP(私有IP)替換為網(wǎng)關(guān)的公網(wǎng)IP。
- 將數(shù)據(jù)包的源端口替換為一個臨時分配的、不沖突的端口號(端口轉(zhuǎn)換,PNAT/PAT)。
- 建立一個NAT映射表(或叫連接跟蹤表),記錄這個轉(zhuǎn)換關(guān)系(私有IP:私有端口 <-> 公網(wǎng)IP:臨時端口)。
端口映射 (Port Forwarding / Port Mapping)
- 主動配置:必須由管理員手動在路由器上設(shè)置。
- 允許外部主動入站連接: 它明確地在NAT防火墻上“開了一個洞”,允許外部網(wǎng)絡(luò)主動發(fā)起連接訪問指定的內(nèi)網(wǎng)服務(wù)。
- 依賴公網(wǎng)IP: 要求路由器的WAN口擁有一個公網(wǎng)可路由的IP地址(或能被外部訪問到的IP)。如果路由器本身也在運營商級NAT之后(即沒有真正的公網(wǎng)IP),端口映射失效。
- 精準定位: 映射到特定的內(nèi)網(wǎng)IP和端口。
- 管理員在路由器上設(shè)置一條規(guī)則:當有外部連接請求到達路由器的公網(wǎng)IP的特定端口X時,路由器應(yīng)該將這個請求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)特定設(shè)備的特定端口Y上。
- 例如:
公網(wǎng)IP:8080 -> 內(nèi)網(wǎng)服務(wù)器IP(192.168.1.100):80
。 - 當外部客戶端連接
路由器公網(wǎng)IP:8080
時,路由器根據(jù)配置的映射規(guī)則,將請求的目標IP和端口修改為 192.168.1.100:80
,并將數(shù)據(jù)包轉(zhuǎn)發(fā)給該服務(wù)器。服務(wù)器響應(yīng)的數(shù)據(jù)包在返回時,路由器再反向修改源IP和端口,使其看起來是從公網(wǎng)IP:8080回復(fù)的。 - 是什么? 是管理員在NAT網(wǎng)關(guān)(路由器)上主動配置的一項規(guī)則。它屬于NAT功能的一部分,是一種靜態(tài)NAT或目的NAT。
- 解決的問題: 在擁有公網(wǎng)IP的前提下,解決讓外部網(wǎng)絡(luò)能夠主動訪問NAT網(wǎng)關(guān)后特定內(nèi)網(wǎng)服務(wù)的問題(如家里的NAS、攝像頭、Web服務(wù)器、游戲服務(wù)器等)。
內(nèi)網(wǎng)穿透 (NAT Traversal / Hole Punching)
- 解決方案: 不是單一技術(shù),是多種技術(shù)的組合或服務(wù)。
- 應(yīng)對限制: 專門解決沒有公網(wǎng)IP或無法配置端口映射的場景(如手機熱點、4G/5G網(wǎng)絡(luò)、CGNAT環(huán)境)。
- 依賴中介: 通常需要公網(wǎng)服務(wù)器(STUN/TURN/信令服務(wù)器) 的協(xié)助來發(fā)現(xiàn)地址、協(xié)調(diào)連接或中繼數(shù)據(jù)。
- 復(fù)雜性: 實現(xiàn)比端口映射復(fù)雜得多,需要專門的軟件(客戶端/服務(wù)端)或服務(wù)商(如花生殼、frp、ngrok、ZeroTier, Tailscale等)。
- 連接方向: 雖然最終目的是訪問內(nèi)網(wǎng)服務(wù),但初始連接通常是由內(nèi)網(wǎng)設(shè)備主動“向外”發(fā)起到中介服務(wù)器,再由中介引導(dǎo)建立通道。
- 利用現(xiàn)有連接: 某些協(xié)議(如FTP, SIP, ICE/STUN/TURN)在應(yīng)用層協(xié)商額外的端口,并引導(dǎo)NAT創(chuàng)建所需的映射。
- 內(nèi)網(wǎng)設(shè)備主動連接到一個擁有公網(wǎng)IP的第三方服務(wù)器(中繼服務(wù)器)。
- 服務(wù)器在兩者之間轉(zhuǎn)發(fā)數(shù)據(jù)。這是最可靠但速度最慢的方式(數(shù)據(jù)要走兩次服務(wù)器)。
- UDP打洞: 最常見。兩個內(nèi)網(wǎng)設(shè)備先各自連接公網(wǎng)協(xié)調(diào)服務(wù)器。服務(wù)器交換雙方經(jīng)過NAT轉(zhuǎn)換后的“公網(wǎng)IP:端口”信息。雙方同時嘗試向?qū)Ψ降摹肮W(wǎng)IP:端口”發(fā)送UDP包。這些初始包通常會被對方的NAT丟棄(因為沒有映射),但神奇的是,它們在自己的NAT設(shè)備上打開了一個臨時的、允許對方IP進來的“洞”。之后,雙方就能通過這個“洞”直接通信了。成功率取決于NAT類型。
- TCP打洞: 原理類似UDP,但TCP是面向連接的,實現(xiàn)更復(fù)雜,成功率更低。
- 是什么? 是一系列技術(shù)和服務(wù)的統(tǒng)稱,其目的是在設(shè)備位于不支持端口映射、沒有權(quán)限配置端口映射、或者設(shè)備本身位于多層NAT之后(運營商級NAT/CGNAT)導(dǎo)致沒有公網(wǎng)IP的情況下,實現(xiàn)從公網(wǎng)訪問內(nèi)網(wǎng)服務(wù)或建立兩個都在NAT之后的設(shè)備間的直接通信。
- 解決的問題: 在不具備端口映射條件(無公網(wǎng)IP、多層NAT、無配置權(quán)限)下,實現(xiàn)公網(wǎng)訪問內(nèi)網(wǎng)服務(wù)或NAT后設(shè)備間的P2P通信。
總結(jié)與關(guān)系圖
- NAT 是基礎(chǔ): 端口映射和內(nèi)網(wǎng)穿透都建立在NAT存在的環(huán)境之上。
- 端口映射 是 NAT 的一種主動配置方式: 它是管理員在擁有公網(wǎng)IP的NAT網(wǎng)關(guān)上直接“開端口”指向內(nèi)網(wǎng)設(shè)備,允許外部主動入站連接。簡單直接,但依賴公網(wǎng)IP和配置權(quán)限。
- 內(nèi)網(wǎng)穿透 是 繞過 NAT 限制的解決方案: 當端口映射無法實現(xiàn)(無公網(wǎng)IP、無配置權(quán)限)時,利用各種技術(shù)(中繼、打洞等)和中介服務(wù)器,在NAT的默認規(guī)則下“鉆”出一條通道,實現(xiàn)訪問或通信。更通用,但更復(fù)雜,通常需要第三方或自建服務(wù)器。
關(guān)系圖:
[ 互聯(lián)網(wǎng) / 公網(wǎng) ]
^
|
+-------------------------------------+
| [ NAT 網(wǎng)關(guān) (路由器) ] | <---- 端口映射 (管理員配置規(guī)則)
| ^ | (公網(wǎng)IP:PortX -> 內(nèi)網(wǎng)IP:PortY)
| | |
| +---------------+-----------+ |
| | | |
| [內(nèi)網(wǎng)設(shè)備A] [內(nèi)網(wǎng)設(shè)備B] |
| | (私有IP, 如192.168.1.2) | |
+-------------------------------------+
| ^
| |
| 內(nèi)網(wǎng)穿透 |
| (例如: |
| * 內(nèi)網(wǎng)設(shè)備A主動連接公網(wǎng)穿透服務(wù)器S |
| * 外部客戶端C連接服務(wù)器S |
| * S中繼A<->C的數(shù)據(jù) 或 |
| * S幫助A和C嘗試打洞建立直接連接) |
| |
+---------------------------+
對比
| NAT (網(wǎng)絡(luò)地址轉(zhuǎn)換) | | |
---|
本質(zhì) | 基礎(chǔ)網(wǎng)絡(luò)機制 | NAT的一種具體配置方式 (規(guī)則) | 技術(shù)/服務(wù)/解決方案 |
主要目的 | 解決IP不足,共享公網(wǎng)IP;內(nèi)網(wǎng)安全隔離 | 允許外部主動訪問特定內(nèi)網(wǎng)服務(wù) | 在無法端口映射時訪問內(nèi)網(wǎng)服務(wù)或建立P2P |
配置 | | 必須由管理員在NAT網(wǎng)關(guān)上手動配置 | |
連接方向 | | 允許外部主動入站 | 通常由內(nèi)網(wǎng)設(shè)備先主動出站聯(lián)系中介 |
公網(wǎng)IP要求 | | 路由器WAN口必須擁有公網(wǎng)IP | 不要求內(nèi)網(wǎng)設(shè)備或網(wǎng)關(guān)有公網(wǎng)IP |
解決場景 | | 有公網(wǎng)IP時,暴露內(nèi)網(wǎng)服務(wù) (Web, NAS等) | 無公網(wǎng)IP (CGNAT/4G/5G)、無配置權(quán)限時訪問內(nèi)網(wǎng)服務(wù)或設(shè)備間直連 |
依賴中介 | | | 通常需要公網(wǎng)第三方服務(wù)器 |
復(fù)雜度 | | | 高 (技術(shù)實現(xiàn)復(fù)雜,或依賴服務(wù)) |
例子 | | 路由器設(shè)置將公網(wǎng)8080端口映射到NAS的80端口 | 花生殼、frp、ngrok、ZeroTier, TeamViewer遠程控制 |
簡單來說
- NAT 是讓“家里所有人都能用同一個門牌號收發(fā)快遞(但只能發(fā),收需要特別說明)”。
- 端口映射 是“你告訴快遞員:送到門牌號8080的包裹,直接轉(zhuǎn)交給客廳的張三”。
- 內(nèi)網(wǎng)穿透 是“家里沒有門牌號(或者門牌號是小區(qū)共用的),張三主動聯(lián)系了一個中轉(zhuǎn)站,讓快遞先送到中轉(zhuǎn)站,中轉(zhuǎn)站再想辦法轉(zhuǎn)交給張三,或者指導(dǎo)快遞員和小區(qū)物業(yè)臨時開一個后門通道”。
?
閱讀原文:https://mp.weixin.qq.com/s/TwCBf2KJC2k3JNT22aKdpQ
該文章在 2025/6/23 12:29:54 編輯過