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