進階配置 · 預計閱讀 11 分鐘

徹底防止 DNS 洩漏:
Meta 核心 DoH + FakeIP 最佳實踐配置

許多人以為「開了系統代理就安全」,實務上瀏覽器以外的程式、作業系統內建的解析器、甚至 IPv6 與分離通道,都可能讓網域名稱在加密隧道外被看見。本文以 Meta 核心(Mihomo/Clash.Meta)為例,說明 FakeIP 如何讓規則與連線一致,以及如何搭配 DoH 與 fallback-filter 收斂可信上游。

DNS · DoH · FakeIP · Meta 核心 · 隱私 · TUN

1 為何仍會發生 DNS 洩漏

DNS 洩漏指的是:您以為流量已走加密隧道,但網域名稱解析卻仍由電信業者、公司內網或作業系統預設的解析器完成。對方雖然未必看得到完整 HTTPS 內容,卻能從查詢紀錄推斷您造訪了哪些站點,在某些網路環境下風險並不低。

常見原因包含:僅開啟「系統代理」而應用程式自行解析、命令列工具忽略代理設定、IPv6 走另一條路由、以及行動裝置的私人 DNS與客戶端內建解析策略互相打架。若規則引擎依賴「目標網域」做分流,但應用程式在握手前拿到的 IP 與規則預期不一致,還會出現「看似連上卻頻繁重試」的假性故障。

Meta 核心(Mihomo/Clash.Meta)內建完整的 dns 模組,可把解析納入與規則、出站、日誌同一套管線。接下來我們會先講管線,再談 FakeIPDoH 如何分工,最後給一段盡量可直接改寫上線的 YAML。若您打算在伺服器上以 systemd 常駐核心,可先對照Linux 安裝 Mihomo 與 systemd 教學把服務跑起來,再把本文的 dns 區塊併入。

2 Meta 核心的解析管線(概念)

啟用 dns.enable 後,核心會在本機監聽一個 DNS 埠(例如 127.0.0.1:1053),並依設定把查詢送往 nameserverfallbacknameserver-policy 指定的上游。與傳統「作業系統直接問 8.8.8.8」不同,您可以把解析決策出站策略綁在一起思考:哪些網域應快速直連、哪些應走可信的加密 DNS、哪些要在被污染時自動切換備援。

default-nameserver 的角色特別容易被忽略:它是用來解析 DoH/DoT 伺服器主機名稱本身的「引導解析器」,通常會保留為延遲較低、可達性高的傳統 UDP/TCP DNS。若把引導與業務查詢混在同一組加密上游而沒有拆開,可能在網路剛連上、或上游暫時不可達時出現雞生蛋的循環依賴。

實務建議 先把 log-level 暫調為 debug,觀察單一網域從「收到查詢」到「選擇出站」的完整鏈路,再恢復 info。這比憑感覺改規則更有效率。

3 FakeIP:讓「解析結果」與「規則」對齊

FakeIPenhanced-mode: fake-ip)的核心想法是:對大多數需要分流的網域名稱,核心先回一個虛構位於 fake-ip 區段內的位址(常見為 198.18.0.1/16),等實際連線發生時再依規則決定真實解析與出站。這樣做的好處是應用程式不會提前拿到「與規則不一致」的真實 IP,較不容易出現繞過或匹配錯亂。

fake-ip-filter 用來列出不應走 FakeIP的網域或後綴,例如區網名稱、部分對本機服務敏感的網域。漏設會導致本該直連的目標被錯誤導向;設太多則削弱 FakeIP 的保護效果。建議至少涵蓋 *.lan*.local*.localhost 等常見內網慣例,並依您實際使用的 NAS、印表機或公司內部網域補齊。

若您更在意與舊版行為相容,亦可評估 redir-host 模式;但在多應用、多協定並存時,FakeIP 通常較容易與 Rule 模式協同。選定後請整體測試,不要在同一台機器上混用互相矛盾的系統 DNS 與核心策略。

4 DoH、nameserver 與 fallback-filter

DoH(DNS over HTTPS)把查詢包在 TLS 裡,對中間設備較不友善,可降低被竄改與旁路記錄的機率。nameserver 一般放您主要信任的上游,可依延遲與法遵需求混合國內與國際供應商;fallback 則作為主要上游回傳可疑結果時的備援。

fallback-filter 典型會搭配 geoip: truegeoip-code,用來辨識「看起來不合理」的回應(例如應為海外站卻得到特定區域的保留或污染特徵)。再加上 ipcidr 黑名單(如 240.0.0.0/4)可過濾明顯無效位址。參數細節會隨核心版本演進,若升級後行為改變,請以官方 Wiki 與變更日誌為準。

nameserver-policy 可把特定網域/地理分類導向專用上遊(例如將國內常用網域指向延遲較低的 DoH)。撰寫時請注意與 rulesGEOSITEGEOIP 策略一致,避免「解析走 A 路徑、連線却按 B 規則」的撕裂感。

5 生產環境 YAML 範本(DoH + FakeIP)

下列片段假設您已具備可用的 proxiesproxy-groups,僅示範 dns 與全域開關的相對完整拼法。請將密碼、埠號、上游 URL 依環境替換;若與訂閱產生的片段衝突,以「單一權威來源」為原則合併,避免重複 dns: 鍵。

YAML (dns + globals excerpt)
# Global flags — align with your full config
mode: rule
ipv6: false
log-level: info

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "*.localhost"
    - "+.stun.*"
  # Bootstrap resolvers for DoH/DoT hostnames
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4
  nameserver-policy:
    "+.cn":
      - https://doh.pub/dns-query
合併訂閱時注意 許多訂閱會帶入自己的 dns 區塊。若未合併而是被覆寫,可能一夜之間退回「純系統解析」。建議在面板或模板中固定採用您驗證過的 DNS 策略。

寫入後請執行核心提供的語法檢查(例如 mihomo -t -d /etc/mihomo),確認無 YAML 錯誤再上線。若您的核心版本支援 geosite: 類規則,亦可將 nameserver-policy 的鍵改寫為官方文件建議的形式,以取代範例中的 +.cn 後綴匹配。

6 TUN 與作業系統 DNS 對齊

僅依賴「應用程式讀系統代理」時,最容易漏掉不走代理的程式。開啟 TUN 可把更多底層流量納入核心,但同時也會放大 DNS 設定的影響面:若作業系統仍指向電信自動下發的解析器,部分查詢可能在進隧道前就已送出。

實務上常見作法是:讓系統 DNS 指向核心監聽位址(與 dns.listen 一致),並在用戶端啟用與 TUN 配套的 DNS 劫持/重定向選項(名稱依客戶端而異)。圖形介面使用者可參考Clash Verge Rev TUN 模式完全指南中的整體流程,再把本文的 dns 參數嵌回設定檔。

macOS 與 Windows 對「系統 DNS」的介面不同,行動裝置又有「私人 DNS」與「永遠開啟的 VPN」等特殊行為。對齊的原則只有一句話:確保應用程式認為要問的 DNS,最終會落到核心正在監聽的那個埠,而不是另一套您沒察覺的解析鏈。

7 驗證與常見陷阱

  • 線上洩漏檢測:在規則與 TUN 皆穩定後,使用信任的 DNS 洩漏測試頁面觀察列出的解析器是否僅剩預期上游/節點出口。請勿過度解讀單次結果,應多次刷新並切換網路環境比對。
  • IPv6:若上游或本機意外啟用 IPv6,而規則未涵蓋,可能出現「繞過隧道」的旁路。若環境不需要 IPv6,可在核心與系統層級同步關閉以降低變數。
  • Android 私人 DNS:與 FakeIP、本機監聽埠策略容易衝突。除錯時建議改回自動,確認訂閱與規則無誤後,再依FlClash Android 配置教學逐步收斂。
  • 公司根憑證與分離隧道:企業裝置可能攔截 DNS 或強制內網解析,與個人用戶端的「全加密解析」目標衝突。此時應以資安政策為優先,而非硬套同一組 YAML。
除錯順序 先確認核心日誌中的 DNS 查詢是否如預期命中 nameserverfallback,再查規則匹配與實際出站。順序顛倒容易誤判為「節點壞了」。

8 總結

徹底降低 DNS 洩漏風險,重點不在堆疊更多加密協定名詞,而是讓解析路徑、規則引擎與實際出站彼此一致。FakeIP負責把應用程式看到的位址與分流決策對齊,DoHfallback-filter則負責在不可信的網路裡挑選較可信的上游,並在異常時自動退避。

若您希望盡量減少手動維護 YAML,可優先選擇內建 Meta 核心、並對 TUN/DNS 有完整開關的用戶端;相較零散組合各種外掛,一體化用戶端在升級與除錯上通常更省事。站上的下載頁整理了跨平台選擇,方便與本文的命令列或伺服器部署方案並用。

立即免費下載 Clash,體驗穩定流暢的跨平台代理 →

標籤: DNS 防洩漏 DoH FakeIP Meta 核心 Mihomo Clash
Clash 用戶端 Logo

Clash Verge Rev

新一代 Clash 用戶端 · 免費開源

繼承 Clash for Windows 衣缽、內建 TUN 模式、支援訂閱一鍵匯入,Windows、macOS、Linux 全平台可用。專為開發者與進階用戶設計,無論是日常連線還是進階分流,都能輕鬆應對。

TUN 全流量接管 Mihomo 高效能核心 精準規則分流 DNS 防洩漏 多訂閱管理

相關閱讀