本文適合已能透過節點連線,並準備在 v2rayN 調整流量分流的使用者。先認識網域集合與 IP 集合,再設定路由解析策略、出口標籤及規則順序,最後透過日誌確認中國大陸直連、私有網路連線與廣告封鎖是否生效。文中的 JSON 是核心設定片段,並非可直接匯入的完整節點設定。
一、設定分流前,先確認流量與出口
路由分流是在流量進入核心後才進行。若應用程式未使用系統代理,或連線不受目前代理模式涵蓋,修改規則就不會影響這些流量。請先選擇可用節點,確認瀏覽器使用 v2rayN 提供的本機代理,再開始調整路由。系統代理主要供遵循系統代理設定的應用程式使用,並不代表裝置上的所有連線都會由代理接管。
規則中的 outboundTag 是出口標籤,不是協定名稱。本文以 proxy 指向已設定的節點、direct 指向 freedom 直連出口,並以 block 指向 blackhole 封鎖出口。標籤有大小寫之分,必須與實際設定完全一致。
二、geosite 與 geoip 的比對對象
geosite:cn 代表網域集合,適合辨識已分類的中國大陸網站;geoip:cn 代表 IP 位址範圍集合,適合處理直接連線至 IP,或需要依解析結果補充分流的連線。兩者都是規則資料,不會即時判斷網站業務所在地、機房位置或連線品質。中國大陸網域可能使用海外基礎設施,海外服務也可能解析至中國大陸 IP。
網域集合規則
- 欄位
domain- 中國大陸集合
geosite:cn- 廣告集合
geosite:category-ads-all- 資料檔案
geosite.dat
路由判斷時必須取得目標網域,且資料檔案中需包含指定分類。
IP 集合規則
- 欄位
ip- 中國大陸集合
geoip:cn- 私有網路集合
geoip:private- 資料檔案
geoip.dat
目標為 IP 時可直接比對;目標為網域時,是否解析取決於路由策略。
在同一條規則中同時填入 domain 與 ip,並不代表「符合網域或 IP 任一條件即可」。不同條件欄位通常必須同時符合;同一陣列中的多個項目才是可供比對的選項。為避免混淆,請將中國大陸網域與中國大陸 IP 分成兩條規則。
domain:example.com可比對該網域及其子網域;它的用途不同於必須完全符合整個字串的full:example.com。- 像
192.168.1.1這類私有網路位址,通常應優先考慮直連,但應用程式仍須確實將連線交給核心處理。 - 使用前請確認目前的地理資料包含
cn、private及廣告分類。若缺少所需分類,可能導致設定載入失敗,單靠調整規則順序無法解決。
三、domainStrategy 如何影響中國大陸 IP 補充規則
domainStrategy 設定於 routing 物件內,與 rules 同層。它會控制路由判斷時是否將網域解析為 IP,不會決定應用程式是否使用代理,也不等同於完整的 DNS 設定。名稱相似的出口解析設定屬於不同作用範圍,不能互相取代。
AsIs
依照收到的目標形式進行路由,不會為了比對 IP 規則而主動解析網域。若目標原本就是 IP,仍可比對 IP 規則。
適用情境:主要依賴網域清單,並希望減少路由階段解析的設定。
IPIfNonMatch
建議網域在第一輪規則判斷中未符合時,才嘗試解析並比對 IP 規則。本文採用此策略,保留網域規則優先、再以中國大陸 IP 補充判斷的邏輯。
適用情境:中國大陸網域直連,並補充辨識中國大陸 IP 的日常分流。
IPOnDemand
路由判斷遇到需要 IP 的規則時,就會嘗試解析網域。IP 規則的位置會更直接影響解析時機與最終出口。
適用情境:明確需要較早進行 IP 判斷,且已規劃好 DNS 與規則順序的設定。
四、依序設定廣告、中國大陸網域、私有網路與中國大陸 IP
規則會由上而下判斷,第一條符合的規則決定出口。將廣告分類放在中國大陸網域之前,可避免部分已列入中國大陸集合的廣告網域先被放行;接著依序處理中國大陸網域、私有網路 IP 與中國大陸 IP,其餘連線則使用代理出口。以下僅列出 routing 片段,必須合併至現有的完整設定中。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "direct"
}
]
}
}
使用上述規則前,必須先有對應的出口。請保留原有節點的驗證、傳輸與安全設定,並將其出口標籤設為 proxy;不必為了套用範例而重新撰寫節點參數。以下兩個物件僅示範直連與封鎖出口的定義,應加入現有的 outbounds 陣列,並放在代理出口之後。
[
{
"tag": "direct",
"protocol": "freedom",
"settings": {}
},
{
"tag": "block",
"protocol": "blackhole",
"settings": {}
}
]
- 若要放行遭誤封鎖的網域,請將該網域的精確直連例外規則放在廣告規則之前,不要直接移除所有廣告分類。
- 封鎖廣告網域無法移除所有頁面廣告。同一網域提供的內容、應用程式內建資源,以及未收錄於資料中的位址,都可能無法區分。
- 若某項海外服務解析至中國大陸 IP,最後一條中國大陸 IP 規則可能使其直連。若要強制使用代理,請將該服務的網域代理規則放在中國大陸規則之前。
五、在 v2rayN 設定並檢查產生的設定
v2rayN 的路由編輯介面會產生核心設定;訂閱主要提供節點資訊,兩者用途不同。不同桌面版的選單名稱可能略有差異,以下以有「設定」→「路由設定」選項的介面為例;若介面不同,請以最後產生的 routing 與 outbounds 為檢查依據。
-
備份現有規則
前往「設定」→「路由設定」,先儲存現有規則或匯出目前設定,並記下正在使用的路由方案,避免直接覆蓋原有的自訂例外。
-
建立獨立方案
在「路由設定」中新增或複製路由方案。將網域策略設為
IPIfNonMatch,逐條加入廣告、中國大陸網域、私有網路與中國大陸 IP 規則。不要將完整核心 JSON 貼進單一規則的網域輸入欄位。 -
確認出口對應
逐條確認規則使用的代理、直連與封鎖出口。介面可能顯示中文選項,但產生設定中的
outboundTag必須對應到實際存在的出口定義;也請確認預設出口是所選節點。 -
啟用並重新載入
儲存後,將新方案設為目前使用的路由,再重新啟動服務或核心。若只儲存方案而未啟用,原本的分流設定仍可能繼續生效。
-
確認代理入口
前往「設定」→「參數設定」,確認本機監聽連接埠。本文以
127.0.0.1:10808作為測試入口範例;實際連接埠與入站協定請以目前設定為準,再透過系統匣選單確認系統代理狀態。
六、透過日誌區分規則問題與 DNS 問題
測試時一次只變更一個條件。先連線至已確認列入中國大陸集合的網域,再測試一個不在該集合中的網域,最後測試需要連線的私有網路位址。暫時啟用連線日誌;必要時調高錯誤日誌的詳細程度,查看目標位址與最終出口標籤。確認完成後,請恢復平常使用的日誌等級。
驗證方式:先確認規則命中,再排查解析
網域規則驗證
- 中國大陸集合中的網域應使用
direct出口。 - 廣告集合中的測試網域應顯示
block。 - 若日誌只顯示 IP,請確認應用程式是否已自行解析網域。
- 關閉舊連線並重新送出請求,避免重用連線影響判斷。
IP 與預設出口驗證
- 確認私有網路目標由
direct處理。 - 查看網域未命中集合時的解析結果。
- 符合中國大陸 IP 補充規則時,應使用
direct。 - 其他連線應使用第一個代理出口,而不是意外直連。
日誌顯示的出口比網頁能否開啟更能判斷規則是否生效;連線狀況還會受到 DNS、節點與目標服務影響。
若應用程式先將網域解析為 IP,再把 IP 交給本機代理,geosite 就無法直接取得原始網域。入站嗅探可從部分 HTTP 或 TLS 流量還原可辨識的網域資訊,但不保證適用於所有協定與加密方式。啟用前請先了解目前核心的嗅探設定,不要將它當成 DNS 設定的替代方案。
- 核心啟動時立即報錯:請先檢查 JSON 語法、出口標籤及地理資料分類是否存在;這不是網路速度問題。
- 中國大陸網站仍走代理:檢查網域是否列入集合、入站是否保留網域資訊,以及前方是否有優先符合的代理規則。
- 海外網站意外直連:查看是否符合
geoip:cn,必要時新增優先順序更高的網域代理例外規則。 - 修改後完全沒有變化:確認目前啟用的路由方案、核心是否已重新載入,以及應用程式使用的代理入口,再檢查舊連線與應用程式快取。
DNS 設定也需要另外規劃:供路由判斷使用的解析請求,不一定會自動透過代理傳送。若解析結果異常,請先檢查核心使用的 DNS 伺服器及其連線路徑,再判斷是否保留中國大陸 IP 補充規則。分享排錯日誌前,請先移除訂閱網址、驗證資訊與個人瀏覽紀錄。