Vinc3nt's Life

使用 Cloudflare Tunnel 實現安全的內網穿透:從零開始的完整架設指南

2024-11-05
develop
cloudflare
tunnel
最後更新:2025-01-26
6分鐘
1105字

前言

想在家中架設服務器進行測試或省錢?無論原因如何,當我們嘗試讓本地裝置提供外部訪問時,經常會遇到難題:如何讓外網準確地找到你內網中真正提供服務的裝置和端口?Cloudflare Tunnel 提供了一個簡單的解決方案,幫助你打破這層障礙。

什麼是 Cloudflare Tunnel

Cloudflare Tunnel 是一項由 Cloudflare 提供的服務,它可以安全地將你的內部資源連接到 Cloudflare 的全球網路,而無需公開你的路由 IP 位址。透過在本地部署輕量級守護程式 cloudflared,它會建立與 Cloudflare 的加密出站連線,將流量安全地傳輸至 Cloudflare 的資料中心。這使你的伺服器 IP 位址得以隱藏,防止直接攻擊,並確保資料傳輸的安全性。

Cloudflare Tunnel 的優勢:

  • 簡易部署: 透過命令列工具即可快速設定,無需複雜的配置。
  • 內建 DDoS 保護: 自動防禦分散式阻斷服務攻擊,確保服務穩定性。
  • 整合 Zero Trust 安全模型: 與 Cloudflare Access 結合,提供零信任的存取控制,提升安全性。
  • 支援多種協定: 除了 HTTP/S,亦支援 SSH、RDP 等協定的安全連線,滿足多種需求。

Cloudflare Tunnel 特別適合需要保護內部應用程式,並希望避免公開暴露伺服器 IP 位址的使用者。

不過我們只是利用 cloudflared daemon 與 Cloudflare 的加密出站連線達成內網穿透的目的。


實作

接下來本章將帶領你一步步完成 Cloudflare Tunnel 的設置,並將本地 Nginx 服務器暴露到公網。

1. 快速部署本地 Nginx 服務器

要開始測試,首先我們需要一個本地服務器。通過以下步驟來迅速部署:

打開終端機,輸入 Docker 指令啟動 Nginx:

Terminal window
1
docker run -d -p 8080:80 --name my-nginx nginx

在瀏覽器中訪問 localhost:8080,你應該會看到 Nginx 的歡迎頁面,這意味著服務器已經成功運行。

default

這步僅是準備工作,現在就可以進行下一步配置來打開對外的通道了!


2. 配置 Cloudflare Zero Trust 進行安全的內網穿透

Cloudflare 提供的 tunnel 功能屬於其 Zero Trust 安全方案,是實現安全對外訪問的核心。若你是第一次使用 Cloudflare Zero Trust,需要先進行基本設置:

登入 Cloudflare,選擇已設置的域名。

default

點擊 go to 按鈕,進入 Zero Trust 頁面。

default

default

創建一個 Zero Trust 帳戶,隨意輸入一個域名作為名稱(後續可更改)。

default

選擇 免費方案,有興趣的人可以看一下,免費方案有什麼內容。接著我們點擊 繼續付款

default

default

然後,你會發現需要添加付款方式才能繼續下一步。

不過別擔心,請直接回到 Cloudflare 首頁並重新進入 Zero Trust。此時你已能使用 Zero Trust 的功能了。

default

default


3. 建立 Tunnel 連接並安裝 Cloudflare Connector(cloudflared)

進入 Zero Trust 設置頁面後,我們開始搭建通道:

點擊 Networks > Tunnels,選擇 Add a tunnel

default

default

指定 tunnel 類型為 Cloudflare,並為其命名(如 local_nginx)。

default

default

儲存後,進入設置引導頁。

接著需要在本地安裝 cloudflared 程式。我的電腦是 windows 64-bit,所以接下來會用此環境繼續操作:

根據作業系統版本下載並安裝 cloudflared。

default

安裝完成後,複製設置頁的指令,並以系統管理員身份開啟終端機,執行指令進行配置。

default

結果類似如下就是安裝成功了:

default

注意: 若出現權限錯誤,請確認以系統管理員身份開啟終端機。 default


4. 設定路由並驗證內網穿透成功

一旦連接成功,我們最後只需完成路由設置並驗證服務器是否可訪問:

回到 Cloudflare 配置頁,檢查 Connectors 面板的連接狀態,然後點擊下一步。

default

根據以下圖片的說明,設置 Route,然後儲存。

default

進入 DNS Records 頁面,確認剛剛的設定已留下紀錄。

default

這時可以在瀏覽器中訪問mynginx.vinny987.xyz,檢查是否能夠成功訪問本地的 Nginx。

default

5. 清理

最後,如果不使用 Cloudflare tunnel,記得要移除第三步安裝的 cloudflared service 和 tunnel:

default

default

DNS Record 也需要手動移除(移除 tunnel 並不會順道幫我們移除它):

default

本文標題:使用 Cloudflare Tunnel 實現安全的內網穿透:從零開始的完整架設指南
文章作者:Vincent Lin
發布時間:2024-11-05