內網穿透
原文地址 https://docs.caolib.dpdns.org/network/cloudflare tunnel.html
Cloudflare Tunnel 內網穿透工具
1.簡介
1.1 介紹
官方介紹:Cloudflare Tunnel 為您提供了一種安全的方式,無需公開路由的 IP 地址即可將資源連接到 Cloudflare。使用 Tunnel,您不會將流量發送到外部 IP,而是基礎設施中的輕量級守護程序 (
cloudflared
) 創建與 Cloudflare 全球網絡的僅出站連接 。Cloudflare Tunnel 可以將 HTTP Web 服務器、SSH 服務器 、 遠程桌面和其他協議安全地連接到 Cloudflare。這樣,您的源站就可以通過 Cloudflare 提供流量,而不會受到繞過 Cloudflare 的攻擊。
有關如何在現有基礎設施中實施 Cloudflare Tunnel 的詳細信息,請參閱我們的參考架構 。
1.2 它能做什么?
這應該是很多人關心的問題,我舉個例子:
參照上面的工作圖,假設我本地電腦上運行了一個服務器,端口是8080
,這時候我希望可以通過公網訪問這個服務,一般來說我們需要一個云服務器部署這個服務,然后通過公網IP和端口進行訪問,非常麻煩。
如果使用cloudflare tunnel
實現,你只需要在cloudflare
上托管一個域名即可,無需云服務器!
2.快速開始
2.1 運行本地服務
首先你需要在本地運行你的服務,這里簡單舉個例子,新建一個js文件server.js
,添加下面代碼
const http = require('http');// 創建服務器
const server = http.createServer((req, res) => {// 設置響應頭res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8','Access-Control-Allow-Origin': '*'});// 返回文本res.end('hello cloudflared');
});// 監聽端口10086
const PORT = 10086;
server.listen(PORT, () => {console.log(`服務器運行在 http://localhost:${PORT}`);
});// 錯誤處理
server.on('error', (err) => {if (err.code === 'EADDRINUSE') {console.error(`端口 ${PORT} 已被占用,請使用其他端口`);} else {console.error('服務器錯誤:', err);}
});
然后使用下面命令啟動服務器
node .\server.js
啟動之后瀏覽器訪問 http://localhost:10086/
就能看到返回結果 hello cloudflared
2.2 安裝 Cloudflare Tunnel
2.2.1 前置條件
安裝之前先確保你已經注冊了cloudflare
賬號并且在上面托管了一個域名,確保活動狀態,下面是我托管的一個域名 kirakira.dpdns.org
,以這個域名為例,這個域名是在DigitalPlat Domain Dashboard上免費申請的,不用手機號,非常方便簡單,國內訪問可能不太穩定但至少能用
2.2.2 安裝cloudflared
1.前往Cloudflare One然后登錄,然后依次點擊網絡->Tunnels->創建隧道
2.選擇 cloudflared
3.隨便起個名字然后保存
4.我這里選擇Windows
,其他平臺選擇對應的安裝方式安裝就行
- 下載 https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi.
- 運行安裝程序。
- 以管理員身份打開命令提示符。
- 運行以下命令:
cloudflared.exe service install eyJhIjoi..................
5.安裝完成之后點擊側欄的Tunnels
可以看到創建的隧道已經激活了
2.2.3 配置tunnel
1.點擊隧道名稱然后點擊編輯
2.然后點擊添加公共主機名
[!important]
子域和路徑可以自定義設置,可以留空,服務就按照之前部署的本地服務填寫即可
下圖中的效果相當于將訪問https://子域.域/路徑的請求轉發到你本地電腦<類型://URL>,也就是:
https://api.kirakira.dpdns.org -> http://localhost:10086/
4.此時打開https://api.kirakira.dpdns.org就能看到效果了(第一次可能沒那么快,大概過幾秒會顯示)
[!tip]
補充幾點:
- 本地電腦上安裝的
cloudflared
的服務可以轉發多個端口,在公共主機名可以像上面一樣添加,服務也可以設置為其他服務- 綁定的公共主機名會在該域名下添加DNS記錄,注意不要誤刪除了
- 如果你使用Windows,可以使用下面命令啟動和停止
cloudflared
服務
- 啟動
sc start cloudflared
- 停止
sc stop cloudflared
(也可以用任務管理器停止)- 上述添加tunnel和公共主機名的過程也可以通過命令行完成 Create a tunnel (API) · Cloudflare Zero Trust docs