安全與隱私 · Clash 技術部落格

Clash 會洩露實際 IP 嗎?DNS、WebRTC 與 IPv6 洩露檢查方法

檢測頁的本機位址或地區差異不能單獨證明洩露。分別檢查出口 IP、DNS、WebRTC 與 IPv6,確認哪些請求繞過 Clash;只調整已證實的異常,並對照修復前後的結果。

  • DNS 洩露
  • WebRTC
  • IPv6
  • 隱私
本文目錄

檢測頁出現家中的私有位址,或顯示的區域和節點名稱不同,很容易讓人擔心代理洩露。先弄清頁面顯示的是網站出口、解析伺服器,還是瀏覽器找到的通訊位址,再與直連結果比較。只處理已證實繞過代理的請求,也要確認會議和正常連網未受影響。

公用網路 IPv4、IPv6、DNS 與 WebRTC,各自說明什麼?

在同一瀏覽器和網路下分別記錄 IPv4、IPv6、DNS 與 WebRTC,標出哪些是本機電信業者的公網位址。WebRTC 用於瀏覽器語音和視訊通訊,它找到的位址不等於網站看到的出口;Clash 也不會自動讓這些請求經過同一出口。

不要混為一談

檢測項它回答的問題需要檢查的結果檢測入口
公用網路 IPv4網站看到哪個出口原本應經過代理的請求,仍顯示電信業者的公用網路出口BrowserLeaks IPv4 / IPv6
公用網路 IPv6IPv6 是否走同一接管方式IPv4 走節點、IPv6 仍從本機直出BrowserLeaks IPv4 / IPv6
DNS 伺服器查詢可能由誰完成與設定不符並導致網域繞開預期規則BrowserLeaks DNS
WebRTC 候選位址瀏覽器為實時通訊發現了什麼位址出現不符合預期的實際公用網路出口;192.168/10.x 本身不是公用網路洩露BrowserLeaks WebRTC

開啟表中的 IPv4 / IPv6 或 WebRTC 入口:在 Your Remote IP 下讀取 IPv4 Address、IPv6 Address;在 Your WebRTC IP 下讀取 Local IP Address、Public IP Address。把公網結果與直連紀錄對照,私有位址仍依表中說明判斷。

開啟 DNS 入口後點選 Run DNS Leak Test,記錄 Your DNS Servers 清單,再與設定及直連結果比較。頁面顯示 JavaScript Disabled、結果空白或測試未完成時,不能據此認定沒有洩漏。

直連、系統代理、TUN 各測一次

檢測頁本身不是結論,前後兩次結果才有意義。使用同一個瀏覽器、同一個網路和同一檢測頁,只改變 Clash 的接管方式,並把四項結果並排儲存。

可比較的測試

  1. 完全退出代理記錄直連

    儲存 IPv4、IPv6、DNS 和 WebRTC 四項,不只截一個綠色結果。

  2. 開啟系統代理

    新增無痕視窗再次檢測,確認瀏覽器請求的出口變化。

  3. 需要時開啟 TUN

    仍用同一網路和節點測試,觀察 IPv6 與不讀取系統代理的應用。

  4. 每次都看連線頁

    檢測網域出現、規則和出站一致,結果才與目前 Clash 設定相關。

只有 Chrome 的 DNS 結果不同,檢查安全 DNS

Chrome 在「設定 → 隱私和安全 → 安全性」裡可以單獨啟用安全 DNS;Firefox 的 DNS over HTTPS 位於隱私設定。瀏覽器啟用獨立 DoH 後,查詢可能不再經過系統 DNS,Clash 的系統代理又未必接管這條解析請求。

短時間關閉瀏覽器 DoH,完全結束並重新開啟瀏覽器。如果 DNS 結果回到 Clash 預期入口,表示瀏覽器解析設定影響了這次結果;之後可選擇繼續由瀏覽器處理,或統一交給 Mihomo,避免瀏覽器、系統和核心同時改寫解析設定。

WebRTC 顯示私有位址,和暴露公用網路位址有什麼區別?

WebRTC 為語音、影片和點對點通訊收集候選位址。現代瀏覽器可能把本機位址隱藏成 mDNS 名稱,也可能顯示私有網段;這些資訊能說明區域網路環境,卻不能從網際網路直接路由到你的電腦。

需要處理的是:原本應經過代理的請求,仍向對端暴露電信業者的公用 IPv4 或 IPv6。完全停用 WebRTC 會讓網頁會議和螢幕分享失效,優先使用瀏覽器的位址限制選項,並在 Zoom、Meet 或 Slack Huddle 裡重新驗證功能。

IPv4 走節點、IPv6 直出時,檢查接管設定

系統代理通常處理應用明確交給代理的請求,不保證所有 IPv6 連線都被接管。TUN 是否處理 IPv6 又取決於用戶端版本、路由和設定。先確認業務是否需要 IPv6;不能接管時,臨時關閉 IPv6 做對照比在規則末尾盲目 REJECT 更能說明原因。

只作檢查示意,啟用前確認用戶端產生設定不會覆蓋
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip

# 若明确需要 IPv6,应改为让当前 TUN 与规则完整接管,
# 而不是长期依赖 ipv6: false。

公用 IP、DNS 和私有位址,分別怎樣判斷和處理?

公用網路 IPv4 仍是本機出口

瀏覽器請求未經過預期代理節點,檢查系統代理、擴充功能或規則命中。

IPv4 是節點,IPv6 是本機出口

查 TUN 的 IPv6 路由;不需要 IPv6 時可按系統方式停用做對照。

只有 DNS 與預期不同

查瀏覽器 DoH、系統 DNS 與 Mihomo DNS 誰在實際處理。

只顯示區域網路私有位址

先確認是否還有實際公用網路候選,不要把私有位址直接判為洩露。

參考資料