為什麼 DNS 配置值得單獨關注

DNS 相關的問題通常有兩種表現:DNS 汙染(網域解析結果被竄改,導致存取異常或跳轉到錯誤頁面)和 DNS 洩漏(代理已經開啟,但 DNS 請求仍然經本機業者解析而沒有走代理,暴露了真實的存取意圖)。兩者的解決思路不同,但都可以透過合理配置 dns 部分解決。

Fake-IP 模式:省掉一次不必要的往返

標準 DNS 解析流程是:應用請求網域 → 走 DNS 伺服器解析出真實 IP → 再發起連線,這個過程有一次額外的網路往返,如果 DNS 伺服器本身還不可靠,還可能被汙染。

Fake-IP 模式的做法是:解析請求發生時,先回傳一個屬於保留位址段的「假 IP」,使用者端記住這個假 IP 對應哪個網域;等真正發起連線時,再按需做實際解析或直接走代理轉發。效果是省去了大部分場景下的往返查詢,同時因為大部分流量最終判斷要走代理,代理節點那一端解析出的 IP 更不容易被汙染。

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "+.local"
    - "time.*.com"
    - "dns.msftncsi.com"

fake-ip-filter:哪些網域需要排除

Fake-IP 對絕大多數場景都沒問題,但有幾類網域必須排除在外,否則會出現「裝置互相發現不了」「遊戲加速器失效」「內網服務存取異常」等情況:

大多數主流使用者端的預設配置已經預置了一份相對完整的排除名單,一般不需要自己從零寫,遇到具體某個區域網路服務連不上時,把它的網域加進 fake-ip-filter 通常就能解決。

DoH / DoT:給 DNS 查詢本身加密

Fake-IP 解決的是「要不要走真實解析」的問題,而 DoH(DNS over HTTPS)/ DoT(DNS over TLS)解決的是「解析過程本身是否會被竊聽或竄改」的問題——把原本明文的 DNS 請求封裝進加密通道再發出去,業者或中間節點無法看到你在查詢哪個網域,也沒辦法竄改回傳結果。

dns:
  enable: true
  nameserver:
    - "https://doh.pub/dns-query"
    - "https://dns.alidns.com/dns-query"
  fallback:
    - "https://1.1.1.1/dns-query"
    - "https://8.8.8.8/dns-query"

nameserver 是預設解析上游,fallback 是中國大陸解析結果不理想時的備用上游,使用者端會根據解析結果自動判斷是否需要走 fallback。

分流解析:兩地網域走不同的上游

更進一步的做法是用 nameserver-policy 給中國大陸網域指定當地 DNS、海外網域指定海外加密 DNS,兼顧解析速度和抗汙染能力:

dns:
  nameserver-policy:
    "geosite:cn":
      - "https://doh.pub/dns-query"
    "geosite:geolocation-!cn":
      - "https://1.1.1.1/dns-query"

這樣中國大陸網站解析走本地線路更快,海外網站解析走加密上游更安全,兩邊互不影響。

怎麼判斷自己是不是遇到了 DNS 問題

如果代理已經顯示連線正常(出口 IP 已經切換),但某些網站載入異常緩慢或者內容跳轉到了不該出現的頁面,大概率是 DNS 層面的問題,而不是代理線路的問題。可以在使用者端的「連線 / Connections」面板觀察具體是哪個網域解析異常,再對照上面的配置逐項排查;如果是內網裝置連不上,先檢查 fake-ip-filter 有沒有漏掉對應網域。

寫在最後

DNS 配置這一塊屬於「配好了就不用再管」的類型,大多數訂閱服務商的預設配置已經足夠日常使用。真正需要動手調整的場景通常是內網裝置存取異常或者對 DNS 隱私有更高要求,按上面的思路調整對應欄位即可。