進階設定

Fake-IP 與 DNS 防洩漏:Clash DNS 模組深度解析

DNS 解析是代理鏈路中最易出現問題的環節。設定不當會引發兩類風險:DNS 劫持導致代理流量域名解析到錯誤 IP 而無法訪問;DNS 洩漏則讓真實的訪問記錄暴露給 ISP。Clash 官方 DNS 模組內建 Fake-IP 機制,在系統層面從根本上解決上述兩類問題,是 Clash 區別於同類工具的核心能力之一。

傳統代理的 DNS 困境

在傳統的 HTTP 代理模式下,當你的瀏覽器訪問 google.com 時,會先在本地進行 DNS 解析,得到 IP 位址後再建立連線。這裡存在一個矛盾:如果 DNS 解析走本地 ISP 的 DNS 伺服器,google.com 的解析結果可能因為 DNS 劫持而返回錯誤的 IP;如果 DNS 解析走代理,代理又需要先建立好連線才能轉發 DNS 請求,形成雞生蛋蛋生雞的死循環。

早期的解決方案是在代理伺服器端進行 DNS 解析(Remote DNS Resolution),即客戶端直接把域名發給代理伺服器,由代理伺服器在其網路環境中解析並返回結果。這解決了 DNS 劫持問題,但增加了延遲,且無法與 Clash 的基於 IP 的規則(如 GEOIP)配合使用。

Fake-IP 的工作機制

Fake-IP 是 Clash 採用的一種更優雅的解決方案。其核心思路是:當應用程式發出 DNS 請求時,Clash 不等待真實的 DNS 解析結果,而是立即從預留的 IP 段(預設 198.18.0.0/16)中分配一個「假」IP 返回給應用程式。應用程式收到這個假 IP 後立即發起連線請求,Clash 截獲這個連線,根據假 IP 查找對應的域名,再根據規則決定如何處理。

這樣做的好處非常明顯:應用程式不需要等待 DNS 解析完成就能開始連線,大幅降低了首次連線的延遲;真實的 DNS 解析在背景非同步進行,並且是透過代理發出的,完全避免了 DNS 劫持;同時也杜絕了 DNS 洩漏——因為所有 DNS 請求都由 Clash 統一管理,不會有任何請求洩漏到本地 DNS 伺服器。

DNS 完整設定範例

dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  # 不使用 Fake-IP 的域名(直接返回真實 IP)
  fake-ip-filter:
    - "*.lan"
    - accounts.google.com
  # 本地 DNS:用於解析直連域名,速度快
  nameserver:
    - 1.1.1.1         # Cloudflare
    - 8.8.8.8         # Google
  # 代理流量 DNS:用於解析代理域名,防 DNS 劫持
  fallback:
    - https://8.8.8.8/dns-query       # Google DoH
    - https://1.1.1.1/dns-query       # Cloudflare DoH
    - tls://8.8.4.4:853               # Google DoT
  # 觸發 fallback 的條件
  fallback-filter:
    geoip: true
    geoip-code: TW
    ipcidr:
      - 240.0.0.0/4   # 保留位址,通常是劫持結果

nameserver 與 fallback 的分工

nameserver 是主 DNS 伺服器群組,負責處理大部分 DNS 請求,通常設定為本地速度快的 DNS(如 Cloudflare 1.1.1.1、Google 8.8.8.8)。fallback 是備用 DNS 伺服器群組,當 nameserver 返回的結果被 fallback-filter 規則判定為可疑(如返回的是代理流量 IP,或落在保留位址段)時,Clash 會轉而使用 fallback DNS 重新查詢,並以 fallback 的結果為準。

推薦 fallback DNS 使用 DoH(DNS over HTTPS)或 DoT(DNS over TLS)協定,這些協定對 DNS 請求進行加密傳輸,在網路傳輸過程中無法被中間節點篡改,徹底解決 DNS 劫持問題。

fake-ip-filter:哪些域名不該用 Fake-IP

並非所有域名都適合使用 Fake-IP。以下幾類域名需要加入 fake-ip-filter 排除清單,讓 Clash 直接返回真實 IP:

  • 區域網路域名:如 *.local*.lan,這些位址在區域網路內使用,Fake-IP 會導致區域網路裝置無法正常發現
  • 遊戲平台相關域名:部分遊戲客戶端會對 DNS 解析結果進行校驗,Fake-IP 可能觸發反作弊機制
  • NTP 時間同步服務:時間同步對 IP 的準確性有要求,應直接返回真實 IP
  • 特定應用程式的認證域名:如帳號登入域名(accounts.google.com),使用 Fake-IP 可能導致登入失敗

驗證 DNS 是否存在洩漏

設定完成後,可以訪問 dnsleaktest.combash.ws/dnsleak 進行 DNS 洩漏檢測。如果檢測結果只顯示你代理伺服器所在地區的 DNS 伺服器,說明設定正確;如果顯示了你本地 ISP 的 DNS 伺服器,則存在 DNS 洩漏,需要檢查 DNS 設定或結合 TUN 模式的 DNS 劫持功能來解決。

Clash
準備好使用 Clash 了嗎?
免費下載,支援 Windows、macOS、Linux、Android 全平台。
立即下載
文章導覽
相關文章
Clash
立即下載 Clash
全平台客戶端,免費使用
前往下載頁