本文適合已完成訂閱匯入與基本連線,卻遇到網域解析錯誤、分流命中不穩定或首次存取延遲的使用者。設定目標是將中國大陸網域交給本地解析器,海外網域交給加密解析器,同時讓 DNS 結果繼續受到路由規則限制。讀完後即可分辨 DNS 查詢策略、路由網域策略與系統 DNS 接管範圍,並依據日誌和命令輸出確認實際解析路徑。
DNS 分流解決的不只是速度問題
用戶端存取網站時,通常會先將網域轉換為 IP 位址,再依照路由規則選擇直連、代理或阻斷出站。若解析結果錯誤,即使 VMess、VLESS 或底層傳輸參數全部正確,連線仍可能被送往錯誤位址。若解析結果來自不適合的區域,網站也可能回傳距離較遠的服務節點,呈現握手正常但首個封包緩慢的情況。
中國大陸網域使用本地遞迴解析器,主要優點是回應距離短,並能取得適合本地網路的位址。海外網域使用經代理存取的加密 DNS,主要用於降低查詢遭改寫或錯誤快取的機率。重點不是將所有查詢強制交給同一台伺服器,而是讓網域規則、DNS 伺服器與最終出站保持一致。
還要區分「用戶端內建 DNS」與「作業系統目前使用的 DNS」。僅啟用系統代理時,瀏覽器的 HTTP 流量可以進入 v2rayN,但部分應用程式仍可能直接呼叫系統解析器。TUN 模式可以接管更廣泛的流量範圍,不過是否接管 53 連接埠的查詢,仍取決於用戶端產生的入站、DNS 劫持與路由設定。看到代理已連線,不代表所有 DNS 查詢都已進入核心。
注意:修改 DNS 前,請先儲存目前可用的設定。一次只調整伺服器分組、查詢策略或路由策略中的一項,重新連線後立即測試。同時變更多個變數,會讓日誌難以找出真正原因。
先拆解四個容易混淆的設定層
一套容易維護的 DNS 設定至少包含四層:解析伺服器負責回答查詢;網域規則決定使用哪一組伺服器;查詢策略決定請求 A、AAAA 或兩者;路由策略決定取得網域或 IP 後如何比對出站。四層的參數名稱相近,但作用位置不同。
中國大陸解析組
- 伺服器
- 223.5.5.5
- 連接埠
- 53
- 網域範圍
- geosite:cn
- 位址限制
- geoip:cn
用於本地直連網域,優先降低解析往返時間。
海外解析組
- 協定
- DNS over HTTPS
- 傳輸連接埠
- 443
- 網域範圍
- geosite:geolocation-!cn
- 建議出站
- 代理
加密查詢還需要透過路由送往代理出站,不能只填寫伺服器位址。
查詢策略
- UseIP
- 依環境查詢位址
- UseIPv4
- 僅請求 A 記錄
- UseIPv6
- 僅請求 AAAA 記錄
- 影響對象
- DNS 回傳類型
本地 IPv6 不穩定時,先使用 UseIPv4 排除位址族問題。
路由網域策略
- AsIs
- 優先保留網域
- IPIfNonMatch
- 網域未命中時再解析
- IPOnDemand
- 需要 IP 規則時解析
- 影響對象
- 路由規則比對
它與 dns.queryStrategy 並非同一個參數,不應互相取代。
expectIPs 用於檢查解析結果是否符合預期的位址範圍。例如將中國大陸網域交給本地伺服器後,可要求結果落在 geoip:cn。若結果不符合,核心可以繼續嘗試後續伺服器。skipFallback 則用於控制目前伺服器所比對的網域是否參與回退,適合規則邊界已明確的分組。
結論:先確認流量歸屬,再選擇解析伺服器
預計直連的網域,應優先選擇能回傳本地可達位址的解析器;預計使用代理的網域,則讓查詢與存取都經過代理路徑。只按「哪個 DNS 延遲較低」排序,容易得到與出站區域不相符的位址。
如何撰寫易讀的分組設定
以下片段展示 Xray 核心常見的 DNS 分組結構,適合用來理解欄位關係,不建議覆蓋用戶端自動產生的完整設定。v2rayN、v2rayNG 與 v2flyNG 搭載的核心和版本可能不同,匯入前應確認目前核心是否支援對應欄位。
{
"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",
"domains": [
"geosite:geolocation-!cn"
]
},
"localhost"
]
},
"routing": {
"domainStrategy": "IPIfNonMatch"
}
}
第一組伺服器只處理中國大陸網域,並以位址範圍限制回傳結果。第二組處理非中國大陸網域。最後的 localhost 是備援項目,是否保留取決於實際環境;若系統解析器經常回傳異常結果,可以改用另一台明確可達的伺服器,但不要在沒有日誌依據時疊加過多備援項目。
加密 DNS 位址本身也可能包含網域。核心在建立 HTTPS 連線前,需要先知道該服務端網域的 IP,這一步稱為引導解析。使用 IP 格式的端點可以降低循環依賴;使用網域端點時,則要確保它能由本地伺服器可靠解析,並確認對應查詢不會再次遞迴進入同一條尚未建立的加密連線。
- 網域集合要有明確邊界:
geosite:cn與geosite:geolocation-!cn分工清楚,避免同一網域同時命中多個伺服器組。 - DNS 出站要單獨檢查:加密查詢會連線至遠端 443 連接埠,但路由規則仍可能誤將它送往直連出站。
- 保留最終備援:沒有命中任何網域清單時,需要一台可用伺服器回應查詢,否則新網域會直接失敗。
- 先限制為 IPv4 測試:若網路沒有穩定的 IPv6,AAAA 結果可能造成連線等待,之後才回退到 A 記錄。
設定提示:訂閱更新通常只會替換節點資訊,不一定會同步覆蓋本地 DNS 與路由規則。更新訂閱後,應檢查自訂規則是否仍由目前設定引用。
v2rayN 與 Android 用戶端的設定順序
v2rayN 7.x 可先進入「設定」→「參數設定」,確認目前核心、系統代理與 DNS 相關選項,再進入路由設定檢查規則集。不同小版本的選單文字可能略有差異,但操作順序應保持一致:先確認流量入口,再確認 DNS 設定,最後確認路由出站。修改後停止目前連線並重新啟動,確保重新產生新設定。
- 記錄入口模式:確認目前使用系統代理還是 TUN。系統代理常見的本地 HTTP 連接埠為 10809,SOCKS 連接埠常見為 10808,實際值請以用戶端介面為準。
- 檢查 DNS 伺服器組:中國大陸組填寫本地可達伺服器,海外組填寫加密查詢端點,並為每組繫結清楚的網域範圍。
- 檢查路由規則順序:精確網域規則放在大範圍規則之前,阻斷規則、直連規則與代理規則不要交叉覆蓋。
- 重新啟動連線:儲存設定後重新連線,再清除作業系統與瀏覽器現有的 DNS 快取。
- 讀取核心日誌:尋找目標網域、DNS 伺服器位址、出站標籤與失敗原因,不要只看延遲測試結果。
v2rayNG 使用 Xray 核心,通常可在「設定」中的 DNS、路由與 VPN 服務相關項目進行調整。v2flyNG 使用 v2fly 核心,設定欄位的支援範圍應以核心實際版本為準。兩者都不應直接複製另一種核心的完整設定;較穩妥的方式是先在圖形介面選擇伺服器與查詢策略,再查看產生的設定是否符合預期。
這些連接埠只用於定位流量,不代表所有用戶端都採用相同的預設值。例如使用者修改本地監聽連接埠後,終端機環境變數仍指向 10808,就會出現瀏覽器正常、命令列失敗的分歧情況。檢查 DNS 時,也要同時確認應用程式實際連線到哪個本地入口。
如何驗證中國大陸與海外網域確實分開解析
驗證不能只看網頁是否開啟。瀏覽器可能重複使用既有連線,也可能保留自己的 DNS 快取。應選取一個確定直連的中國大陸網域,以及一個確定使用代理的海外網域,分別檢查解析結果、查詢耗時、核心日誌與最終出站。
| 檢查項目 | 預期結果 | 異常訊號 |
|---|---|---|
| 中國大陸網域解析 | 命中本地伺服器,結果符合中國大陸位址範圍 | 查詢進入海外加密組,首次存取延遲明顯增加 |
| 海外網域解析 | 命中加密伺服器,並透過代理出站建立連線 | 日誌顯示查詢直接發往系統 DNS |
| A 與 AAAA 記錄 | 回傳類型符合 queryStrategy | 只有無法連線的 IPv6 位址,等待連線後才回退 |
| 路由命中 | 網域規則與最終 IP 規則指向一致的出站 | DNS 走代理,但目標連線被 IP 規則改為直連 |
在 Windows 終端機中可使用 nslookup 指定伺服器進行基準測試。以下第一個測試可確認本地解析器是否可達,第二個則查看系統目前的解析路徑。系統命令取得的結果不一定經過 V2Ray 內建 DNS,因此較適合用於比對,而不是單獨證明核心分流已生效。
nslookup example.cn 223.5.5.5
nslookup example.com
ipconfig /flushdns
進行瀏覽器測試前,應關閉並重新開啟目標頁面,避免重複使用舊連線。接著查看 v2rayN 的即時日誌,確認目標網域先命中哪條 DNS 規則,再確認連線命中 direct、proxy 或 block 對應的出站標籤。若日誌中只有 IP、沒有原始網域,應檢查流量入口是否保留網域資訊,以及嗅探設定是否適用於目前協定。
結論:以日誌中的解析器與出站標籤作為驗收依據
同一網域連續測試三次時,快取會讓第二次與第三次幾乎不產生遠端查詢。先清除快取,再用首次查詢日誌判斷伺服器組;接著用連線日誌判斷最終出站,兩項都符合規則才算分流完成。
常見失敗現象與修正方式
最常見的問題是已填寫加密 DNS,但它自身卻被路由到直連。表現為一般節點可以連線,海外網域卻持續解析逾時。處理時先查明加密 DNS 端點的網域或 IP 命中了哪條規則,再為它建立明確的代理出站規則。不要因為逾時就不斷增加備用伺服器,否則實際查詢路徑會變得難以預測。
系統代理已啟用,為什麼系統查詢仍使用本地 DNS?
系統代理主要影響遵循代理設定的應用程式連線,不一定會接管作業系統發出的 UDP 53 查詢。需要結合 TUN、DNS 劫持或應用程式自身的代理解析能力處理,並透過日誌確認查詢是否進入核心。
中國大陸網站能開啟,但圖片載入很慢,該怎麼辦?
頁面與圖片可能來自不同網域。檢查靜態資源網域是否被 geosite:geolocation-!cn 規則送往海外解析組,也要檢查回傳位址是否被後續 IP 規則改走代理。依實際網域新增精確規則,不要直接放行整個頂級網域。
啟用 UseIPv4 後恢復正常,是否應該永久保留?
這表示異常可能來自 IPv6 位址無法連線、缺少路由或網路品質不穩定。目前網路只需要 IPv4 時可以保留;若之後需要 IPv6,應先檢查本地位址、預設路由與代理節點的 IPv6 支援,再恢復 UseIP 測試。
規則集更新後解析結果突然改變,原因是什麼?
網域可能被移至新的分類,或用戶端更新了 geosite 與 geoip 資料。記錄更新前後的命中規則,為重要業務網域增加優先順序較高的精確規則,再觀察是否恢復。精確規則應少而清楚,避免形成難以維護的長清單。
另一個常見問題是瀏覽器啟用了獨立的安全 DNS,而用戶端也設定了加密 DNS。此時查詢可能繞過用戶端分組邏輯,日誌中看不到目標網域。排查階段應統一查詢入口:要麼讓瀏覽器查詢進入代理並由用戶端處理,要麼明確記錄瀏覽器自身的解析端點與代理路徑,避免兩套策略同時運作。
- 查詢逾時:檢查解析伺服器的可達性、443 或 853 連接埠路徑,以及對應的出站標籤。
- 回傳位址異常:檢查網域分組、
expectIPs範圍與本地快取。 - 網頁間歇性失敗:檢查 A 與 AAAA 記錄、IPv6 可達性及 Happy Eyeballs 回退等待時間。
- 規則未命中:檢查網域規則優先順序、路由
domainStrategy與規則集版本。 - 訂閱更新後失效:檢查用戶端是否切換了設定組,以及自訂 DNS 是否仍繫結至目前設定。
穩定設定的收尾原則
完成驗證後,保留一組中國大陸解析器、一組海外加密解析器,以及一個用途明確的備援項目即可。伺服器數量越多,不代表可靠性越高;沒有網域邊界與回退條件的長清單,只會增加隨機命中與故障定位成本。
路由規則也應遵循相同原則:先放業務需要的精確網域,再放 geosite 分類,最後處理 IP 分類與預設出站。DNS 分組與路由分組採用同一套「中國大陸直連、海外代理」意圖,才能避免解析階段與連線階段互相推翻結果。
- 儲存一份已驗證可用的基本設定。
- 記錄用戶端版本、核心類型、入口模式與本地監聽連接埠。
- 為中國大陸與海外各選擇一個固定測試網域。
- 規則集或訂閱更新後,重新執行首次查詢測試。
- 發生異常時,依照「入口、解析器、位址結果、路由出站」順序讀取日誌。
最終驗收標準很明確:中國大陸網域由本地解析器快速回傳合理位址,並命中直連出站;海外網域由加密解析器查詢,解析請求與目標連線都命中代理出站;未分類網域具備穩定備援;IPv4 與 IPv6 回傳類型符合目前網路能力。滿足這四項後,再考慮快取時間、規則細化與個別網域覆蓋。