一、實驗概述
二、實驗準(zhǔn)備
- 設(shè)備要求:安裝 Ubuntu 22.04 系統(tǒng)的電腦(需處于內(nèi)網(wǎng)環(huán)境,如家庭WiFi);
- 必備軟件:
- openssh-server:提供SFTP文件傳輸服務(wù);
- TUTK P2P SDK:需包含 P2PTunnelAPIs 模塊(用于啟動Tunnel Server)。
- 參考資源:
- 開發(fā)流程:基于P2PTunnelAPIs和TCPIP協(xié)議開發(fā)NAS(或者攝像頭)-設(shè)備端;
- Demo路徑:
SDK目錄/Sample/Linux/Sample_P2PTunnelAPIs。
- 設(shè)備要求:安裝 Windows 系統(tǒng)的電腦(需處于外網(wǎng)環(huán)境,與服務(wù)端不在同一局域網(wǎng));
- 必備軟件:
- Xftp:Windows 平臺SFTP客戶端工具(用于文件上傳/下載);
- TUTK P2P SDK:需包含 P2PTunnelAPIs 模塊(用于啟動Tunnel Agent)。
- 參考資源:
- 開發(fā)流程:基于P2PTunnelAPIs和TCPIP協(xié)議開發(fā)NAS(或者攝像頭)-APP端;
- Demo路徑:
SDK目錄/Sample/Windows/Sample_P2PTunnel(可聯(lián)系官方獲取編譯好的客戶端)。
三、實驗步驟(基礎(chǔ)環(huán)境搭建)
sudo systemctl status ssh 查看運行狀態(tài)。Sample_P2PTunnelAPIs 的流程,啟動服務(wù)端的 Tunnel Server,完成與TUTK服務(wù)器的注冊,等待客戶端Tunnel Agent連接。Sample_P2PTunnel 的流程,啟動客戶端的 Tunnel Agent,輸入服務(wù)端設(shè)備UID,建立P2P隧道,并配置端口映射:- 目標(biāo):將內(nèi)網(wǎng)服務(wù)端的 ssh-server 22端口,映射到客戶端本地的
10001端口; - 原理:外網(wǎng)無法直接訪問內(nèi)網(wǎng)IP,通過P2PTunnel Agent將內(nèi)網(wǎng)設(shè)備的22端口映射為客戶端本地的10001端口,后續(xù)訪問本地10001端口即可穿透到內(nèi)網(wǎng)22端口。

圖 1:P2PTunnel Agent 端口映射配置(本地端口10001映射內(nèi)網(wǎng)22端口)
四、核心配置:通過Xftp訪問內(nèi)網(wǎng)服務(wù)端
- 協(xié)議:選擇
SFTP(默認(rèn)基于SSH協(xié)議,與ssh-server適配); - 主機:填寫
127.0.0.1(本地回環(huán)IP,對應(yīng)P2PTunnel Agent的映射端口); - 端口:填寫
10001(客戶端本地映射端口,與Tunnel Agent配置一致); - 用戶名:填寫 Ubuntu 服務(wù)端的登錄用戶名(如root、ubuntu等);
- 密碼:填寫 Ubuntu 服務(wù)端的登錄密碼。

圖 2:Xftp 連接參數(shù)配置(主機127.0.0.1,端口10001)

圖 3:Xftp 成功連接內(nèi)網(wǎng)服務(wù)端,展示文件目錄
- 上傳文件:選中Windows客戶端本地文件,拖拽至服務(wù)端目錄,或點擊工具欄“上傳”按鈕;
- 下載文件:選中服務(wù)端文件,拖拽至Windows本地目錄,或點擊工具欄“下載”按鈕。

圖 4:從Windows客戶端上傳文件至內(nèi)網(wǎng)服務(wù)端

圖 5:從內(nèi)網(wǎng)服務(wù)端下載文件至Windows客戶端
五、關(guān)鍵說明
1. 端口映射邏輯:P2PTunnelAPIs 本質(zhì)是建立外網(wǎng)與內(nèi)網(wǎng)的虛擬隧道,客戶端本地映射端口相當(dāng)于“隧道入口”,所有發(fā)送到該端口的數(shù)據(jù)都會通過隧道轉(zhuǎn)發(fā)到內(nèi)網(wǎng)設(shè)備的目標(biāo)端口(如22);
2. IP替換原因:127.0.0.1 是本地回環(huán)地址,僅本機可訪問,通過該地址訪問映射端口,可確保數(shù)據(jù)被Tunnel Agent捕獲并轉(zhuǎn)發(fā),避免外網(wǎng)直接訪問的限制;
3. 權(quán)限要求:服務(wù)端ssh-server需允許用戶名密碼登錄(默認(rèn)開啟),若僅允許密鑰登錄,需在Xftp中配置對應(yīng)私鑰;
4. 連接穩(wěn)定性:P2P隧道連接成功后,文件傳輸速度取決于雙方網(wǎng)絡(luò)帶寬,建議避免傳輸超大文件(如超過1GB),可分塊傳輸。
六、拓展Tips(重要?。?/h2>多協(xié)議適配方案
本實驗的SFTP(基于SSH)對接方法可直接復(fù)用至其他TCP/IP協(xié)議,核心邏輯完全一致:
- 設(shè)備端(內(nèi)網(wǎng)):無需改動,僅需啟動對應(yīng)服務(wù)(如HTTP服務(wù)80端口、FTP服務(wù)21端口、RTSP服務(wù)554端口)和 P2PTunnel Server;
- 客戶端(外網(wǎng)):
- 啟動 P2PTunnel Agent,將內(nèi)網(wǎng)服務(wù)端口映射為本地端口(如HTTP 80→本地10002);
- 在對應(yīng)客戶端軟件中,將訪問IP改為
127.0.0.1,端口改為本地映射端口(如10002),即可實現(xiàn)外網(wǎng)訪問。
示例:外網(wǎng)訪問內(nèi)網(wǎng)HTTP服務(wù)(80端口)→ 映射本地10002端口 → 瀏覽器訪問 http://127.0.0.1:10002。
多協(xié)議適配方案
本實驗的SFTP(基于SSH)對接方法可直接復(fù)用至其他TCP/IP協(xié)議,核心邏輯完全一致:
- 設(shè)備端(內(nèi)網(wǎng)):無需改動,僅需啟動對應(yīng)服務(wù)(如HTTP服務(wù)80端口、FTP服務(wù)21端口、RTSP服務(wù)554端口)和 P2PTunnel Server;
- 客戶端(外網(wǎng)):
- 啟動 P2PTunnel Agent,將內(nèi)網(wǎng)服務(wù)端口映射為本地端口(如HTTP 80→本地10002);
- 在對應(yīng)客戶端軟件中,將訪問IP改為
127.0.0.1,端口改為本地映射端口(如10002),即可實現(xiàn)外網(wǎng)訪問。
示例:外網(wǎng)訪問內(nèi)網(wǎng)HTTP服務(wù)(80端口)→ 映射本地10002端口 → 瀏覽器訪問 http://127.0.0.1:10002。
