v2rayN DNS 設定教學:國內外網域分流與 DNS 防污染

了解遠端 DNS 與直連 DNS 的用途,運用 geosite 規則分流解析,並比較 DoH 和 FakeDNS 的取捨。

本文重點

適合已匯入訂閱、節點可連線,但遇到部分網域無法開啟或台灣網站連線變慢的 macOS 使用者。先釐清系統解析與核心解析的差異,再設定直連 DNS、遠端 DNS 和網域規則,最後透過終端機與記錄檔確認實際連線路徑。本文以 v2rayN 使用 Xray 核心的設定方式為主;若更換核心,請重新確認 DNS 欄位,不要直接套用原設定。

一、DNS 分流:先釐清三種路徑

DNS 的作用是將網域名稱轉換為 IP 位址。v2rayN 是用戶端,實際負責連線與部分解析工作的是所選核心。瀏覽器、macOS 系統解析器和核心內建 DNS 都可能參與同一次連線;只修改其中一處,不代表所有請求都會套用新設定。

應用程式送出網域名稱 比對網域規則 視需要進行解析 選擇連線出口 建立目標連線

以上是應用程式將網域名稱交給代理時的簡化流程。如果應用程式先在本機解析,代理收到的可能只有 IP;如果由代理伺服器解析網域,本機核心則不一定會送出目標網域的 DNS 查詢。因此,記錄檔中沒有某個網域的查詢紀錄,不一定代表設定沒有生效。

二、直連 DNS 與遠端 DNS 的設定方式

先開啟 v2rayN 的「設定」→「DNS 設定」,並在「設定」→「參數設定」確認目前使用的核心。不同版本與核心的欄位可能不同;如果介面提供各核心獨立的 DNS 設定,請修改目前使用的那一組。先備份原設定,再更換解析器,避免同時調整路由、TUN 和 IPv6。

用途入門範例需要確認的條件
直連 DNS223.5.5.5目前網路可連線;一般 DNS 查詢通常未加密
直連 DoHhttps://dns.alidns.com/dns-query核心支援此格式;端點網域可完成引導解析
遠端 DoHhttps://dns.google/dns-query查詢依預期透過代理傳送;TLS 驗證正常且系統時間正確

以下是公開服務的位址範例,不代表在所有網路環境中的速度排名。初次設定時,每種類型保留一個確認可連線的解析器即可。一次填入太多位址會增加回退與並行查詢的複雜度,也讓問題更難從記錄檔中追查。企業內網、校園網或需要解析本地域名的網路,應保留相應的內部解析路徑。

53
一般 DNS 常用 UDP/TCP 連接埠
443
DoH 常用 HTTPS 連接埠
853
DoT 常用 TLS 連接埠

連接埠號碼用來識別傳輸方式,不代表本機已在這些連接埠上監聽。v2rayN 的代理監聽連接埠與 DNS 監聽連接埠是不同設定;請勿將 HTTP 或 SOCKS 代理連接埠填入 macOS 的 DNS 伺服器清單。

三、geosite 規則需同時考量解析與連線

geosite 是網域分類資料,geoip 是 IP 分類資料。兩者都不是解析器,也不會自動提供 DNS 服務。以 Xray 為例,路由中的 geosite:cn 可用來比對中國大陸網域;內建 DNS 的伺服器項目也可透過 domains 指定優先處理的網域集合。兩者用途相關,但不能互相取代。

  1. 先檢查規則資料。確認目前使用的核心能載入所需的網域與 IP 資料,且記錄檔沒有檔案遺失或分類不存在的錯誤。分類內容可能變動,不應視為永遠準確的地理界線。
  2. 設定直連解析範圍。將符合 geosite:cn 的網域優先交給直連 DNS;內部網域則使用獨立規則,避免送往公共解析器。
  3. 設定遠端解析範圍。將需要代理的網域交給遠端 DNS;若使用 geosite:geolocation-!cn,請先確認資料中有這個分類。這是分類集合,不會即時判斷所有非中國大陸網域。
  4. 確認連線路由。中國大陸網域直連,需要代理的網域則透過代理連線。Xray 路由規則會依序比對,請將明確的網域規則放在可能先行匹配的廣泛規則之前。
  5. 檢查回退策略。網域未匹配、回應為空或位址不符合預期時,查詢可能改由其他伺服器處理。若要求某類網域不使用直連 DNS,也必須一併檢查其回退範圍。

Xray 的 routing.domainStrategy 用來控制路由階段是否透過解析結果比對 IP 規則。AsIs 不會為 IP 規則主動解析網域;IPIfNonMatch 則會在網域規則未匹配時嘗試解析,再進行比對。它與 DNS 模組中的 queryStrategy 是不同的設定,後者主要影響查詢的位址類型等行為。

結論:先比對網域規則,再檢查 IP 規則

網站連線走錯出口時,先確認是否匹配預期的網域分類,以及規則順序是否正確。只有在確實需要依 IP 判斷連線時,才調整路由階段的解析策略;不要靠更換 DNS 掩蓋路由設定錯誤。

四、DoH 防污染與引導解析設定

DoH 會透過 HTTPS 傳送 DNS 查詢,可保護到解析器這一段的傳輸,降低途中遭讀取或竄改的風險。但它無法保證解析器提供的答案一定正確,也不會隱藏連線目的 IP。如果瀏覽器啟用了獨立的安全 DNS,也可能略過核心中設定的解析器。

不建議為了省略引導解析,就任意將 DoH 位址的主機名稱改成 IP。HTTPS 也涉及憑證名稱與伺服器虛擬主機。只有解析服務明確支援該 IP 端點時,才使用服務方公布的位址格式。

五、何時需要啟用 FakeDNS

FakeDNS 不是另一種公共 DNS 服務。它會為網域分配合成 IP,並在流量再次進入核心時,將該 IP 對應回原始網域。如此一來,即使應用程式後續只送出 IP,核心仍有機會依網域進行分流。FakeDNS 常用於搭配透明代理接管,但啟用 TUN 不代表一定要開啟它。

比較項目DoHFakeDNS
主要用途加密傳輸實際 DNS 查詢保留網域與合成 IP 的對應關係
回傳結果解析器提供的實際位址紀錄由本機映射池產生的位址
必要條件端點可連線、憑證有效、出口正確查詢與後續連線都由配套機制處理
常見問題引導解析失敗、連線逾時合成 IP 意外直連、快取映射不一致

如果只使用系統代理,且瀏覽器已將網域交給代理處理,通常先維持 FakeDNS 關閉。若在 TUN 情境中,應用程式先行解析導致網域規則失效,再檢查目前的核心與用戶端是否完整支援 DNS 接管和映射。更換核心時請重新驗證,不要假設不同核心的實作方式相同。

結論:先驗證接管路徑,再啟用 FakeDNS

先確認 DNS 查詢進入預期的處理路徑,再確認合成位址對應的連線不會繞過用戶端。啟用後若只有部分應用程式無法連線,優先檢查快取、略過規則與映射,不要立即更換節點。

六、依序驗證 macOS 上的 DNS 解析與代理

每次只修改一組設定。儲存後重新啟動核心,查看啟動記錄是否有錯誤,再進行下列測試。命令中的網域僅供示範;測試無法連線的網站時,請替換為該網站的主機名稱。請勿將訂閱網址、節點憑證或完整連線設定貼到公開記錄檔。

  1. 查看系統 DNS。執行 scutil --dns,檢查目前網路、VPN 或其他網路服務設定了哪些解析器。這會顯示系統解析設定,不會列出 Xray 內建 DNS 的所有狀態。
  2. 測試指定解析器。執行以下 dig 命令,確認該解析器在目前網路是否有回應。這不等於驗證 v2rayN 的 DNS 分流。
  3. 測試代理連線。先確認「設定」→「參數設定」中的本機監聽連接埠與協定,再執行代理請求。範例假設 10808 提供 HTTP 或混合代理;若實際上只有 SOCKS 服務,請勿直接使用 HTTP 格式。
  4. 確認核心記錄檔。比對同一測試時段的目標網域、匹配的路由、出口選擇及 DNS 逾時情形。必要時可暫時提高記錄層級,測試結束後再恢復。
# 查看 macOS 系統解析器
scutil --dns

# 直接查詢指定解析器,逾時 2 秒,僅嘗試 1 次
dig @223.5.5.5 www.baidu.com A +time=2 +tries=1

# 僅在 10808 提供 HTTP 或混合代理時使用
curl -I --proxy http://127.0.0.1:10808 \
  --connect-timeout 10 --max-time 20 https://www.example.com/

若監聽連接埠支援 SOCKS5,也可以比較以下兩個命令。第一個通常會在本機解析目標網域,第二個則將網域交給 SOCKS 代理。若第二個成功、第一個失敗,請優先檢查本機解析路徑;但仍須搭配記錄檔排除位址類型差異或網站連線限制。

# 在本機解析目標網域
curl -I --proxy socks5://127.0.0.1:10808 \
  --connect-timeout 10 --max-time 20 https://www.example.com/

# 將目標網域交由 SOCKS 代理處理
curl -I --proxy socks5h://127.0.0.1:10808 \
  --connect-timeout 10 --max-time 20 https://www.example.com/

調整後仍得到舊結果時,請先關閉再重新開啟測試應用程式。若確實需要清除 macOS 系統 DNS 快取,可在終端機執行以下命令;第二個命令需要管理員權限。這些命令不會清除瀏覽器獨立快取、核心快取或上游解析器快取。

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

七、DNS 分流常見問題

改用 DoH 後,為什麼所有網站都變慢了?

先還原原本的解析器,確認連線是否恢復正常。接著檢查 DoH 端點的引導解析、代理出口和逾時記錄。如果中國大陸網域也交由遠端解析器處理,可能取得不適合目前直連出口的位址;應一併分流中國大陸網域的解析與連線,而不是只更換 DNS 位址。

dig 查詢正常,但瀏覽器仍無法開啟網站,代表什麼?

dig @223.5.5.5 只能證明這次向指定解析器送出的查詢有收到回應。瀏覽器可能使用獨立的安全 DNS,也可能受到系統代理或擴充功能衝突影響。請先用上方明確指定代理的命令重新測試,再確認瀏覽器的代理與安全 DNS 設定。

中國大陸網站解析到境外 IP,一定是 DNS 污染嗎?

不一定。CDN 調度、解析器所在位置和服務部署方式都可能影響結果。請分別透過直連與遠端解析器查詢同一網域,並比較連線是否成功、路由是否符合預期。答案不同本身不足以證明遭到污染,也不建議將單次結果長期寫入 hosts。

有 A 紀錄卻連線逾時,需要關閉 IPv6 嗎?

先分別查詢 A 與 AAAA,再比較 curl -4 和 curl -6 的結果。透過代理測試時,位址類型也可能由代理端決定,不能據此直接判斷本機 IPv6。確認是哪一段 IPv6 路徑失敗後,再調整相應查詢或出口策略,避免一次關閉整個系統功能。

Android 版可以直接套用這組 DNS 設定嗎?

分流原則可以參考,但設定不能直接照搬。v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心;兩款用戶端的 VPN 接管方式、DNS 入口和支援欄位都需要分別確認。移轉時先測試單一網域與單一解析器,再逐步加入分類規則和回退策略。

最後確認三件事:中國大陸網域使用預期的直連解析路徑;需要代理的網域不會意外回退至直連解析;連線走向正確的出口。保留一份可正常運作的設定,再逐項加入 DoH、IPv6 或 FakeDNS,日後遇到問題才有明確的回復基準。

下載 V2Ray 用戶端