內網穿透是什麼?原理、用途和合法性說明
內網穿透是讓外網存取內網裝置的一種方法:內網裡的客戶端主動連上一台有公網 IP 的伺服器並保持連線,外部請求先到這台伺服器,再沿這條連線轉回內網。技術本身是中性的:存取自己有權管理的裝置是正常用途,私自在單位網路裡打通對外通道、或用來存取無權存取的系統,就越過了合規邊界。
內網穿透是什麼意思?它是一種讓外網存取內網裝置的技術。內網裡的裝置通常沒有公網 IP,躲在路由器或防火牆的 NAT 後面,外面的人無法主動連進來;內網穿透的做法是反過來,讓內網裡的一個客戶端程式主動連上一台有公網 IP 的伺服器,並把這條連線一直保持住。之後外部使用者存取這台公網伺服器的某個連接埠,伺服器就把請求沿著這條已經建立好的連線送回內網,再由客戶端轉給目標裝置。frp、SSH 反向隧道、各類商業穿透服務,原理都是這一套。
為什麼內網裝置需要“穿透”
內網裝置用的是私有位址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16),這些位址在網際網路上不能路由。它們上網要經過 NAT:出去的時候,NAT 裝置把源位址換成自己的公網位址,並記下這條連線的對應關係,回包按這個記錄送回內網。問題出在反方向:外面主動發來的新連線,NAT 裝置上沒有任何記錄,不知道該轉給內網哪台機器,只能丟棄。
再加上邊界防火牆通常預設拒絕所有入方向的新連線,結果就是“內網能存取外面,外面存取不了內網”。常見的情況有這幾種:
| 場景 | 外面為什麼連不進來 |
|---|---|
| 家庭寬頻 | 很多寬頻拿不到公網 IPv4,路由器 WAN 口是 100.64.0.0/10 這類運營商級 NAT 位址;即使有公網 IP,也常被封了常用連接埠 |
| 企業辦公網 | 出口防火牆只允許內部存取外部,不允許外部新建連線 |
| 機房管理網 | BMC、交換器管理口用私有位址,按規範本來就不接入公網 |
| 4G、5G 物聯網裝置 | 處在運營商的 NAT 後面,位址也會變化 |
| 雲上沒有繫結公網 IP 的主機 | 只有 VPC 內網位址,出網走 NAT 閘道器 |
內網穿透利用的是 NAT 和防火牆的一個共同特點:出方向的連線是放行的,而且這條連線上的回包也是放行的。只要讓內網先連出去,後面的資料就能順著這條連線進來。
內網穿透原理:內網主動連出,公網側轉發
以把內網 NAS(192.168.1.10:5001)開放給外部存取為例,參與的有三方:內網裡的穿透客戶端、有公網 IP 的穿透服務端(203.0.113.10)、外部存取者。
外網使用者(任意網路)
│ ② 存取 203.0.113.10:6001
▼
[ 公網伺服器 203.0.113.10:服務端監聽 7000(隧道)和 6001(對外) ]
▲ ║
│ ║ ① 內網客戶端主動連出到 7000,隧道一直保持(單線:連線發起方向)
│ ║ ③ 服務端把 6001 收到的請求放進隧道送回內網(雙線:資料方向)
│ ▼
[ 內網客戶端 192.168.1.5:在 NAT 後面,只能連出、不能被連入 ]
│ ④ 轉給內網裡的目標裝置
▼
[ 內網裝置 NAS 192.168.1.10:5001 ]
四個步驟對應四件事:
- 建立隧道:內網客戶端啟動後主動連線公網伺服器的 7000 連接埠,完成認證,告訴服務端“請把你的 6001 連接埠轉給我”。這是一條普通的出方向連線,NAT 和防火牆都會放行。
- 外部存取:外網使用者存取 203.0.113.10:6001,他並不知道背後是內網裝置。
- 反向送回:服務端把 6001 上收到的請求,透過第 1 步建立的那條連線發給內網客戶端。對 NAT 來說,這只是已有連線上的回包,照常放行。
- 轉給目標:內網客戶端把資料轉給 192.168.1.10:5001,NAS 的回應再沿原路返回。
為了讓隧道一直可用,客戶端會定時傳送心跳,防止 NAT 裝置因為連線長時間空閒而刪除記錄;連線斷了會自動重連。
不裝專門軟體,用 SSH 自帶的反向隧道就能體驗同樣的原理:
# 在內網機器上執行:把公網伺服器的 6001 連接埠轉回本機的 22 連接埠
ssh -N -o ServerAliveInterval=30 -o ExitOnForwardFailure=yes -R 6001:localhost:22 [email protected]
# 在公網伺服器上執行:連本機的 6001,就進入了內網那台機器
ssh -p 6001 內網機器的使用者名稱@localhost
SSH 服務端預設只把反向轉發的連接埠繫結在本機迴環位址上,所以上面的 6001 只能在公網伺服器本機存取,外人連不上,這本身就是一道保護;要對外開放,需要服務端的 GatewayPorts 配置允許。
還有一種變體叫點對點打洞:雙方先連上一台協調伺服器,交換各自 NAT 後的公網位址和連接埠,再嘗試直接互發 UDP 包。打通之後資料不經過中轉,速度快、不佔伺服器頻寬;但能否成功取決於兩邊的 NAT 型別,遇到對稱型 NAT 往往失敗,實際產品一般在失敗後退回中轉方式。
內網穿透和連接埠對映、VPN 的區別
這三種方式都能“從外面存取裡面”,區別在於連線由誰發起、需要什麼條件、暴露了什麼:
| 對比項 | 連接埠對映 | 內網穿透(中轉) | VPN、組網工具 |
|---|---|---|---|
| 原理 | 出口路由器或防火牆把公網 IP 某連接埠收到的包轉給內網某台機器(DNAT) | 內網客戶端主動連出,公網伺服器反向轉發 | 存取端加入虛擬網路,像在內網裡一樣存取 |
| 內網出口要有公網 IP | 需要 | 不需要 | 看方案:VPN 服務端要能被連到;組網工具多數不需要 |
| 要不要能改出口裝置的配置 | 要 | 不要 | VPN 服務端部署在邊界時要 |
| 存取端要裝軟體 | 不用 | 一般不用;用帶金鑰的存取方式時要 | 要,還要登入認證 |
| 存取範圍 | 單個連接埠 | 單個連接埠 | 整個網段,可以按策略限制 |
| 暴露面 | 內網服務直接暴露在公網 IP 上 | 服務暴露在中轉伺服器的連接埠上 | 只暴露 VPN 自身的連接埠,業務連接埠不對公網 |
| 適合 | 有公網 IP、自己管得了出口的網路 | 沒有公網 IP,或改不了出口配置 | 團隊遠端辦公、維運存取內網 |
所以“內網穿透和連接埠對映的區別”,核心就兩點:連線方向和前提條件。連接埠對映是外面直接連進來,要求出口有公網 IP 並且你能改出口裝置的配置;內網穿透是裡面先連出去,這兩個條件都不需要,代價是多了一台中轉伺服器和一段繞行。
內網穿透有啥用:常見用途
| 用途 | 例子 | 要注意的地方 |
|---|---|---|
| 遠端存取家裡的裝置 | 在外面存取家裡的 NAS、攝像頭,遠端桌面連家裡的電腦 | 速度受家裡上行頻寬限制;登入頁面不要直接暴露在公網 |
| 開發除錯 | 本地開發的網站接收第三方平台的回呼(webhook),或者臨時給客戶演示 | 除錯結束就關掉,不要把開發機長期掛在公網上 |
| 遠端維護分散的裝置 | 門店收銀機、工控機、4G 聯網的物聯網終端 | 裝置數量多時,用統一的管理平台或組網方案更好管 |
| 維運臨時存取內網 | 應急時存取沒有公網位址的伺服器或管理口 | 只能作為臨時手段,正式存取應走 VPN 或堡壘機,留下審計記錄 |
| 對外提供服務 | 在家裡或辦公室的機器上跑網站、介面 | 穩定性受寬頻和中轉影響;面向公眾的業務應放到有公網 IP 的伺服器上,並滿足備案要求 |
內網穿透違法嗎:合規邊界在哪裡
內網穿透是一種連線技術,是否合規,看的是用它做什麼、有沒有授權,而不是用了哪個軟體。以下是常識性說明,不構成法律意見,具體以所在單位的制度、寬頻服務協議和法律法規為準:
- 存取自己的裝置,屬於正常用途。用穿透遠端存取自己家裡的 NAS、自己開發機上的測試站,和使用遠端桌面、VPN 沒有本質區別。
- 在單位網路裡私自開通,違反的是單位的安全制度。穿透隧道繞過了邊界防火牆、准入和審計,等於在內網牆上自己開了一扇門。即使出發點是方便工作,也應當先經過 IT 部門審批;因此造成資料洩露的,還可能要承擔相應責任。
- 存取無權存取的系統,可能構成違法犯罪。用穿透進入不屬於自己、也沒有獲得授權的網路或系統,屬於《網路安全法》禁止的非法侵入他人網路;情節嚴重的,可能觸犯刑法中非法獲取計算機資訊系統資料、非法控制計算機資訊系統等罪名;針對國家事務、國防建設、尖端科學技術領域的計算機資訊系統,刑法另設了非法侵入計算機資訊系統罪。
- 對外提供網站要備案。透過境內的中轉伺服器、用域名向公眾提供網站服務,和普通建站一樣需要辦理 ICP 備案;很多家庭寬頻協議也約定不得私自架設對外服務的伺服器,以你簽署的協議為準。
- 不能用來繞開網路存取管理。《計算機資訊網路國際聯網管理暫行規定》要求國際聯網必須使用國家公用電信網提供的國際出入口通道,任何單位和個人不得自行建立或者使用其他通道進行國際聯網。藉助境外中轉搭建隧道、為自己或他人繞開存取管理,超出了內網穿透的正常用途。
拿不準的時候,先問單位網路管理部門或法務,比事後補救穩妥得多。
安全風險:打通的是一條進入內網的路
內網穿透的核心風險是:原本只在內網可達的服務,變成了網際網路上任何人都可能存取到的服務。
| 風險 | 後果 | 怎麼降低 |
|---|---|---|
| 公網連接埠被掃描和暴力破解 | 遠端桌面、SSH、NAS 登入頁暴露後,很快就會出現大量登入嘗試 | 只對映確實要用的連接埠;高危服務用存取端也要持有金鑰的方式,或只在本機迴環位址監聽 |
| 中轉伺服器被入侵 | 攻擊者拿到一條現成的、通往內網的隧道 | 中轉伺服器單獨加固、及時更新,客戶端和服務端之間啟用認證令牌和加密 |
| 用第三方穿透服務 | 流量經過別人的伺服器,未加密的內容對方看得到 | 只傳加密協議(HTTPS、SSH),敏感系統不走第三方中轉 |
| 隧道成為橫向移動的跳板 | 被攻破的那台裝置,可以繼續存取同網段的其他機器 | 穿透客戶端放在隔離的網段,只允許它存取指定的目標位址和連接埠 |
| 繞過審計 | 誰在什麼時候存取了什麼,沒有記錄 | 正式的維運存取走堡壘機或 VPN,用完的隧道及時關閉 |
對網路管理員來說,更現實的問題是發現別人私自開的隧道。穿透客戶端的特徵是長期保持一條到外部某個固定位址的連線,可以在伺服器上定期檢查:
# 列出所有已建立的對外連線及所屬程序,留意長期存在、目標陌生的連線
ss -tnp state established
# 查詢常見穿透客戶端的程序名,結果只作參考,程序名可以被改掉
ps -eo pid,user,etime,cmd | grep -Ei 'frpc|ngrok|ssh .*-R' | grep -v grep
最根本的辦法是在出口上做出方向控制:伺服器、管理網只允許存取業務真正需要的外部位址和連接埠,隧道就很難建起來。
在管理系統裡怎麼落地
機房裡最常見的穿透衝動,是為了在外面存取 BMC 管理口:管理網用私有位址,不在機房就夠不著。但 BMC 擁有伺服器的完全控制權,給它打一條穿透隧道,風險遠大於便利。Toplink DCIM 的做法是在每個機房部署從節點,從節點就近連線 BMC 所在的管理網,維運人員只需存取 DCIM 後台,就能在瀏覽器裡遠端開關機、開啟控制檯;每次會話自動錄影。需要讓廠商工程師臨時協助排查時,在 IPMI 遠端管理裡生成唯讀或可控制的共享連結,並限制使用次數,不必為他開一條通往管理網的隧道。
辦公室、門店裡沒有 BMC 的普通電腦和工作站,穿透客戶端跑在作業系統裡,當機、藍色畫面或關機後隧道也就斷了。這類裝置可以加裝 IPMI 遠端管理卡:它是獨立於主機板、CPU 和作業系統的硬體,有自己的網口,能遠端看畫面、操作鍵鼠和開關機。卡的網口同樣應接入管理網路,透過 VPN 或堡壘機這類正式通道存取,而不是再給它開一條穿透。
常見問題
內網穿透會比直接存取慢嗎?
一般會慢一些。資料要先到中轉伺服器再繞回來,延遲是“存取者到中轉伺服器”和“中轉伺服器到內網”兩段之和,速度取決於內網上行頻寬和中轉伺服器頻寬中較小的那個。中轉伺服器選在離內網和存取者都近的地方,繞行的代價會小一些。
有了 IPv6 還需要內網穿透嗎?
內網裝置拿到了全域性 IPv6 位址、存取方也有 IPv6 時,可以直接連線,不需要穿透;但家用路由器和光貓通常預設攔截 IPv6 的入方向連線,要在防火牆上放行對應連接埠,暴露面的問題同樣存在。存取方只有 IPv4 時,仍然連不進來。
自己搭中轉伺服器和用現成的穿透服務,怎麼選?
自建要有一台公網伺服器,自己部署服務端、打補丁,頻寬、連接埠和認證方式都由自己決定;現成服務註冊後裝客戶端就能用,省去伺服器,但頻寬、連接埠數量和域名通常受套餐限制。長期使用或要傳敏感資料,自建更可控。
內網穿透和 DDNS 是一回事嗎?
不是。DDNS 只是讓域名跟著變化的公網 IP 走,前提是你本來就有公網 IP、連接埠能從外面連進來。沒有公網 IP 的網路,配 DDNS 也連不進來,這時才需要內網穿透或 IPv6。