合法且注重隱私的發布

使用 Cloudflare Tunnel 與 VPN 在家匿名架設網站

本指南示範如何透過 Cloudflare Tunnel 發布本地網站,並可選擇先經由 VPN 路由 cloudflared,以隱藏住宅 IP。

隱私邊界很重要:訪客不需知道您的住宅 IP,但 Cloudflare 仍知道您的帳戶,VPN 服務商也能知道您正在連接 Cloudflare。

本文僅支持合法的隱私保護。

本指南適用於合法的自架、測試、發布與研究,不支持詐騙、惡意軟體、釣魚、騷擾或其他非法行為。

此設定實際保護什麼

實際目標不是從所有服務商消失,而是阻止一般訪客、掃描器與例行 DNS 查詢得知您的住宅 IP 或直接連到路由器。

隱藏住宅 IP 給訪客

DNS 可指向 Cloudflare 而非住宅地址,避免隨意查詢洩露網站主機位置。

保持路由器關閉

命名隧道僅為出站連線,因此網站本身不需要設定入站埠轉發。

限制直接來源暴露

您的網站可以保持在 localhost 或其他私人介面,Cloudflare 負責公開可達性。

維持現實的威脅模型

這是針對訪客的隱私保護,非對 Cloudflare、VPN 服務商或您自身帳戶痕跡的隱形。

誰還能識別您

思考匿名自宅主機最清晰的方式是分離受眾,每個受眾只知道故事的一部分。

訪客

  • 他們可以看到您的公開主機名稱、TLS 表面,以及您有意暴露的內容、標頭、分析與 Cookie。
  • 當 DNS 僅指向隧道時,他們通常看到的是 Cloudflare 邊緣 IP,而非您的住宅 IP。
  • 若您從相同裝置或瀏覽器設定登入相同後端,他們仍能指紋化管理者瀏覽器。

Cloudflare

  • Cloudflare 知道帳戶、區域、隧道 UUID、設定的主機名稱及隧道健康狀態。
  • Cloudflare 也會看到 cloudflared 用來連線的來源 IP,可能是您的住宅 IP 或 VPN 出口 IP。
  • VPN 可以隱藏 Cloudflare 所見的住宅來源 IP,但無法消除與 Cloudflare 帳戶的關聯。

VPN 服務商

  • VPN 服務商仍能看到您的裝置與 Cloudflare 維持加密流量。
  • 若 VPN 綁定您的常用電子郵件或付款身份,該關聯仍存在隧道之外。
  • VPN 會改變 Cloudflare 所見的來源 IP,但不會消除您對 VPN 服務提供者的信任。

您更廣泛的身份痕跡

  • 域名註冊資料、恢復信箱、付款與重複使用的用戶名仍可能將專案連回您。
  • 從個人瀏覽器設定登入管理面板,可能將網站與您的日常身份關聯。
  • 實務上,匿名性取決於操作紀律與隧道本身同等重要。

流量路徑運作原理

清晰路徑很簡單:公開端終止於 Cloudflare,私有端保持本地服務,僅 cloudflared 可存取。

01 訪客

請求您的主機名稱並連至 Cloudflare 邊緣網路。

02 Cloudflare

終止 HTTPS,套用規則,並將請求轉發至命名隧道。

03 cloudflared.exe

維持從您的 Windows 機器到 Cloudflare 的出站隧道連線。

04 本地網站

在 localhost 或其他私人來源地址回應,未直接暴露於網際網路。

VPN 所在位置

若 cloudflared 先使用 VPN,Cloudflare 會將 VPN 出口 IP 視為連接來源,非住宅 IP。若 VPN 無斷線保護,斷線時 cloudflared 可能會透過正常 ISP 路徑重新連線。

cloudflared.exe 在 Windows 上的功能

cloudflared.exe 不是 VPN 也非匿名網路,它是 Cloudflare 連接器,負責驗證隧道、維持長時間出站連線,並將公開主機名稱映射到本地服務。

建立並驗證命名隧道

您可以登入一次,建立命名隧道,並重複使用以獲得穩定主機名稱,而非依賴一次性連結。

維持冗餘的出站連線

Cloudflare 文件指出每個隧道會維持多條長連線,確保路徑在某條斷線時仍具韌性。

將主機名稱映射到私有服務

設定檔可以將 app.example.com 指向 http://localhost:3000,而不會讓 localhost 變成公開來源。

可互動執行或作為 Windows 服務運行

您可以先在終端測試隧道,之後再轉為常駐 Windows 服務。

支援不只網站

Cloudflare Tunnel 可發布 HTTP、HTTPS、TCP、SSH、RDP 等私有服務,本指南專注於網站。

Windows 設定:cloudflared.exe 步驟說明

此流程假設網站已在本地運作,且您的網域已使用 Cloudflare DNS。以下範例使用 app.example.com 與本地 3000 埠服務。

以下每個命令請使用 PowerShell 7,並在複製前替換範例主機名稱、隧道名稱與本地服務。

01

步驟 1:定義您將重複使用的值

在 PowerShell 7 開始,並將範例主機名稱、隧道名稱與本地服務替換為您的值後再繼續。

CLIPowerShell 7
$TunnelName = "ghostly-home-site"
$PublicHostname = "app.example.com"
$LocalService = "http://localhost:3000"
$CloudflaredHome = "C:\Cloudflared\bin"
$ConfigPath = "$env:USERPROFILE\.cloudflared\config.yml"
02

步驟 2:準備 cloudflared.exe

重新命名下載的執行檔,建立專用資料夾並將執行檔複製進去。

CLIPowerShell 7
Rename-Item "$env:USERPROFILE\Downloads\cloudflared-windows-amd64.exe" "cloudflared.exe"
New-Item -ItemType Directory -Force $CloudflaredHome
Copy-Item "$env:USERPROFILE\Downloads\cloudflared.exe" "$CloudflaredHome\cloudflared.exe"
03

步驟 3:切換到工作資料夾並驗證執行檔

切換到該資料夾,確認 cloudflared.exe 能正常啟動後再進行認證。

CLIPowerShell 7
Set-Location $CloudflaredHome
.\cloudflared.exe --version
04

步驟 4:登入並授權 Cloudflare 區域

此步驟會開啟瀏覽器讓您授權區域,帳戶憑證會寫入預設的 .cloudflared 目錄。

CLIPowerShell 7
.\cloudflared.exe tunnel login
05

步驟 5:建立命名隧道並保存其 UUID

建立隧道後,將命令輸出中的 UUID 貼到下方變數,方便後續命令重複使用。

CLIPowerShell 7
.\cloudflared.exe tunnel create $TunnelName
$TunnelId = "<paste-the-tunnel-uuid-from-the-create-output>"
06

步驟 6:逐行撰寫 config.yml

這些命令會在您的 Windows 設定檔中建立本地 config.yml,讓隧道知道哪個公開主機名稱應轉發到哪個本地服務。

CLIPowerShell 7
Set-Content $ConfigPath "tunnel: $TunnelId"
Add-Content $ConfigPath "credentials-file: $env:USERPROFILE\.cloudflared\$TunnelId.json"
Add-Content $ConfigPath ""
Add-Content $ConfigPath "ingress:"
Add-Content $ConfigPath "  - hostname: $PublicHostname"
Add-Content $ConfigPath "    service: $LocalService"
Add-Content $ConfigPath "  - service: http_status:404"
07

步驟 7:檢查並驗證設定

先列印檔案以便檢查,再讓 cloudflared 驗證入口規則後發布 DNS。

CLIPowerShell 7
Get-Content $ConfigPath
.\cloudflared.exe tunnel ingress validate
08

步驟 8:建立 DNS 路由並檢查隧道

這告訴 Cloudflare 哪個主機名稱應指向命名隧道,供您開始提供線上流量前設定。

CLIPowerShell 7
.\cloudflared.exe tunnel route dns $TunnelName $PublicHostname
.\cloudflared.exe tunnel info $TunnelName
09

步驟 9:在前景執行隧道

測試網站時請保持此 PowerShell 7 視窗開啟,完成後按 Ctrl+C 停止。

CLIPowerShell 7
.\cloudflared.exe tunnel run $TunnelName
選用:將隧道轉為 Windows 服務

僅在互動式隧道運作後執行此步驟。請在提升權限的 PowerShell 7 視窗執行下方命令,因服務使用系統設定檔路徑與服務登錄。

01

服務步驟 1:安裝 Windows 服務外殼

為此選用步驟開啟提升權限的 PowerShell 7 視窗,並先安裝 Cloudflared 服務。

CLIPowerShell 7 (Admin)
Set-Location $CloudflaredHome
.\cloudflared.exe service install
02

服務步驟 2:將 cert.pem、憑證與設定複製到系統設定檔

Windows 服務在系統設定檔下執行,因此需要自己的 .cloudflared 資料夾,內含憑證、隧道憑證與 config.yml。

CLIPowerShell 7 (Admin)
$SystemCloudflaredHome = "C:\Windows\System32\config\systemprofile\.cloudflared"
New-Item -ItemType Directory -Force $SystemCloudflaredHome
Copy-Item "$env:USERPROFILE\.cloudflared\cert.pem" "$SystemCloudflaredHome\cert.pem"
Copy-Item "$env:USERPROFILE\.cloudflared\$TunnelId.json" "$SystemCloudflaredHome\$TunnelId.json"
Set-Content "$SystemCloudflaredHome\config.yml" "tunnel: $TunnelId"
Add-Content "$SystemCloudflaredHome\config.yml" "credentials-file: $SystemCloudflaredHome\$TunnelId.json"
Add-Content "$SystemCloudflaredHome\config.yml" ""
Add-Content "$SystemCloudflaredHome\config.yml" "ingress:"
Add-Content "$SystemCloudflaredHome\config.yml" "  - hostname: $PublicHostname"
Add-Content "$SystemCloudflaredHome\config.yml" "    service: $LocalService"
Add-Content "$SystemCloudflaredHome\config.yml" "  - service: http_status:404"
03

服務步驟 3:將 ImagePath 指向系統設定並啟動服務

Cloudflare Windows 服務文件也要求 Cloudflared ImagePath 指向系統設定檔。

CLIPowerShell 7 (Admin)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Cloudflared" -Name ImagePath -Value "C:\Cloudflared\bin\cloudflared.exe --config=C:\Windows\System32\config\systemprofile\.cloudflared\config.yml tunnel run"
sc.exe start cloudflared

此流程與 Cloudflare Windows 服務相符:將 cert.pem 與隧道憑證複製到系統設定檔,撰寫系統設定檔 config.yml,並將 Cloudflared 服務的 ImagePath 指向該設定。

VPN 位置與強化規則

隧道的私密性取決於其底層路徑。若要讓 Cloudflare 看到 VPN 出口 IP 而非住宅 IP,VPN 必須在 cloudflared 啟動前成為連接路徑的一部分。

在 cloudflared 前啟動 VPN

先驗證主機的公開 IP,若機器仍顯示 ISP IP,隧道連線時 Cloudflare 也會看到相同 IP。

使用真正的斷線保護

若 VPN 斷線且無防火牆強制規則,cloudflared 可能會透過正常住宅路徑重新連線。

保持來源在本地

盡可能將網站服務綁定在 localhost 或私人介面,確保隧道是唯一公開路徑。

將日誌視為敏感資料

Cloudflare 文件警告除錯日誌可能記錄請求 URL、方法、協議、內容長度與標頭,日常操作請使用一般日誌。

可選 VPN 推薦與比較

想要快速 VPN 快捷鍵或更全面的比較?

若想快速開始,下方輪替 VPN 按鈕會開啟一個當前選項。若想先比較多個方案,請使用完整服務商目錄。

目前輪替推薦: NordVPN

若隧道停止但 DNS 紀錄仍有效,訪客通常會看到 Cloudflare 錯誤,直到連接器恢復。雖然吵雜,但比靜默洩漏住宅 IP 好。

信任前的驗證清單

不要因網站能載入就認為設定安全,請像技術人員般檢查路徑,而非行銷人員。

DNS 解析指向 Cloudflare,而非您的住宅 IP

快速的外部查詢應該會顯示指向 Cloudflare 的紀錄,而非住宅地址。

隧道啟動前,主機會顯示 VPN 出口 IP

先檢查機器的公開 IP,了解 Cloudflare 連接端會看到什麼。

網站可在其他網路運作,無需埠轉發

從行動數據或其他外部網路測試,避免被本地路由捷徑誤導。

VPN 斷線不會允許回退到住宅網路

模擬一次失敗情況。若 cloudflared 透過 ISP 路徑重新連線,隱私模型即被破壞。

何時選擇 GhostlyShare 較簡單

GhostlyShare

若只需臨時公開預覽、快速客戶演示或 webhook 回調 URL,GhostlyShare 是更簡便的選擇,省去大部分 Cloudflare 控制台、DNS 與 config.yml 設定。

當您想完全掌控隧道、DNS、服務帳戶路徑及長期自宅主機時,使用手動 cloudflared。若重視速度勝過架構流程,則使用 GhostlyShare。

查看 GhostlyShare

匿名自宅主機常見問題

Cloudflare 還知道我是誰嗎?

是的。Cloudflare 仍知道帳戶、區域、隧道及到達其邊緣的來源 IP。VPN 可替換 Cloudflare 所見的住宅來源 IP,但無法消除 Cloudflare 帳戶關聯。

訪客會看到我的住宅 IP 嗎?

通常不會,前提是您的 DNS 僅指向 Cloudflare,且未以其他方式暴露來源。訪客會到達 Cloudflare 邊緣與公開主機名稱,而非隧道後的住宅 IP。

我需要設定路由器埠轉發嗎?

不需要。Cloudflare Tunnel 僅為出站連線,連接器會主動連向 Cloudflare,而非等待網際網路的入站流量。

我可以只在需要時執行 cloudflared.exe 嗎?

是的。暫時需要網站時可從 PowerShell 互動執行隧道,若想在登出或重啟後持續提供路由,才轉為 Windows 服務。

VPN 斷線會發生什麼?

若無斷線保護,cloudflared 可能會透過正常住宅路徑重新連線,Cloudflare 將看到住宅 ISP IP,因此失敗情況與成功同等重要。

這樣做足以讓整個專案匿名嗎?

不行。域名註冊、付款、恢復郵件、瀏覽器指紋與管理行為仍能識別您,隧道只解決部分暴露問題。

相關指南