V2Ray DNS 設定教學:中國大陸與海外網域分流、DNS 污染防護

了解 V2Ray 內建 DNS 的查詢流程,依網域分流至不同上游、設定 DoH,並搭配路由規則降低 DNS 污染風險。

本文摘要

適合已能透過 v2rayN 或 v2rayNG 連線至節點,並打算調整 DNS 分流的使用者。先釐清系統解析、核心解析與代理伺服器解析的差異,再透過兩組上游和明確的出站規則,建立可驗證的設定。範例以 Xray JSON 為準,設定片段須合併至現有設定,並非可直接啟動的完整節點檔案。

一、內建 DNS 如何參與連線

「明明設定了 DNS,為什麼瀏覽器還是查詢系統伺服器?」通常不是伺服器位址填錯,而是請求根本沒有進入核心 DNS。V2Ray、Xray 的內建 DNS 是供核心呼叫的解析模組,不會因為設定中出現 dns 欄位,就自動接管整台裝置的所有 UDP 53 請求。

網域進入核心 觸發解析需求 比對解析上游 查詢經由出站 結果用於連線

應用程式將網域交給 SOCKS 代理時,核心可能會直接把網域交給遠端伺服器解析。若應用程式先透過系統 DNS 取得 IP,再將 IP 交給代理,核心收到的就不再是原始網域。這兩種路徑都不能簡單視為「用戶端內建 DNS 已生效」。

二、先確認上游、連接埠與核心範圍

本文將中國大陸網域交由 223.5.5.5 解析,其他網域交由 https://1.1.1.1/dns-query 處理,並讓後者的查詢經由現有代理出站。採用 IP 格式的 DoH 位址,可減少「連線至解析伺服器前,還得先解析解析伺服器網域」的引導依賴;仍須保留正常的 TLS 憑證驗證。

中國大陸網域上游

伺服器
223.5.5.5
傳輸方式
一般 DNS,UDP 53
比對範圍
geosite:cn
查詢出站
direct

適合需要中國大陸網路視角的解析;這條一般 DNS 連線本身未加密。

其他網域上游

伺服器
https://1.1.1.1/dns-query
傳輸方式
DoH,TCP 443
比對範圍
未命中專用上游的網域
查詢出站
proxy

需要代理節點先能連線;代理無法使用時,不應悄悄退回一般本機解析。

53
範例:中國大陸 DNS 目標連接埠
443
範例:DoH 目標連接埠
2 組
依網域選擇解析上游

v2rayN 是桌面用戶端,不代表固定使用某一種核心。v2rayNG 使用 Xray,v2flyNG 使用 V2Fly;欄位是否支援及預設行為,須依實際核心確認。尤其是 DNS 回退欄位、特殊位址前綴與出站解析策略,不要將同一份 Xray 設定原封不動套用至所有核心。

  1. 備份目前可正常連線的設定,記下用戶端版本,以及啟動記錄中的核心版本。
  2. 確認執行中的設定已有代理出站,並記下其實際 tag。以下統一使用 proxy,並非要求修改協定名稱。
  3. 確認 geosite.dat 可讀取,且包含 cn 分類。資料檔案缺失會導致規則載入失敗,與上游逾時不同。
  4. 操作期間一次只調整一個部分:先改 DNS,再改路由,最後確認系統與瀏覽器是否仍各自進行解析。

三、依網域分配解析上游,限制失敗回退

以下是頂層 dns 欄位的設定片段。中國大陸伺服器附有網域比對清單,只負責解析對應網域;DoH 伺服器不附網域清單,作為其他網域的一般上游。此處先使用 IPv4,是為了在初步排查時排除 IPv6 可達性這項變因,並非要求長期停用 IPv6。

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

這份設定刻意未加入 localhost 或系統 DNS 作為備援。否則代理 DoH 無法連線時,查詢可能會回到原本想避開的解析路徑。若啟動記錄顯示欄位不明,應先核對核心文件與版本;不要直接移除回退限制,便以為問題已經解決。

四、讓 DoH 查詢走代理,確保直連使用內建 DNS

只設定 DoH 位址,還不能證明查詢經過代理節點。一般 https:// 格式的 DoH 請求可參與核心路由;以下會透過目標 IP 和連接埠,將請求送至 proxy。不要隨意改成 https+local://:後者的本機查詢語意不同,不能沿用此處的路由判斷。

將以下規則合併至現有路由。DNS 上游規則應排在寬泛的直連、IP 分類及最終兜底規則之前;proxy 必須替換成實際的代理出站標籤,direct 則須對應既有的直連出站。此範例不依目標 IP 進行中國大陸分流,因此選用 AsIs,避免為了路由而額外解析每個陌生網域。

{
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "ip": [
          "1.1.1.1"
        ],
        "port": "443",
        "network": "tcp",
        "outboundTag": "proxy"
      },
      {
        "type": "field",
        "ip": [
          "223.5.5.5"
        ],
        "port": "53",
        "network": "udp",
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": [
          "geosite:cn"
        ],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

這段規則只是最精簡的邏輯範例,不應覆蓋原有的區域網路略過規則、節點位址直連等必要規則。尤其節點使用網域時,連線至節點所需的引導解析不能反過來依賴「已連線的代理」,否則會形成啟動循環。可保留用戶端原有的節點解析方式,並另外確認其使用的上游。

也要檢查直連出站。以下展示的是需要合併或取代的 freedom 出站物件,不是要你額外建立第二個同名出站。完成設定後,中國大陸網域交由直連出站時,會透過內建 DNS 取得 IPv4 位址。

{
  "tag": "direct",
  "protocol": "freedom",
  "settings": {
    "domainStrategy": "UseIPv4"
  }
}

判斷原則:先確認查詢路徑,再加入 IP 分流

先讓網域規則、兩組上游與兩個出站彼此對應。確實需要依目標 IP 判斷時,再加入 IPIfNonMatch 與相關 IP 規則;不要為了「更完整」而同時更動解析策略、IPv6 和路由兜底規則。

五、在 v2rayN 與 v2rayNG 套用設定

圖形介面中的 DNS 頁面不一定接受完整的 Xray JSON。有些欄位只接受伺服器位址,有些頁面則會區分基本設定與進階設定。貼上內容前,先確認輸入欄位需要的是位址、DNS 物件還是完整設定。直接編輯用戶端暫時產生的執行檔案,通常會在切換節點或重新啟動後遭到覆寫。

  1. 桌面版先確認設定入口:在 v2rayN 開啟「設定」→「DNS 設定」,確認目前核心所對應的 DNS 項目;再前往「設定」→「路由設定」檢查規則順序。不同版本若採用設定分頁,請以頁面上的實際欄位說明為準。
  2. 複雜規則請使用自訂設定:需要同時控制 dns、routing 和 outbounds 時,可在 v2rayN 的「伺服器」→「新增自訂設定伺服器」中匯入合併後的完整設定。現有節點的驗證、傳輸與 TLS 參數請繼續保留。
  3. Android 版確認執行方式:在 v2rayNG 的「設定」中檢查 VPN 模式及 DNS 相關選項。若匯入完整的自訂設定,請確認實際執行的是該設定,而非只將它保存在清單中。
  4. 不要混用設定格式:v2rayNG 的原始自訂設定須符合 Xray 結構;v2flyNG 則須依 V2Fly 支援的欄位設定。訂閱連結、單一節點分享連結與完整 JSON 是三種不同的輸入格式。
  5. 儲存後重新啟動連線:查看啟動記錄是否出現 JSON 解析錯誤、不明標籤或資料檔案讀取錯誤。若啟動失敗,請先還原備份,不要連續切換多個選項來掩蓋錯誤。

六、驗證 DNS 分流與污染防護是否生效

驗證時要釐清三件事:誰收到查詢、查詢經過哪個出站,以及應用程式最後連線至哪個位址。只用 nslookup 查到可用 IP,不能證明核心 DNS 已生效;它預設測試的是系統解析路徑,正好可作為對照組。

驗證項目操作方式判讀重點
系統解析基準執行 nslookup www.example.com記錄系統解析器,不要把輸出當成核心上游已生效的證明。
中國大陸網域路徑造訪一個確認屬於目前 geosite:cn 分類的網域。在記錄或封包擷取中,確認是否透過直連出站查詢 223.5.5.5:53。
其他網域路徑造訪未命中中國大陸網域集合的網域,並確認這次操作確實觸發了核心解析。確認連線至 1.1.1.1:443 是否命中代理;若網域直接交由遠端解析,本機沒有查詢也可能是正常情況。
失敗回退暫時停用代理,再觸發一筆需要透過代理 DoH 的全新查詢。應明確顯示失敗,而不是將查詢轉交給中國大陸的一般上游。
應用程式獨立解析分別檢查瀏覽器安全 DNS、系統加密 DNS,以及遭排除的應用程式。區分應用程式本身送出的 HTTPS 查詢與核心 DoH,並逐項記錄涵蓋範圍。

測試前先清除相關快取。Windows 可執行以下命令清除系統 DNS 快取,再重新啟動核心以清除核心程序內的快取;瀏覽器也可能有自己的快取。不要連續重新整理同一個已快取的網域,再因為「沒有新查詢」就判斷設定失效。

ipconfig /flushdns
nslookup www.example.com

需要進一步排查時,可暫時將頂層 log.loglevel 調整為 debug,並搭配連線記錄觀察。不同核心版本的 DNS 詳細記錄可能不同,不應只搜尋某一句固定文字。測試結束後,請恢復為 warning 或原本的等級,並避免公開包含瀏覽網域、伺服器位址與驗證資訊的完整記錄。

七、常見設定問題

使用 DoH 後,為什麼還是無法開啟某個網站?

DoH 只能解決解析傳輸過程中的部分問題。請進一步檢查回傳的 IP、目標連接埠、節點連線狀態、路由命中情況與 TLS 交握。如果網域由代理伺服器解析,還需要檢查伺服器端的 DNS;用戶端這份設定未必參與了該次解析。

VMess、VLESS 或 REALITY 會影響這套 DNS 分流規則嗎?

這些協定會影響代理連線的協定或安全設定,但不會自動替你選擇 DNS 上游。只要實際使用的代理出站標籤正確,DNS 分流的基本做法就不變。節點位址使用網域時,啟動解析仍須另外處理。

應該馬上啟用 FakeDNS 嗎?

暫時不必。FakeDNS 回傳的是供核心對應使用的合成位址,必須讓 DNS 擷取與後續連線都回到同一條處理路徑。只開啟選項卻未完整接管流量,可能導致應用程式取得無法直接連線的位址。先確認真實 IP 解析與出站規則,再考慮啟用 FakeDNS。

本機解析與遠端解析只能擇一嗎?

不必。中國大陸的直連服務可由用戶端透過指定上游解析,其他服務則可將網域交由代理伺服器解析。關鍵是釐清每條路徑的責任範圍,不要誤以為用戶端內建 DNS 設定也會自動套用至遠端伺服器。

下載用戶端v2rayN / v2rayNG