適合已匯入節點並能連線,但想調整中國大陸直連與海外代理範圍的使用者。先釐清流量接管與核心路由的差異,再於 v2rayN 建立獨立路由方案。本文提供 V2Ray/Xray 格式的 JSON 片段、規則順序與驗證方式;範例並非完整用戶端設定,套用前請確認實際的出站標籤。
1. 系統代理與路由分流的差異
系統代理決定應用程式是否將連線交給 v2rayN 的本機入口;路由分流則決定核心收到連線後,要選擇直連、代理或封鎖。兩者位於不同層級。只啟用系統代理,不代表所有應用程式都會使用它;終端機、使用自有網路堆疊的程式,或設定代理例外的瀏覽器,都可能繞過這個入口。
本文以系統代理接管瀏覽器作為驗證環境,不同時調整 TUN。VMess、VLESS 等協定是代理出站的連線方式,並不決定中國大陸網域是否直連。訂閱提供節點資訊,也不能取代目前選用的本機路由方案。
10808 是下方指令使用的範例連接埠,不代表所有安裝環境的預設值。請先在「設定」→「參數設定」確認本機監聽連接埠與入口類型;只有該連接埠確實接受 HTTP 代理請求,才能直接使用文中的 HTTP 代理測試指令。
2. 在 v2rayN 建立獨立路由方案
先備份現有路由,再新增測試方案。v2rayN 介面會因版本及桌面介面類型而異,以下採用常見的中文選單名稱;請勿將路由規則 JSON 貼到訂閱網址欄位,也不要直接覆寫正在使用的暫存產生檔。
- 開啟「設定」→「路由設定」,記下目前啟用的方案,並使用介面提供的匯出功能保存副本。若目前版本沒有匯出選項,請先複製現有規則內容備份。
- 在路由設定中新增或複製一個方案,命名為「中國大陸直連測試」。透過規則清單的新增、編輯與排序功能建立規則,不要修改原有方案。
- 確認
geoip.dat與geosite.dat可正常使用。若記錄檔顯示載入失敗或找不到標籤,請先處理規則檔案,再測試路由。 - 儲存後,在主視窗的路由選擇項目切換至新方案,並確認核心已成功重新啟動或重新載入設定。只編輯方案但未選取,不會影響目前連線。
- 發生異常時,切回原方案並重新建立測試連線。疑難排解時,請勿同時更換節點、DNS 與流量接管方式。
3. domain、ip 與 outboundTag 的比對方式
規則會依清單順序逐一檢查,第一條符合的規則決定出站。同一欄位中的多個候選條件通常是「或」的關係;同一條規則中不同條件欄位之間則是「且」的關係。例如同時填入 domain 和 port,必須網域與連接埠都符合才會命中。不要把網域與 IP 填在同一條規則中,以免誤以為符合其中一項就會命中。
目標比對欄位
- domain
- 網域條件陣列,例如 domain:example.com
- ip
- IP、CIDR 或 geoip 分類陣列
- port
- 目標連接埠,例如 443 或 80,443
- network
- 網路類型,例如 tcp,udp
跨欄位組合會縮小比對範圍;請先用單一條件驗證,再逐步增加限制。
路由控制欄位
- type
- 本文規則統一使用 field
- outboundTag
- 指向已存在出站的 tag
- domainStrategy
- 位於 routing 底下,控制路由階段的網域解析
- rules
- 依優先順序排列的規則陣列
標籤是設定中的識別名稱,不是協定名稱;大小寫與拼字必須和出站一致。
| 寫法 | 比對範圍 | 注意事項 |
|---|---|---|
full:example.com | 只比對此完整網域 | 不包含 www.example.com |
domain:example.com | 此網域及其子網域 | 適合用來管理個別網站例外 |
geosite:cn | 規則檔中的 cn 網域集合 | 不等於所有中文網站 |
geoip:cn | 規則檔中的中國 IP 網段集合 | 取決於目標 IP 或路由解析結果 |
geoip:private | 資料檔定義的私有與保留位址集合 | 適用於區域網路等位址,實際範圍取決於資料來源 |
192.168.1.0/24 | 指定 IPv4 子網路 | 範圍比整個私有位址集合更精確 |
在這類規則中,不帶前綴的普通網域字串可能會以子字串方式比對,容易擴大命中範圍。若要精確控制網站範圍,建議明確使用 full: 或 domain:。此外,geosite:cn 與 geoip:cn 是兩種不同的資料分類,不能互相取代。
4. 直連、代理與封鎖規則範例
以下規則順序為:封鎖指定網域、私有位址直連、指定網域走代理、中國大陸網域直連、中國大陸 IP 直連,最後讓其他 TCP/UDP 流量走代理。範例中的 ads.example.com 和 remote.example.com 僅用來說明寫法,不代表實際廣告清單或可用的測試服務。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["domain:ads.example.com"],
"outboundTag": "block"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["domain:remote.example.com"],
"outboundTag": "proxy"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
這是一段 routing 片段,不包含入口、DNS 與出站定義。完整設定中必須已存在 direct、proxy、block 三個標籤。在 V2Ray/Xray 設定中,直連通常對應 freedom 出站,封鎖通常對應 blackhole 出站;代理標籤則指向所選節點的實際出站。不要為了湊齊範例而新增不完整的節點物件。
- 窄範圍規則優先:指定網域例外應放在大範圍分類之前,否則請求先命中中國大陸網域集合,後續的代理例外便不會執行。
- 兜底規則放最後:
network: tcp,udp涵蓋範圍很廣,若放在清單頂端,會攔截後續同類流量規則的比對。 - 未命中不代表自動直連:V2Ray/Xray 通常會以第一個出站處理未符合規則的流量。明確設定兜底規則,可減少對出站排列順序的隱性依賴。
- 先縮小封鎖範圍:先驗證單一明確網域,再考慮使用分類清單。若誤封鎖登入、驗證或靜態資源網域,網頁可能只顯示空白。
結論:依網域與 IP 分類分流,指定服務應另設規則
境外網站若使用中國大陸的 CDN 位址,仍可能命中 geoip:cn 而走直連。若要讓特定服務固定走代理,應新增明確的網域規則,並放在中國大陸分類之前,而非依賴「海外網站」這類自然語言標籤。
5. domainStrategy 與 DNS 的實際影響
網域規則要生效,核心必須先取得目標網域。若應用程式只提供 IP,geosite 無法憑空還原網站名稱。嗅探可能在部分連線中補充網域資訊,但不是所有協定與連線都能提供可辨識的網域,不應將它視為絕對保證。
| 策略 | 路由行為 | 疑難排解重點 |
|---|---|---|
AsIs | 不額外解析網域以供路由比對 | 網域目標通常無法透過 geoip 規則分類 |
IPIfNonMatch | 網域階段未命中後,再解析並比對 IP 條件 | 若已命中範圍寬廣的兜底規則,通常不會觸發這次解析 |
IPOnDemand | 比對過程遇到需要 IP 的規則時,嘗試進行解析 | 較早的 IP 規則可能在網域例外之前決定出站 |
上一節保留了明確的代理兜底,因此使用 IPIfNonMatch 時,尚未解析且未命中中國大陸網域集合的網域,可能直接命中最後的代理規則,不會再透過 geoip:cn 補充判斷。範例中的中國大陸 IP 規則,主要涵蓋以 IP 形式交給核心的目標。若需求是依 IP 地理位置判斷尚未分類的網域,就必須重新設計兜底與解析策略,不能只切換一個選項。
6. 使用新連線與記錄檔驗證分流
網頁能開啟,只能證明某條連線路徑可用,無法證明流量經過預期的出站。重複使用的連線也可能沿用修改前的路徑。每次儲存並套用方案後,請關閉舊的測試連線再重新發出請求;必要時可暫時將記錄層級調整為 info,完成後再恢復原設定。
- 在 v2rayN 的記錄區確認核心已成功啟動。先排除規則檔案遺失、JSON 語法錯誤及出站標籤不存在等問題。
- 確認瀏覽器確實使用本機入口,並暫時停用會覆寫系統代理設定的擴充功能。請勿同時用瀏覽器快取頁面和其他流量接管方式來判斷規則。
- 分別測試中國大陸網域、未分類網域及可存取的區域網路位址。記下目標、時間與預期出站,再於相同時段的記錄檔中查找路由結果。
- 若目前版本的一般記錄檔不會顯示規則細節,可短暫啟用更詳細的記錄。避免長時間保留包含完整連線目標的記錄檔,分享前請先移除敏感資訊。
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://www.baidu.com/
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/
在 Windows PowerShell 中,若 curl 被對應為其他指令,請改用 curl.exe。這兩條指令僅用來透過指定入口建立新請求;HTTP 狀態碼、逾時或回應標頭本身,都無法證明出站選擇。部分服務不接受 HEAD 請求,也不能因此直接判定路由有誤。
- 完全沒有請求記錄:先檢查入口連接埠、代理類型與應用程式的代理設定,不要急著修改分流清單。
- 有連線但出站錯誤:檢查目前啟用的方案、規則順序、目標是網域還是 IP,以及範圍寬廣的規則是否提早命中。
- 出站正確但連線失敗:接著檢查節點、目標服務、DNS 結果與 UDP 支援,不要用新增直連規則來掩蓋根本原因。
7. 自訂路由常見問題
中國大陸網站仍走代理,該先檢查哪裡?
先在主視窗確認已選取剛編輯的路由方案,再檢查 geosite:cn 是否載入成功。針對記錄檔中實際出現的網域,新增一條 domain: 直連規則,並放在兜底之前。網站首頁、登入頁與圖片服務可能使用不同網域,請逐一驗證。
新增代理網域規則後,為什麼還是直連?
將指定網域規則移到範圍較廣的中國大陸分類之前,並確認請求有帶上網域資訊。若使用按需解析,較早的私有 IP 規則也可能先命中。請重新建立連線並查看出站標籤,不要只重新整理仍在沿用舊連線的分頁。
訂閱更新後,自訂分流規則會被覆寫嗎?
一般的節點訂閱更新與本機路由方案通常分開管理。更新後仍應檢查目前選用的路由;匯入完整設定或還原備份則可能變更路由內容。保留獨立方案與匯出副本,能更快確認變更發生在哪個層級。
同一段 JSON 可以直接貼到 Android 用戶端嗎?
核心設定片段不能當成通用的介面匯入格式。v2rayNG 使用 Xray,v2flyNG 使用 v2fly,相關欄位有共通基礎,但介面規則的編輯方式與核心版本各有差異。請先使用用戶端提供的路由編輯功能建立等效規則,再確認資料檔、標籤與實際生效結果。
穩定的分流設定不靠堆疊規則。保留少量明確的例外,讓中國大陸分類與最後的兜底規則各自發揮作用;每次只調整一處,並記錄可重現的測試目標。遇到「中國大陸網站未直連」或「指定服務未走代理」時,就能沿著入口、目標類型、規則順序與出站這四個環節逐步定位。