適合已能用 v2rayN 連線節點,但遇到網域解析異常或分流不穩定的讀者。先釐清由誰解析網域,再分別設定境內 DNS、境外 DoH 與路由規則;最後依請求路徑檢查快取、記錄與實際出口。
先確認 DNS 查詢由誰發出
DNS 分流不是把兩個伺服器位址填進清單就完成。瀏覽器可能自行解析網域,作業系統也可能先取得 IP;只有網域進入 V2Ray 或 Xray 核心的解析流程,設定中的 dns 規則才有機會生效。v2rayN 啟用「系統代理」主要影響遵循系統代理設定的應用程式,不代表整台裝置的所有 DNS 查詢都會由它接管。
先使用正常運作的節點建立連線,再記錄同一個網站在瀏覽器與其他應用程式中的狀況。如果只有某個瀏覽器異常,優先檢查瀏覽器本身的安全 DNS 設定;如果只有直連的應用程式異常,先確認流量是否經過用戶端。別一開始就同時修改系統 DNS、TUN 和路由規則,否則很難判斷是哪個步驟生效。
依網域選擇境內 DNS 與境外 DoH
以下是協助理解結構的 dns 片段,並非可直接匯入 v2rayN 的完整設定。範例使用 geosite:cn 比對常見境內網域,並交由一般 DNS 查詢;使用 geosite:geolocation-!cn 比對相應網域,並交由 DoH 查詢。未符合前兩組條件的網域則交由最後的備用上游處理。實際效果仍取決於使用的核心、規則資料與設定產生方式。
{
"dns": {
"servers": [
{
"address": "223.5.5.5",
"port": 53,
"domains": ["geosite:cn"],
"expectIPs": ["geoip:cn"]
},
{
"address": "https://1.1.1.1/dns-query",
"domains": ["geosite:geolocation-!cn"]
},
"localhost"
]
}
}
address 用來指定上游;一般 DNS 範例使用 53 埠,DoH 位址使用 HTTPS,通常透過 443 埠建立連線。domains 決定網域優先比對哪個項目,並非存取控制清單。expectIPs 用來篩選回傳位址:範例要求境內上游的結果落在 geoip:cn 範圍內;這不能證明某個網域必然應解析至境內 IP,尤其跨區域部署的網站,結果可能不如預期。
localhost 是未符合前述網域規則時的備用解析方式,會使用本機的解析環境;如果正在排查本機 DNS 污染,別把備用解析結果誤認為已經經過 DoH。DoH 位址本身也必須能連線。若遇到逾時,請分別確認目前網路能否連上該上游,以及核心發出的 DNS 連線實際經由哪個出口;只修改 servers 清單,無法保證查詢一定經過代理。
在 v2rayN 儲存設定並檢查路由
v2rayN 介面可能因版本而異,請先在「設定」中找到「DNS 設定」,查看目前使用的設定模式與可編輯項目。如果介面支援自訂 DNS 設定,請先備份原有內容,再依欄位要求填寫;別把上方片段貼進只接受伺服器位址的輸入框。儲存後重新啟動核心,並查看用戶端記錄是否出現 JSON 解析錯誤或 DNS 上游連線失敗。
解析設定:先確認查詢對象
- 入口
- 「設定」→「DNS 設定」
- 境內比對
- geosite:cn
- 境外比對
- geosite:geolocation-!cn
- 備用解析
- 檢查 localhost 的實際解析結果
編輯前先備份原有設定,並確認目前使用的模式允許修改核心 DNS 規則。
路由設定:再確認連線出口
- 入口
- 「設定」→「路由設定」
- 境內規則
- 依網域比對並直連
- 境外規則
- 依網域比對並代理
- 預設出口
- 確認未符合規則的流量會送往何處
同時檢查規則優先順序與目前啟用的路由方案,不能只確認規則是否存在。
路由規則和 DNS 規則的設定意圖應一致。例如,境內網域由境內上游解析,卻先被較前面的寬泛代理規則比對,就可能發生「解析正常,但出口不對」的情況。請在「設定」→「路由設定」確認目前啟用的規則集,再查看各規則的排列順序。訂閱更新通常只負責更新伺服器清單,別假設更新訂閱也會一併修正本機 DNS 與路由設定。
如果連線進入核心時仍保留網域,路由就能先依網域規則比對;domainStrategy 會影響路由判斷何時解析 IP。AsIs 不會為路由主動解析網域;IPIfNonMatch 會在網域規則未比對成功時嘗試解析;IPOnDemand 則可在遇到需要依 IP 判斷的規則時觸發解析。這些選項處理的是路由判斷的時機,不會讓未進入核心的系統 DNS 查詢自動改用指定上游。
分辨 DNS 污染、快取與分流錯誤
排查時固定一個網域、一個應用程式和一個節點,每次只修改一項。先確認網域能否開啟,再查看核心記錄是否有 DNS 查詢、查詢失敗或路由比對紀錄。如果只有少數網域失敗,優先比較不同上游回傳的位址;如果所有網域都失敗,先檢查節點連線、DoH 是否可連線及設定語法,別直接認定是 DNS 污染。
- 確認請求入口。先用瀏覽器測試,再用另一個遵循系統代理設定的應用程式對照。若只有直連應用程式失敗,請檢查系統代理或 TUN 狀態,而不是先增加 DNS 規則。
- 確認查詢紀錄。在 v2rayN 記錄中搜尋目標網域與 DNS 錯誤。如果完全找不到相應請求,請檢查應用程式本身的安全 DNS、系統快取,以及流量是否進入核心。
- 確認連線出口。對照「路由設定」中啟用的規則與記錄顯示的出站結果。若回傳 IP 正常但連線仍失敗,接著檢查路由、節點與目標服務,而不是反覆更換上游。
- 清除舊結果再測試。Windows 可在命令提示字元執行
ipconfig /flushdns清除系統 DNS 快取;接著重新啟動測試中的應用程式,避免把舊的解析結果誤認為新設定的效果。
如果網域已在應用程式端解析成 IP,才交給代理,核心可能只能依 IP 規則判斷。流量嗅探在適用的 HTTP 或 TLS 連線中,或許能協助還原網域資訊,但無法涵蓋所有協定,也不能取代正確的 DNS 請求入口。先釐清請求路徑,再決定是否調整嗅探與 IP 路由規則。
常見問題:修改 DNS 後仍未生效?
填入 DoH 位址後,網頁反而一直載入?
先檢查 https://1.1.1.1/dns-query 所需的 HTTPS 連線是否可用,再查看核心記錄是否出現逾時。DoH 查詢的連線出口需要另外確認,不能只因目標網站使用代理,就推斷 DoH 查詢也走代理。
境內網站被判定為境外,該怎麼辦?
先檢查 geosite 規則資料與啟用中的路由方案,再確認該網域是否符合指定的 domains 項目。跨區域服務不一定符合依 IP 所在地分類的預期,可針對該網域建立更明確的規則。
只有一個瀏覽器出現解析錯誤?
檢查該瀏覽器自己的安全 DNS 設定,關閉後重新測試,並重新啟動瀏覽器以清除舊連線。如果其他應用程式一直正常,先別修改全域 DNS 設定。
儲存設定後,所有網站都無法開啟?
先還原備份,並在記錄中尋找設定解析錯誤。確認輸入欄位接受完整的 dns 物件,而非只接受上游位址;每次只新增一條規則,儲存並重新啟動核心測試。
修改路由後,DNS 回傳結果為何還是舊的?
路由規則不會主動更新已快取的解析結果。請先清除系統快取、重新啟動測試中的應用程式,再確認核心是否送出新的查詢;不要把連線出口改變誤認為 DNS 回傳結果也改變。
設定完成後的檢查方式很簡單:選一個境內網域和一個境外網域,分別確認解析上游、路由比對結果與實際連線狀況。三項都符合預期後,再套用至日常使用的應用程式。如果問題只出現在 v2rayNG 或 v2flyNG,也要分別檢查 Android 端使用的核心與用戶端設定;桌面版 v2rayN 的設定不會自動同步到其他裝置。