本文重點

適合已能透過 v2rayN 連上節點,並準備檢查 DNS 分流的使用者。以下以 V2Ray 核心 JSON 為例,說明應用程式解析、內建 DNS 與代理出站的差異,提供中國大陸網域優先使用本地 DNS、其他網域改用 DoH 的設定片段,並說明如何檢查回退、路由與解析結果。這些程式碼不是完整的用戶端設定,也不能直接套用到其他核心的 DNS 編輯器。

一、先確認由哪個環節處理 DNS 請求

DNS 設定沒有生效,常見原因不是伺服器位址錯誤,而是查詢根本沒有送到預期的解析器。Windows 系統解析器、瀏覽器的安全 DNS、V2Ray 內建 DNS,以及代理伺服器所在主機的解析器,分屬不同環節。修改其中一處,不代表其他環節也會跟著改變。

應用程式提交網域 入站接收 路由判斷 視需要解析 出站連線

上述流程是常見情況之一,並不表示每個連線都會使用內建 DNS。例如,瀏覽器透過 HTTP 代理提交網域時,代理出站可能會將網域交由遠端處理;如果應用程式先在本機解析,再把 IP 傳給代理,核心收到的可能就只有 IP。只啟用「系統代理 → 自動設定系統代理」,不會接管 Windows 的所有 DNS 請求。

二、servers、domains、expectIPs 各自控制什麼

servers 用來設定可用的上游解析器;伺服器物件中的 domains 會讓指定網域優先透過該伺服器查詢;expectIPs 則限制該伺服器回傳的位址範圍。三者分別回答「查詢哪個伺服器」、「哪些網域優先查詢」和「哪些結果可接受」,不要把它們都當成流量路由規則。

欄位範例實際用途與限制
servers223.5.5.5、DoH URL設定 DNS 上游,不會決定網頁連線必定使用哪個出口。
domainsgeosite:cn符合條件時優先使用此伺服器;需要相應的網域規則資料。
expectIPsgeoip:cn檢查回傳位址是否符合預期;這不代表伺服器可信,也不等於能攔截所有污染。
skipFallbacktrue網域規則未命中時,此伺服器不會作為通用回退解析器;但仍可處理符合自身規則的網域。
queryStrategyUseIPv4限制內建 DNS 使用的位址族策略,不會停用作業系統的 IPv6。

domains 不是排他的存取控制。若伺服器查詢失敗,或結果不符合 expectIPs,後續仍可能進入回退流程。若要讓中國大陸解析器只處理指定網域,請為它設定 skipFallback: true,並保留一個不限制網域的遠端解析器作為預設選項。

結論:先限定本地解析器適用的網域

將中國大陸解析器設為含有 domains 和 skipFallback 的伺服器物件,比單純把它排在清單第一位更清楚;否則在回退流程中,它可能收到原本預計交給遠端解析器的查詢。

三、DNS 分流範例:中國大陸網域優先本地解析,其他網域使用 DoH

以下使用 223.5.5.5 作為中國大陸網域的優先解析器,並以 https://1.1.1.1/dns-query 作為預設 DoH 上游。這裡的「本地解析」是指從本機直接連線至指定解析服務,不代表使用路由器或電信業者自動提供的 DNS。這些位址僅供設定示範,是否能連線及回傳結果是否合適,請在自己的網路環境中測試。

{
  "dns": {
    "queryStrategy": "UseIPv4",
    "servers": [
      {
        "address": "223.5.5.5",
        "port": 53,
        "domains": [
          "geosite:cn"
        ],
        "expectIPs": [
          "geoip:cn"
        ],
        "skipFallback": true
      },
      {
        "address": "https://1.1.1.1/dns-query"
      }
    ]
  }
}

中國大陸網域優先解析

上游位址
223.5.5.5
傳輸埠
UDP 53
網域範圍
geosite:cn
預期結果
geoip:cn

將 skipFallback 設為 true,避免此伺服器成為其他網域的通用回退選項。

預設 DoH 解析

上游位址
https://1.1.1.1/dns-query
傳輸埠
HTTPS 443
網域範圍
未限制,作為預設選項
出站需求
在路由中明確指定代理出口

設定 DoH URL 後,還要確認連線至該位址的請求實際使用哪個出站。

符合 geosite:cn 時,優先查詢中國大陸解析器;未符合時,則使用未限制網域的 DoH 選項。若中國大陸解析結果不符合位址預期,也可能改用後續選項。不要隨意再加一個未限制網域的 localhost,否則系統解析器會重新進入回退流程,破壞原本設定的界線。

expectIPs: ["geoip:cn"] 是較嚴格的策略。部分中國大陸網站使用境外 CDN,合法的解析結果也可能被拒絕,增加查詢時間。遇到這類網站時,先確認網域與回傳 IP,再調整網域分類或該伺服器的預期範圍,不要直接認定「境外 IP 就是污染」。

四、讓 DoH 走代理:還需要設定路由規則

DoH 加密的是連線至解析伺服器的傳輸過程,不保證請求會自動經過代理。在 V2Ray 中,一般的 https:// DoH 請求可以交由路由調度;使用 https+local:// 的本機模式則不會以相同方式交由路由處理。若希望遠端 DoH 使用節點出口,不要混用這兩種寫法。

以下內容仍是需要合併至現有設定的片段。前提是 outbounds 中已有標籤為 direct 的直連出站,以及標籤為 proxy 的可用代理出站。若實際標籤不同,必須改成正確的標籤。請將這兩條上游位址規則排在可能先行命中的寬泛規則之前。

{
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "ip": [
          "223.5.5.5/32"
        ],
        "port": "53",
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": [
          "1.1.1.1/32"
        ],
        "port": "443",
        "outboundTag": "proxy"
      }
    ]
  }
}

預設情況下,未符合任何規則的連線會使用預設出站,通常與出站排列順序有關。不要略過 DoH 出站檢查,就把「能取得結果」當成「已透過代理解析」。此外,若節點伺服器使用網域名稱,也需要獨立且可用的初始解析路徑,避免出現必須先連上節點才能解析節點位址的循環依賴。

五、在 v2rayN 套用設定前,先保留可復原的基準

v2rayN 是設定管理用戶端,不是 DNS 協定本身。用戶端介面儲存的選項最終會轉換成核心執行設定。直接修改暫存產生的檔案,切換節點或重新啟動核心後可能會被覆寫;將 V2Ray JSON 填入不相符的核心設定區,也可能導致啟動失敗。

  1. 記錄目前狀態。保存現有 DNS 設定、目前使用的節點與路由模式。先確認原設定能正常開啟常用網頁,再調整解析策略。
  2. 確認設定入口。在「設定 → DNS 設定」選擇目前核心對應的設定區域。如果此版本提供完整的 DNS JSON 編輯區,只填入該區要求的 DNS 物件層級,不要把整份範例檔案貼進去。
  3. 另外管理完整設定。若要自行維護路由與出站,可使用「伺服器 → 新增自訂設定伺服器」匯入完整的核心設定。本文的兩個片段缺少入站、代理出站等內容,不能直接當成完整設定執行。
  4. 重新啟動核心並檢查記錄。先檢查 JSON 語法、規則資源與出站標籤是否有誤,再進行網路測試。儲存成功不代表執行成功。
  5. 逐步加入功能。先確認預設 DoH 可正常運作,再加入中國大陸網域優先解析,最後檢查 TUN 或瀏覽器自身的解析設定。每次只調整一個部分,較容易找出問題。
53
中國大陸上游範例使用的 UDP 連接埠
443
DoH 範例使用的 HTTPS 連接埠
10808
常見的本機混合監聽連接埠;請以介面顯示的值為準

本機混合監聽連接埠不是 DNS 連接埠。將應用程式的 HTTP 或 SOCKS 代理指向該連接埠,與把 DNS 伺服器設為該連接埠,是完全不同的操作。請在「設定 → 參數設定」確認「本機混合監聽連接埠」,不要互換範例中的 53、443 和 10808。

六、驗證 DNS 分流與防污染:分別檢查查詢、出站與結果

驗證的目的不是找出一個「永遠正確」的解析 IP,而是確認請求交由預期的上游處理、連線使用預期的出口,且回傳位址符合網站實際部署情況。CDN 會依解析器位置、節點出口與時間回傳不同位址;兩個解析器的結果不同,本身不能證明發生污染。

檢查項目操作方式不能據此推論的事項
系統解析基準執行 nslookup www.baidu.com 223.5.5.5,記錄回覆與錯誤訊息。無法證明 V2Ray 內建 DNS 已呼叫此上游。
代理連線能力透過明確指定的代理連線至 HTTPS 網站,確認節點可正常連線。網頁能開啟,不代表所有應用程式的 DNS 都已被接管。
上游出站查看核心除錯記錄與路由記錄,確認連往 1.1.1.1:443 的連線使用哪個出口。只看到加密連線,無法直接讀取或證明實際查詢內容。
網域分流分別測試符合中國大陸規則與未符合規則的網域,並記錄所選上游。單一網域測試成功,無法證明整份網域規則都已正確載入。
nslookup www.baidu.com 223.5.5.5
ipconfig /flushdns
curl.exe --proxy http://127.0.0.1:10808 --head https://www.microsoft.com/

上述指令是三項獨立檢查:第一項測試指定解析器;第二項清除 Windows DNS 快取;第三項測試本機 HTTP 代理連線。執行第三項前,請將連接埠改為介面顯示的實際值。這些指令不是內建 DNS 的自動驗收工具;尤其不能直接把 nslookup 的結果說成「DoH 分流已生效」。

清除系統快取不會同時清除瀏覽器與核心的所有快取。重新測試時,可以重新啟動核心及測試中的應用程式;如果暫時提高記錄層級,測試結束後請恢復日常設定。除錯記錄可能包含瀏覽過的網域,不宜整份公開上傳。

結論:DoH 可降低傳輸暴露,但無法處理所有解析風險

只有在確認上游可連線、TLS 驗證正常、出站符合預期,且應用程式查詢進入受控路徑後,才能評估這套設定是否達成目標;只看檢測頁顯示的解析器名稱並不足夠。

七、DNS 分流常見問題

填入 DoH 位址後,為什麼仍然逾時?

先確認節點本身能否連線至 HTTPS,再檢查前往 DoH 位址的路由。範例應將 1.1.1.1:443 指向可用的代理出站;也請檢查系統時間與 TLS 錯誤。如果改用網域格式的 DoH,還要確認上游網域的初始解析是否正常。

加入 expectIPs 後,中國大陸網站反而變慢了?

確認該網域實際回傳的 IP 是否位於境外 CDN。結果不符合 geoip:cn 時,會遭到拒絕或進入後續回退流程。先針對該網域調整分類或預期範圍,不要一再增加解析器來掩蓋分類錯誤。

設定 UseIPv4 後,為什麼系統仍能查到 IPv6?

UseIPv4 限制的是目前的內建 DNS,不是 Windows 全域設定。請確認測試是否來自瀏覽器獨立使用的 DoH、系統解析器或其他應用程式;若要統一解析,先讓應用程式使用同一條受控流程,再檢查位址族策略。

啟用 TUN 後,還需要檢查 DNS 設定嗎?

需要。TUN 解決的是流量入口的涵蓋範圍,不會自動確保上游選擇與出站路徑正確。請先確認實際執行的核心,再檢查 DNS 接管、區域網路解析與遠端上游路由;更換核心後,應依照對應的設定格式重新驗證。

將所有網域都交給遠端 DoH,會不會比較簡單?

設定雖然較少,但中國大陸網站的 CDN 調度可能不利於本地直連,區域網路網域也可能無法解析。請先保留必要的本地網域策略,再決定是否將一般公開網域統一交由遠端上游處理;不要把內部網域送到無關的公共解析服務。