什麼是 DNS 污染
DNS 污染(DNS 欺騙 / DNS 毒化)是指 ISP 或防火長城對特定網域的 DNS 查詢返回虛假 IP 位址,導致使用者無法正常存取目標網站。例如,向電信業者 DNS 查詢 www.google.com 時,返回的 IP 可能是一個無效位址或直接被拒絕。
DNS 洩漏(DNS Leak)是另一個相關問題:即便開啟了代理,DNS 查詢可能仍然繞過代理直接發往電信業者的 DNS 伺服器。這不僅導致部分網域無法解析,還會將你的瀏覽行為暴露給 ISP。
| 問題 | 表現 | 後果 |
|---|---|---|
| DNS 污染 | 網域解析返回錯誤 IP | 無法存取目標網站 |
| DNS 洩漏 | DNS 查詢不經過代理 | 瀏覽行為被 ISP 記錄,部分網站仍無法存取 |
兩種解析模式:fake-ip 與 redir-host
fake-ip 模式(推薦)
fake-ip 是 Clash 獨創的高效能 DNS 解析模式:
- 當應用程式發起 DNS 查詢時,Clash 立即返回一個虛假 IP(198.18.x.x 網段)
- 應用程式使用這個 fake IP 發起連線請求
- Clash 攔截到連線請求,根據規則決定是直連還是走代理
- 若走代理,Clash 將原始網域名稱發送給代理伺服器,由代理伺服器在境外進行真實 DNS 解析
優點:無需等待 DNS 解析完成即可建立連線,延遲極低;境外網域的 DNS 查詢全程不經過國內 DNS,徹底避免污染。
缺點:少數應用程式(如某些遊戲、P2P 軟體)可能無法正確處理 fake IP,需要在 fake-ip-filter 中排除。
redir-host 模式
傳統 DNS 解析模式:Clash 正常解析網域為真實 IP,再根據 IP-CIDR 規則決定是否走代理。
優點:相容性更好,所有應用程式均可正常運作。
缺點:需要先完成 DNS 解析才能建立連線,延遲更高;對於被污染的網域,需要依賴 fallback DNS 進行二次解析,設定複雜。
DoH / DoT 加密 DNS 設定
一般 DNS 查詢使用明文 UDP/TCP 協定,ISP 可以輕易截獲和篡改。DoH(DNS over HTTPS)和 DoT(DNS over TLS)透過加密保護 DNS 查詢:
- DoH:DNS 查詢封裝在 HTTPS 請求中,使用連接埠 443,與一般 HTTPS 流量混合,難以被識別和過濾
- DoT:DNS 查詢透過 TLS 加密,使用專用連接埠 853,加密可靠但特徵明顯易被過濾
Clash 中 DoH 使用 https:// 前綴,DoT 使用 tls:// 前綴:
dns:
nameserver:
- https://dns.alidns.com/dns-query # 阿里 DoH(國內)
- https://doh.pub/dns-query # 騰訊 DoH(國內)
fallback:
- tls://8.8.8.8:853 # Google DoT(境外)
- tls://1.1.1.1:853 # Cloudflare DoT(境外)
- https://dns.google/dns-query # Google DoH(境外)
完整防污染 DNS 設定
以下是經過驗證的最佳實踐設定:
dns:
enable: true
listen: 0.0.0.0:1053 # DNS 監聽連接埠(TUN 模式下由 dns-hijack 接管)
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
# fake-ip 排除清單:以下網域不使用 fake-ip,直接返回真實 IP
fake-ip-filter:
- "*.lan"
- "*.local"
- "localhost.ptlogin2.qq.com"
- "+.stun.*.*"
- "+.stun.*.*.*"
- "time.*.com"
- "time.*.gov"
- "*.ntp.org.cn"
- "ntp.*.com"
# 國內 DNS:用於解析國內網域
nameserver:
- 223.5.5.5 # 阿里 DNS(明文,速度快)
- 119.29.29.29 # 騰訊 DNS
- https://dns.alidns.com/dns-query # 阿里 DoH
# 境外 DNS:用於解析被污染的境外網域(需透過代理存取)
fallback:
- tls://8.8.8.8:853
- tls://1.1.1.1:853
- https://dns.google/dns-query
- https://cloudflare-dns.com/dns-query
# fallback 觸發條件:IP 歸屬非 CN 時使用 fallback DNS 重新解析
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4 # 保留位址(通常是污染結果)
domain:
- "+.google.com"
- "+.facebook.com"
- "+.youtube.com"
- "+.twitter.com"
- "+.github.com"
# 指定特定網域使用特定 DNS 伺服器
nameserver-policy:
"geosite:cn": [223.5.5.5, 119.29.29.29]
"geosite:geolocation-!cn": [tls://8.8.8.8:853, tls://1.1.1.1:853]
關鍵設定項目說明
| 設定項目 | 說明 |
|---|---|
enhanced-mode: fake-ip | 啟用 fake-ip 模式,大幅降低 DNS 解析延遲 |
fake-ip-filter | 這些網域不使用 fake-ip,直接返回真實 IP(適用於需要真實 IP 的 mDNS、NTP 等協定) |
nameserver | 首選 DNS,用於國內網域快速解析 |
fallback | 備用 DNS,當 nameserver 返回被污染的 IP 時觸發 |
fallback-filter.geoip: true | 若 nameserver 返回的 IP 不屬於 CN,觸發 fallback 重新查詢 |
nameserver-policy | 為特定網域指定專用 DNS 伺服器,優先順序高於 nameserver/fallback |
搭配 TUN 模式使用
TUN 模式開啟時,需要搭配 dns-hijack 將所有 DNS 請求都導入 Clash 處理:
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53 # 劫持所有發往連接埠 53 的 UDP/TCP 請求
- tcp://any:53
dns:
enable: true
enhanced-mode: fake-ip
# ... 其餘設定同上
開啟 dns-hijack: any:53 後,即便系統將 DNS 設定為其他伺服器(如 8.8.8.8),所有 DNS 請求都會被 Clash 的 DNS 模組接管,從根本上杜絕 DNS 洩漏。
DNS 洩漏檢測方法
設定完成後,使用以下工具驗證 DNS 防污染是否生效:
- 前往 dnsleaktest.com,點擊「Standard Test」
- 測試完成後,查看 DNS 伺服器清單:
- 若顯示為 Google、Cloudflare 等境外伺服器(無國內電信業者 IP)→ 防污染設定正確
- 若顯示為中國聯通、中國電信等國內 DNS → 存在 DNS 洩漏,需檢查設定
- 也可前往 ipleak.net 進行綜合檢測,查看 IP、DNS 和 WebRTC 洩漏情況
常見 DNS 問題排查
DNS 解析完全失敗
所有網站都無法存取、顯示「DNS_PROBE_FINISHED_NXDOMAIN」:
- 檢查
dns.enable: true是否已設定 - 確認
nameserver中至少有一個可存取的 DNS 伺服器 - 暫時將 nameserver 改為
223.5.5.5(明文 UDP,最基礎)測試連通性 - 查看 Clash 日誌,搜尋「dns」相關錯誤訊息
DNS 解析速度慢
- 確認
enhanced-mode: fake-ip已啟用(可大幅降低首次連線延遲) - 將
nameserver中的 DoH 伺服器替換為明文 UDP(如223.5.5.5),DoH 握手開銷較大 - 檢查 fallback DNS 是否可達,無法到達的 fallback 伺服器會導致逾時等待
部分網站無法存取但 IP 正常
可能是 fake-ip 導致的相容性問題。將該網域加入 fake-ip-filter 排除清單:
dns:
fake-ip-filter:
- "problem-domain.com" # 新增有問題的網域
查看進階設定指南,了解更多 TUN 模式與 DNS 完整設定
總結
- DNS 污染導致網域解析返回錯誤 IP;DNS 洩漏導致瀏覽行為暴露給 ISP
- fake-ip 模式是最優解:即時返回虛假 IP,境外網域由代理伺服器在境外解析,延遲低且防污染徹底
- 國內 DNS(nameserver)使用速度快的明文 UDP(223.5.5.5),境外 DNS(fallback)使用加密 DoT/DoH(tls://8.8.8.8:853)
fallback-filter.geoip: true是觸發 fallback 的關鍵,確保被污染的網域走境外 DNS 重新解析- TUN 模式下搭配
dns-hijack: any:53可徹底杜絕 DNS 洩漏 - 設定完成後用 dnsleaktest.com 驗證,確認 DNS 伺服器顯示為境外節點
延伸閱讀
- TUN 模式使用指南:與 DNS 防污染搭配使用的全域代理方案
- 規則分流設定說明:透過規則精確控制哪些流量走代理
- 訂閱自動更新設定:保持節點清單和規則集的自動更新