規則要按網域名稱比對,前提是用戶端能拿到「這條連線對應的網域名稱是什麼」。在沒有開啟特殊處理的情況下,系統可能只把解析後的 IP 交給 Clash,網域資訊已經遺失,規則自然無法按網域比對——這就是為什麼 DNS 設定對規則的準確度至關重要。
enhanced-mode:兩種模式的本質差異
| 模式 | 原理 | 取捨 |
|---|---|---|
| fake-ip | 先回傳一個虛擬 IP 給應用程式,連線建立時再從虛擬 IP 反查出真實網域名稱用於規則比對 | 速度快、能更早拿到網域資訊;少數依賴真實 IP 回傳值的場景可能需要例外處理 |
| redir-host | 直接回傳真實解析結果,靠流量層面的網域嗅探或重新導向拿到網域 | 相容性更好;但依賴真實 DNS 查詢,速度與隱私性都不如 fake-ip |
目前主流推薦是 fake-ip。它的相容性問題主要出現在少數依賴「DNS 查詢結果必須是真實 IP」的區域網路協定上(比如某些裝置探索、投放螢幕協定),遇到這類問題時,把對應網域加入 fake-ip-filter 例外即可,不需要為了個別場景放棄 fake-ip 整體的優勢。
一份可直接使用的 DNS 設定
dns: enable: true ipv6: false enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 fake-ip-filter: - '*.lan' # 區域網路裝置網域走真實解析,避免探索協定異常 - '*.local' default-nameserver: [223.5.5.5, 119.29.29.29] # 解析 DoH/DoT 網域本身用的基礎 DNS nameserver: ['https://doh.pub/dns-query', 'tls://dot.pub:853'] fallback: ['https://1.1.1.1/dns-query', 'https://dns.google/dns-query'] fallback-filter: geoip: true geoip-code: CN # 結果非中國大陸 IP 時才採用 fallback 的解析結果
DoH / DoT 解決的是什麼問題
傳統 DNS 查詢是明文的 UDP 封包,電信業者或中間網路設備能看到你在查詢什麼網域,也有能力對查詢結果動手腳(也就是常說的「DNS 污染」)。DoH(DNS over HTTPS)和 DoT(DNS over TLS)把查詢過程加密,防止被中間網路設備窺探或竄改。
- nameserver 建議優先設定 DoH/DoT 位址,減少查詢過程被污染的機率。
- default-nameserver 必須是傳統 DNS(IP 直連),因為 DoH/DoT 伺服器本身也是一個網域名稱,需要先用它解析出 IP,否則會陷入「解析 DoH 網域又需要 DNS」的循環。
fallback-filter:精準防污染
fallback-filter 的邏輯是:先用 nameserver 裡的伺服器解析,如果解析結果的 IP 被判定為不在指定地區(比如開啟 geoip-code: CN 後判定不是中國大陸 IP),則改用 fallback 裡設定的伺服器重新解析,取 fallback 的結果。
這個機制主要用於避免「被污染的 DNS 伺服器回傳了錯誤的境內 IP,而真實網站其實在境外」的情況。開啟這項設定後,即使主 DNS 被污染回傳了錯誤結果,也能自動糾正為境外 DNS 解析的正確結果。
常見排查思路
- 某個網站規則明明寫對了但沒生效?先檢查是不是 enhanced-mode 沒開,或者 DNS 設定整體沒生效(比如系統 DNS 快取沒清)。
- 存取某網站間歇性失敗,像是被劫持?大概率是 DNS 污染,嘗試單獨測試 nameserver 與 fallback 兩組伺服器的解析結果是否一致。
- 區域網路裝置(NAS、智慧音箱)探索異常?優先檢查 fake-ip-filter 是否已經把對應網域加入例外。
DNS 設定很少需要頻繁改動——一旦按照這套邏輯配好,大多數「存取異常」問題在源頭就已經被避開了。