合法且注重隱私的發布
使用 Cloudflare Tunnel 與 VPN 在家匿名架設網站
本指南示範如何透過 Cloudflare Tunnel 發布本地網站,並可選擇先經由 VPN 路由 cloudflared,以隱藏住宅 IP。
隱私邊界很重要:訪客不需知道您的住宅 IP,但 Cloudflare 仍知道您的帳戶,VPN 服務商也能知道您正在連接 Cloudflare。
本指南適用於合法的自架、測試、發布與研究,不支持詐騙、惡意軟體、釣魚、騷擾或其他非法行為。
目錄
此設定實際保護什麼
實際目標不是從所有服務商消失,而是阻止一般訪客、掃描器與例行 DNS 查詢得知您的住宅 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 可存取。
請求您的主機名稱並連至 Cloudflare 邊緣網路。
終止 HTTPS,套用規則,並將請求轉發至命名隧道。
維持從您的 Windows 機器到 Cloudflare 的出站隧道連線。
在 localhost 或其他私人來源地址回應,未直接暴露於網際網路。
若 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 服務。
Cloudflare Tunnel 可發布 HTTP、HTTPS、TCP、SSH、RDP 等私有服務,本指南專注於網站。
欲了解完整廠商流程,請比對您的設定與 Cloudflare 本地隧道指南 以及 Windows 服務指南.
Windows 設定:cloudflared.exe 步驟說明
此流程假設網站已在本地運作,且您的網域已使用 Cloudflare DNS。以下範例使用 app.example.com 與本地 3000 埠服務。
以下每個命令請使用 PowerShell 7,並在複製前替換範例主機名稱、隧道名稱與本地服務。
步驟 1:定義您將重複使用的值
在 PowerShell 7 開始,並將範例主機名稱、隧道名稱與本地服務替換為您的值後再繼續。
$TunnelName = "ghostly-home-site"
$PublicHostname = "app.example.com"
$LocalService = "http://localhost:3000"
$CloudflaredHome = "C:\Cloudflared\bin"
$ConfigPath = "$env:USERPROFILE\.cloudflared\config.yml"步驟 2:準備 cloudflared.exe
重新命名下載的執行檔,建立專用資料夾並將執行檔複製進去。
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"步驟 3:切換到工作資料夾並驗證執行檔
切換到該資料夾,確認 cloudflared.exe 能正常啟動後再進行認證。
Set-Location $CloudflaredHome
.\cloudflared.exe --version步驟 4:登入並授權 Cloudflare 區域
此步驟會開啟瀏覽器讓您授權區域,帳戶憑證會寫入預設的 .cloudflared 目錄。
.\cloudflared.exe tunnel login步驟 5:建立命名隧道並保存其 UUID
建立隧道後,將命令輸出中的 UUID 貼到下方變數,方便後續命令重複使用。
.\cloudflared.exe tunnel create $TunnelName
$TunnelId = "<paste-the-tunnel-uuid-from-the-create-output>"步驟 6:逐行撰寫 config.yml
這些命令會在您的 Windows 設定檔中建立本地 config.yml,讓隧道知道哪個公開主機名稱應轉發到哪個本地服務。
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"步驟 7:檢查並驗證設定
先列印檔案以便檢查,再讓 cloudflared 驗證入口規則後發布 DNS。
Get-Content $ConfigPath
.\cloudflared.exe tunnel ingress validate步驟 8:建立 DNS 路由並檢查隧道
這告訴 Cloudflare 哪個主機名稱應指向命名隧道,供您開始提供線上流量前設定。
.\cloudflared.exe tunnel route dns $TunnelName $PublicHostname
.\cloudflared.exe tunnel info $TunnelName步驟 9:在前景執行隧道
測試網站時請保持此 PowerShell 7 視窗開啟,完成後按 Ctrl+C 停止。
.\cloudflared.exe tunnel run $TunnelName僅在互動式隧道運作後執行此步驟。請在提升權限的 PowerShell 7 視窗執行下方命令,因服務使用系統設定檔路徑與服務登錄。
服務步驟 1:安裝 Windows 服務外殼
為此選用步驟開啟提升權限的 PowerShell 7 視窗,並先安裝 Cloudflared 服務。
Set-Location $CloudflaredHome
.\cloudflared.exe service install服務步驟 2:將 cert.pem、憑證與設定複製到系統設定檔
Windows 服務在系統設定檔下執行,因此需要自己的 .cloudflared 資料夾,內含憑證、隧道憑證與 config.yml。
$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"服務步驟 3:將 ImagePath 指向系統設定並啟動服務
Cloudflare Windows 服務文件也要求 Cloudflared ImagePath 指向系統設定檔。
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 啟動前成為連接路徑的一部分。
先驗證主機的公開 IP,若機器仍顯示 ISP IP,隧道連線時 Cloudflare 也會看到相同 IP。
若 VPN 斷線且無防火牆強制規則,cloudflared 可能會透過正常住宅路徑重新連線。
盡可能將網站服務綁定在 localhost 或私人介面,確保隧道是唯一公開路徑。
Cloudflare 文件警告除錯日誌可能記錄請求 URL、方法、協議、內容長度與標頭,日常操作請使用一般日誌。
可選 VPN 推薦與比較
想要快速 VPN 快捷鍵或更全面的比較?
若想快速開始,下方輪替 VPN 按鈕會開啟一個當前選項。若想先比較多個方案,請使用完整服務商目錄。
目前輪替推薦: NordVPN
若隧道停止但 DNS 紀錄仍有效,訪客通常會看到 Cloudflare 錯誤,直到連接器恢復。雖然吵雜,但比靜默洩漏住宅 IP 好。
信任前的驗證清單
不要因網站能載入就認為設定安全,請像技術人員般檢查路徑,而非行銷人員。
快速的外部查詢應該會顯示指向 Cloudflare 的紀錄,而非住宅地址。
先檢查機器的公開 IP,了解 Cloudflare 連接端會看到什麼。
從行動數據或其他外部網路測試,避免被本地路由捷徑誤導。
模擬一次失敗情況。若 cloudflared 透過 ISP 路徑重新連線,隱私模型即被破壞。
何時選擇 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,因此失敗情況與成功同等重要。
這樣做足以讓整個專案匿名嗎?
不行。域名註冊、付款、恢復郵件、瀏覽器指紋與管理行為仍能識別您,隧道只解決部分暴露問題。