Clash DNS 配置詳解:nameserver、fallback 與 DNS 劫持怎麼填
Clash 配置檔裡的 dns 段決定網域解析走哪條路。本文逐項拆解 nameserver 與 fallback 的分工、fake-ip 與 redir-host 兩種模式的差異、DNS 劫持判斷的適用場景,並附上可直接套用的配置範例。
Clash 配置檔裡的 dns 段決定網域解析走哪條路。本文逐項拆解 nameserver 與 fallback 的分工、fake-ip 與 redir-host 兩種模式的差異、DNS 劫持判斷的適用場景,並附上可直接套用的配置範例。
Clash 的配置檔裡,dns 段是一個獨立於 proxies 與 rules 的模組。它不管流量走哪個代理節點,只管一件事:網域怎麼解析成 IP 位址。這一步發生在規則比對之前——Clash 拿到網域後先要知道它對應的 IP,才能根據 GEOIP、IP-CIDR 一類規則判斷走向。如果 dns 段配置不當,規則分流的準確性會直接受影響,典型症狀是明明寫了直連規則,卻仍然走了代理,或者反過來。
dns 段的核心欄位包括 enable(是否啟用 Clash 自身的 DNS 處理)、listen(監聽位址,通常配合 TUN 模式使用)、enhanced-mode(fake-ip 或 redir-host)、nameserver(主用解析伺服器列表)、fallback(備用解析伺服器列表)、fallback-filter(判斷何時啟用 fallback 的規則)。這幾項互相配合,構成完整的解析鏈路。
不啟用 dns 段(enable: false)時,Clash 會把 DNS 解析交給作業系統處理,自身只做流量轉發。多數場景建議啟用,以獲得更精確的分流控制。
nameserver 是主用解析伺服器列表,Clash 優先用這些伺服器解析網域。fallback 是備用解析伺服器列表,只在特定條件觸發時才會被採用,並不是簡單的「nameserver 失敗就切換 fallback」。
建議填入電信商解析速度快、地理位置就近的伺服器,常見組合是公共 DNS 與本地電信商 DNS 混用:
nameserver:
- 223.5.5.5
- 119.29.29.29
- 114.114.114.114
fallback 通常填入境外或跨網路的解析伺服器,例如 1.1.1.1、8.8.8.8。它不是無條件的備用,而是配合 fallback-filter 使用——只有當 nameserver 解析出的結果被判定為「不可信」(例如落入 geoip 之外的位址段,或符合特定規則)時,Clash 才會改用 fallback 重新解析。這個機制的意義在於:本地網域走本地 DNS 能取得就近的 CDN 節點,減少存取延遲;而被污染或需要代理存取的網域,則改用乾淨的境外 DNS,避免拿到錯誤的解析結果。
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
domain:
- +.google.com
- +.facebook.com
上面這段配置的意思是:如果用 nameserver 解析出來的 IP 不屬於中國大陸(geoip-code: CN 之外),或者符合 domain 列表裡的網域,就認為這次解析結果不可信,轉而用 fallback 裡的伺服器重新查詢。這樣一來,存取被污染網域時能拿到正確的境外解析結果,而存取本地站點時依然走最快的本地 DNS。
enhanced-mode 欄位決定 Clash 用哪種方式處理 DNS 解析結果,可選值是 fake-ip 和 redir-host。這兩種模式的設計目標不同,適用場景也不一樣。
fake-ip 模式下,Clash 攔截 DNS 查詢請求,不回傳網域真實對應的 IP,而是回傳一個預留位址段(預設 198.18.0.0/16)裡的虛擬 IP。應用程式拿到這個虛擬 IP 後發起連線,Clash 在流量經過時再把虛擬 IP 還原成真實網域,交給規則引擎判斷走向,最後再解析出真實 IP 進行轉發。
這種模式的優點是解析速度快(不需要每次都等真實 DNS 查詢回傳),規則比對可以直接用網域而不依賴 IP,準確性更高。配合 TUN 模式使用時,fake-ip 幾乎是標準選擇。缺點是部分對 IP 位址有強依賴的軟體(例如某些遊戲連線、區域網路發現協定)可能因為拿到虛擬 IP 而運作異常,需要在 fake-ip-filter 裡為這些網域單獨排除。
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.0/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "+.stun.*.*"
- "time.*.com"
redir-host 模式下,Clash 直接向 nameserver/fallback 查詢真實 IP 並回傳給應用程式,不做虛擬位址替換。規則比對階段依賴的是這個真實 IP,或是在查詢階段記錄下的網域對應關係。這種模式相容性更好,幾乎不會出現應用程式因為拿到「假」位址而運作異常的情況,但解析負擔更大,規則比對在某些複雜場景下不如 fake-ip 精確。
沒有特殊相容性問題的前提下,建議優先使用 fake-ip。只有在遇到區域網路裝置發現失敗、特定客戶端連線異常等問題,且確認與 DNS 模式相關時,才考慮切換到 redir-host 或者針對性地在 fake-ip-filter 裡加排除項目。
DNS 劫持指的是解析請求在傳輸過程中被中間節點篡改,回傳錯誤的 IP 位址,導致存取被重新導向到廣告頁面、錯誤頁面,或者乾脆無法連通。判斷是否發生了 DNS 劫持,常見方法是用不同的 DNS 伺服器分別解析同一個網域,比對回傳結果是否一致——如果本地電信商 DNS 回傳的 IP 與已知的公共 DNS 回傳結果差異明顯,且存取異常,基本可以確認存在劫持或污染。
在 Clash 的場景裡,fallback-filter 機制本身就是應對 DNS 劫持的手段之一:透過 geoip 與網域列表判斷解析結果是否可信,不可信就換用另一組伺服器重新查詢。除此之外,還可以考慮以下幾點:
https://dns.server/dns-query 或 tls://dns.server:853。dns:
enable: true
use-hosts: true
nameserver:
- https://223.5.5.5/dns-query
- https://120.53.53.53/dns-query
fallback:
- tls://1.1.1.1:853
- tls://8.8.4.4:853
fallback-filter:
geoip: true
geoip-code: CN
hosts:
example.local.test: 127.0.0.1
需要注意的是,DNS 劫持與代理規則分流是兩個不同層面的問題。如果代理節點本身可用,但存取某個網站始終異常,先排查是不是 DNS 解析環節出的問題,而不要一開始就懷疑節點或規則寫錯了。反過來,如果換了幾個 DNS 伺服器解析結果都一致且正確,但存取依然失敗,問題更可能出在代理節點或規則比對上。
DNS 洩漏指的是本該經過代理處理的網域解析請求,實際上繞過了 Clash 直接發到了系統預設的 DNS 伺服器,暴露了真實存取意圖。避免洩漏,需要注意以下幾個環節:
0.0.0.0:1053,並確認作業系統或路由層面的 DNS 請求被正確轉發到這個監聽埠,而不是繞道系統內建的 DNS 客戶端。下面給出一份整合了本文各要點的完整 dns 段範例,可以直接套用到配置檔中,再按實際節點情況調整 nameserver 與 fallback 的具體位址:
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
use-hosts: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.0/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "+.stun.*.*"
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver:
- https://223.5.5.5/dns-query
- https://120.53.53.53/dns-query
fallback:
- tls://1.1.1.1:853
- tls://8.8.4.4:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
domain:
- +.google.com
- +.github.io
其中 default-nameserver 欄位值得單獨說明:它專門用來解析 nameserver 與 fallback 裡那些以網域形式寫出的 DoH 伺服器位址(例如上例中的 223.5.5.5/dns-query 本身是 IP,但如果換成網域形式的 DoH 位址,就需要 default-nameserver 先解析出這個 DoH 伺服器本身的 IP,再用它去查詢實際的使用者網域)。這是一個容易被忽略但影響解析鏈路能否跑通的細節。
配置修改完成後,建議重新啟動客戶端或重新載入配置,再用不同網域分別測試本地站點與境外站點的存取速度與連通性,確認 fallback-filter 的判斷邏輯符合預期,再投入日常使用。
配置好 DNS 段之後,還需要相符的客戶端與訂閱規則才能生效。前往下載頁取得對應平台的安裝包,或查看教學了解完整配置流程。