NAT 穿透讓你的內(nèi)網(wǎng)服務(wù)輕松"破墻而出"
一、什么是內(nèi)網(wǎng)穿透(NAT 穿透)?
在現(xiàn)代網(wǎng)絡(luò)環(huán)境中,絕大多數(shù)家庭和企業(yè)都通過(guò)路由器(NAT 設(shè)備)連接互聯(lián)網(wǎng)。NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)允許多個(gè)內(nèi)網(wǎng)設(shè)備共享一個(gè)公網(wǎng) IP,但也帶來(lái)了一個(gè)問(wèn)題:外部網(wǎng)絡(luò)無(wú)法直接訪(fǎng)問(wèn)內(nèi)網(wǎng)主機(jī)。內(nèi)網(wǎng)穿透(NAT 穿透)就是指讓外部網(wǎng)絡(luò)能夠訪(fǎng)問(wèn)位于 NAT 后面的內(nèi)網(wǎng)主機(jī)的技術(shù)。
常見(jiàn)應(yīng)用場(chǎng)景包括:
- 遠(yuǎn)程桌面、遠(yuǎn)程 SSH
- 內(nèi)網(wǎng)網(wǎng)站、家庭NAS、服務(wù)對(duì)外發(fā)布
- 遠(yuǎn)程監(jiān)控、物聯(lián)網(wǎng)設(shè)備管理
二、NAT 穿透的工作原理
NAT 設(shè)備會(huì)將內(nèi)網(wǎng)主機(jī)的私有 IP 地址轉(zhuǎn)換為公網(wǎng) IP 地址,并維護(hù)一個(gè)地址映射表。問(wèn)題:外部主機(jī)無(wú)法主動(dòng)發(fā)起連接到 NAT 后的內(nèi)網(wǎng)主機(jī),因?yàn)?NAT 不知道如何將數(shù)據(jù)包轉(zhuǎn)發(fā)到內(nèi)網(wǎng)。
穿透的核心思想:
- 讓內(nèi)網(wǎng)主機(jī)主動(dòng)與外部服務(wù)器建立連接(通常是公網(wǎng)服務(wù)器)
- 外部主機(jī)通過(guò)該服務(wù)器“中轉(zhuǎn)”或“協(xié)商”與內(nèi)網(wǎng)主機(jī)通信
三、常見(jiàn)的內(nèi)網(wǎng)穿透方法
1. 端口映射(Port Forwarding)
在路由器/NAT 設(shè)備上手動(dòng)配置,將某個(gè)端口的流量轉(zhuǎn)發(fā)到內(nèi)網(wǎng)主機(jī)。
- 優(yōu)點(diǎn):簡(jiǎn)單高效
- 缺點(diǎn):需要有路由器管理權(quán)限,不適用于動(dòng)態(tài) IP
2. 反向代理(Reverse Proxy)
內(nèi)網(wǎng)主機(jī)主動(dòng)連接到公網(wǎng)服務(wù)器,公網(wǎng)服務(wù)器作為代理轉(zhuǎn)發(fā)外部請(qǐng)求。
典型應(yīng)用:ngrok、frp、花生殼等。
3. NAT 穿透技術(shù)
(1) STUN(Session Traversal Utilities for NAT)
- 主要用于 UDP 協(xié)議
- 內(nèi)網(wǎng)主機(jī)通過(guò) STUN 服務(wù)器獲取自己的公網(wǎng)地址和端口
- 適用于對(duì)稱(chēng) NAT 以外的大多數(shù) NAT 類(lèi)型
(2) TURN(Traversal Using Relays around NAT)
- 當(dāng) STUN 失敗時(shí),使用 TURN 服務(wù)器中繼所有流量
- 適用于所有 NAT 類(lèi)型,但帶寬消耗大
(3) UPnP(通用即插即用)
- 內(nèi)網(wǎng)主機(jī)請(qǐng)求路由器自動(dòng)配置端口映射
- 需要路由器支持并開(kāi)啟 UPnP 功能
(4) P2P 打洞(UDP/TCP Hole Punching)
- 雙方主機(jī)同時(shí)向?qū)Ψ桨l(fā)送數(shù)據(jù)包,利用 NAT 的“連接跟蹤”特性建立直連
- 需要第三方服務(wù)器協(xié)助“牽線(xiàn)”
四、常用的內(nèi)網(wǎng)穿透工具
1. frp(Fast Reverse Proxy)
frp是一款開(kāi)源、高性能的反向代理應(yīng)用,支持 TCP、UDP、HTTP、HTTPS 等多種協(xié)議,適合自建內(nèi)網(wǎng)穿透服務(wù)。
2. ngrok
ngrok支持 HTTP、TCP 等協(xié)議的內(nèi)網(wǎng)穿透,提供公網(wǎng)訪(fǎng)問(wèn)地址,適合臨時(shí)調(diào)試和演示,有官方和第三方開(kāi)源版本,商業(yè)版可直接使用。
3. 花生殼(Oray)
國(guó)內(nèi)知名的內(nèi)網(wǎng)穿透服務(wù),它可以將位于內(nèi)網(wǎng)的設(shè)備或服務(wù)暴露在公網(wǎng)上,使用戶(hù)可以通過(guò)公網(wǎng)訪(fǎng)問(wèn)這些設(shè)備或服務(wù),提供客戶(hù)端和云端服務(wù),適合小白用戶(hù)。
4. Zerotier、Tailscale
虛擬組網(wǎng)工具,通過(guò) P2P 技術(shù)實(shí)現(xiàn)內(nèi)網(wǎng)穿透,適合組建虛擬局域網(wǎng),實(shí)現(xiàn)多地互聯(lián)。
5. OpenVPN、WireGuard
虛擬專(zhuān)用網(wǎng)(VPN)方案,通過(guò) VPN 隧道實(shí)現(xiàn)內(nèi)網(wǎng)互通,安全性高(加密傳輸)。