適合已能透過 v2rayN 或 v2rayNG 連線至節點,並打算調整 DNS 分流的使用者。先釐清系統解析、核心解析與代理伺服器解析的差異,再透過兩組上游和明確的出站規則,建立可驗證的設定。範例以 Xray JSON 為準,設定片段須合併至現有設定,並非可直接啟動的完整節點檔案。
一、內建 DNS 如何參與連線
「明明設定了 DNS,為什麼瀏覽器還是查詢系統伺服器?」通常不是伺服器位址填錯,而是請求根本沒有進入核心 DNS。V2Ray、Xray 的內建 DNS 是供核心呼叫的解析模組,不會因為設定中出現 dns 欄位,就自動接管整台裝置的所有 UDP 53 請求。
應用程式將網域交給 SOCKS 代理時,核心可能會直接把網域交給遠端伺服器解析。若應用程式先透過系統 DNS 取得 IP,再將 IP 交給代理,核心收到的就不再是原始網域。這兩種路徑都不能簡單視為「用戶端內建 DNS 已生效」。
- 路由需要 IP:當
routing.domainStrategy設為IPIfNonMatch時,網域規則未命中後,路由可呼叫內建 DNS,再嘗試比對 IP 規則。 - 直連出站需要 IP:Xray 的
freedom出站使用UseIPv4等解析策略時,會透過內建 DNS 取得連線位址。 - 裝置送出一般 DNS 封包:必須另外設定接收、轉送或擷取流程;只填入上游伺服器並無法完成這件事。
- 瀏覽器啟用安全 DNS:瀏覽器可能自行送出 HTTPS 查詢。即使請求經過代理,也不一定會使用這裡設定的內建解析上游。
二、先確認上游、連接埠與核心範圍
本文將中國大陸網域交由 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
需要代理節點先能連線;代理無法使用時,不應悄悄退回一般本機解析。
v2rayN 是桌面用戶端,不代表固定使用某一種核心。v2rayNG 使用 Xray,v2flyNG 使用 V2Fly;欄位是否支援及預設行為,須依實際核心確認。尤其是 DNS 回退欄位、特殊位址前綴與出站解析策略,不要將同一份 Xray 設定原封不動套用至所有核心。
- 備份目前可正常連線的設定,記下用戶端版本,以及啟動記錄中的核心版本。
- 確認執行中的設定已有代理出站,並記下其實際
tag。以下統一使用proxy,並非要求修改協定名稱。 - 確認
geosite.dat可讀取,且包含cn分類。資料檔案缺失會導致規則載入失敗,與上游逾時不同。 - 操作期間一次只調整一個部分:先改 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"
}
]
}
}
domains是解析伺服器的比對條件,不是完整的流量路由規則。網域交給某個 DNS 解析,不代表網頁連線也會自動使用相同的出站。skipFallback: true表示這台伺服器不參與未命中查詢的回退流程,避免中國大陸上游順帶收到其他網域的查詢。disableFallback: true用來停用比對上游失敗後的回退階段。未命中專用網域清單的查詢,仍由預設上游處理;這不等於「所有查詢都禁止使用預設伺服器」。queryStrategy: "UseIPv4"會限制此次解析策略,不能取代系統層級的 IPv6 路由管理。
這份設定刻意未加入 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 物件還是完整設定。直接編輯用戶端暫時產生的執行檔案,通常會在切換節點或重新啟動後遭到覆寫。
- 桌面版先確認設定入口:在 v2rayN 開啟「設定」→「DNS 設定」,確認目前核心所對應的 DNS 項目;再前往「設定」→「路由設定」檢查規則順序。不同版本若採用設定分頁,請以頁面上的實際欄位說明為準。
- 複雜規則請使用自訂設定:需要同時控制
dns、routing和outbounds時,可在 v2rayN 的「伺服器」→「新增自訂設定伺服器」中匯入合併後的完整設定。現有節點的驗證、傳輸與 TLS 參數請繼續保留。 - Android 版確認執行方式:在 v2rayNG 的「設定」中檢查 VPN 模式及 DNS 相關選項。若匯入完整的自訂設定,請確認實際執行的是該設定,而非只將它保存在清單中。
- 不要混用設定格式:v2rayNG 的原始自訂設定須符合 Xray 結構;v2flyNG 則須依 V2Fly 支援的欄位設定。訂閱連結、單一節點分享連結與完整 JSON 是三種不同的輸入格式。
- 儲存後重新啟動連線:查看啟動記錄是否出現 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 持續逾時:先確認代理節點是否可用、
proxy標籤和規則順序,再檢查服務位址是否可連線。 - 出現憑證錯誤:檢查裝置時間與 TLS 驗證環境,不要把停用憑證驗證當成修復 DNS 的方法。
- 中國大陸網站解析成功,但連線緩慢:檢查是否取得不合適的 CDN 位址,以及網頁流量是否也命中直連規則。
- 測試頁面顯示海外解析器:應依預期判斷;代理 DoH 顯示海外遞迴解析伺服器本來就有可能,伺服器的地理位置本身不能證明發生 DNS 洩漏。
七、常見設定問題
使用 DoH 後,為什麼還是無法開啟某個網站?
DoH 只能解決解析傳輸過程中的部分問題。請進一步檢查回傳的 IP、目標連接埠、節點連線狀態、路由命中情況與 TLS 交握。如果網域由代理伺服器解析,還需要檢查伺服器端的 DNS;用戶端這份設定未必參與了該次解析。
VMess、VLESS 或 REALITY 會影響這套 DNS 分流規則嗎?
這些協定會影響代理連線的協定或安全設定,但不會自動替你選擇 DNS 上游。只要實際使用的代理出站標籤正確,DNS 分流的基本做法就不變。節點位址使用網域時,啟動解析仍須另外處理。
應該馬上啟用 FakeDNS 嗎?
暫時不必。FakeDNS 回傳的是供核心對應使用的合成位址,必須讓 DNS 擷取與後續連線都回到同一條處理路徑。只開啟選項卻未完整接管流量,可能導致應用程式取得無法直接連線的位址。先確認真實 IP 解析與出站規則,再考慮啟用 FakeDNS。
本機解析與遠端解析只能擇一嗎?
不必。中國大陸的直連服務可由用戶端透過指定上游解析,其他服務則可將網域交由代理伺服器解析。關鍵是釐清每條路徑的責任範圍,不要誤以為用戶端內建 DNS 設定也會自動套用至遠端伺服器。