本文重點

適合已匯入節點、能透過代理瀏覽網頁,但想進一步區分直連與代理流量的使用者。先以繞過中國大陸規則建立基礎設定,再加入網站例外與廣告封鎖,最後透過出站標籤檢查結果。本文範例採用 Xray 路由語法;在客戶端介面中請逐項填寫規則,不能將整段 JSON 貼進網域輸入欄。

一、系統代理與路由分流的差異

系統代理處理的是「應用程式是否將連線交給 v2rayN」,路由分流則決定「核心收到連線後要選擇哪個出站」。啟用「自動設定系統代理」不代表所有連線都會經由遠端節點;只要規則命中 direct,連線仍會由本機直接建立。反過來說,不使用系統代理的應用程式,也不會因為切換路由模式就自動將流量送進核心。

應用程式請求 本機入站 比對規則 選擇出站 連線目標

先前往「設定」→「參數設定」確認本機監聽埠,再查看主視窗底部的系統代理與路由選項。下方埠號僅供本文測試示範,不代表所有版本的預設值;若本機顯示不同埠號,命令中的數字也必須一併修改。測試期間請先關閉 TUN,避免兩種連線路徑同時作用而影響判斷。

10808
範例 SOCKS 入站埠
10809
範例 HTTP 入站埠
3 種
直連、代理、封鎖出站

二、以繞過中國大陸規則建立可復原的基礎設定

在主視窗的路由選項中啟用名稱包含「繞過中國大陸」的預設規則;不同版本或匯入的規則可能顯示不同名稱,請前往「設定」→「路由設定」確認實際內容,不要只憑名稱判斷。先備份目前的路由設定,再複製一份作為測試設定,並保留原有預設規則以便還原。

  1. 選擇一個已確認可連線的節點,測試期間不要更換。
  2. 前往「設定」→「路由設定」,確認目前設定包含中國大陸網域、中國大陸 IP 與區域網路直連規則。
  3. 確認代理備援規則存在:未命中前置規則的 TCP、UDP 連線應交由代理出站處理。
  4. 儲存並切換至測試設定,讓核心重新載入;確認記錄中沒有設定載入錯誤,再開始測試。

直連規則基礎設定

網域集合
geosite:cn
IP 集合
geoip:cn
區域網路 IP
geoip:private
目標標籤
direct

集合是否可用,取決於目前載入的 geosite.dat 與 geoip.dat。

代理備援基礎設定

網路類型
tcp,udp
目標標籤
proxy
規則位置
所有例外規則之後
代理節點
目前使用中的伺服器

標籤必須對應實際存在的出站;只填寫標籤不會建立代理伺服器。

direct、proxy、block 是本文使用的標籤名稱,並非核心自動識別的保留關鍵字。常見設定中,它們分別代表直連出站、節點出站與封鎖出站;若實際產生的設定使用其他標籤,路由規則也必須配合修改。尤其是封鎖規則,必須有對應的 blackhole 出站,不能只新增一條名為 block 的規則。

三、direct、proxy、block 的規則順序

Xray 會由上而下比對規則,首次命中後就選擇對應的出站,不會繼續尋找「更精確」的下一條規則。若將強制代理某網站的規則放在中國大陸 IP 直連規則之後,可能因解析結果先命中 IP 規則而失效。較穩妥的做法是將明確的網域例外放在較廣泛的集合之前,備援規則則一律放在最後。

順序比對內容出站用途
1指定網站網域例外direct 或 proxy優先於後續的一般規則
2廣告網域集合block封鎖命中的廣告連線
3中國大陸網域集合direct優先依網域判斷直連
4區域網路、中國大陸 IPdirect處理 IP 目標與解析結果
5其他 TCP、UDP 連線proxy海外與未知目標的代理備援

以下是原生 Xray 設定中的 routing 片段範例,並非可獨立啟動的完整設定。範例假設三種出站標籤都已存在,且資料檔包含引用的集合。在 v2rayN 圖形介面中,請將這些內容轉換成對應的規則項目;只有使用完整自訂設定時,才將片段合併至頂層設定。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["full:example.com"],
        "outboundTag": "proxy"
      },
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:private", "geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

四、網站直連例外與廣告封鎖設定範例

新增規則前,先分清楚完整網域與網域後綴。只想讓首頁主機直連時,使用 full:;若要同時處理同一網域及其子網域,則使用 domain:。網頁可能會同時載入登入、圖片、介面等不同主機,因此「首頁能開、登入卻失敗」時,通常應先檢查請求的網域,而不是直接將整類流量改為直連。

例如,若要明確將騰訊相關網域設為直連,可在一般集合之前加入以下規則。這條規則只用來示範比對範圍,不代表所有人都需要新增;若原有集合已涵蓋相關網域,重複設定只會增加維護負擔。

{
  "type": "field",
  "domain": ["domain:qq.com"],
  "outboundTag": "direct"
}

廣告封鎖可使用 geosite:category-ads-all,但它只能處理經過核心且命中集合的連線,無法像網頁元素過濾器一樣移除頁面上的留白。若資料檔沒有這個集合,核心可能會因載入失敗而無法啟動;請先檢查記錄與資料檔來源,再決定更新資料或移除規則。

判斷方式:誤封時先新增精確例外

啟用廣告封鎖後,若付款或登入功能異常,請先找出失敗的主機,再用 full: 新增對應的 direct 或 proxy 例外,並將規則放在廣告規則之前。不要立刻放行整個主網域;擴大比對範圍前,先確認一套完整的使用流程正常。

五、透過請求與記錄確認出站結果

「網頁開得起來」只代表有可用的連線路徑,無法證明規則正確。驗證時請一併記錄請求目標、實際使用的接入埠,以及記錄中的出站標籤。客戶端測速通常用來測試節點,不代表瀏覽器目前的請求已依預期分流。

  1. 先儲存路由設定並重新載入核心,確認沒有設定錯誤。如有需要,可前往「設定」→「參數設定」暫時提高記錄詳細程度。
  2. 使用明確指定代理的命令連線至目標,避免瀏覽器快取、背景連線與代理擴充功能造成干擾。
  3. 分別測試中國大陸網域、代理備援網域,以及確認存在於目前廣告集合中的測試網域。
  4. 依請求時間查看核心連線記錄中的出站標籤;若目前的記錄層級不會輸出連線紀錄,請先調整記錄設定再測試。
curl --proxy http://127.0.0.1:10809 --connect-timeout 10 -I https://www.qq.com/
curl --proxy http://127.0.0.1:10809 --connect-timeout 10 -I https://example.com/
curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 -I https://example.com/

在 Windows 終端機中,若 curl 被解讀成其他命令,可改用 curl.exe。透過 HTTP 代理存取 HTTPS 時,通常會使用 CONNECT 傳送目標主機;socks5h 也會將網域交由代理端處理。這樣較容易測試網域規則,避免本機先將網域解析成 IP,導致測試對象改變。命令回傳 403 或 405 不一定代表連線失敗,應搭配目標回應與出站記錄判斷。

測試對象預期標籤發生異常時優先檢查
www.qq.comdirect網域集合、前置代理規則
example.comproxy本文範例中的完整網域規則與代理出站
已確認屬於廣告集合的主機block集合內容、允許清單與規則位置

上表說明的是設定預期,並非本站實測的網路效能結果。瀏覽器沿用舊連線時,修改規則後可能暫時看不到新結果;請關閉舊連線,或使用新命令發出請求。測試完成後,請恢復日常記錄層級,避免長期保存包含存取目標的詳細記錄。

六、DNS、IP 規則與常見分流問題

路由判斷與 DNS 解析彼此相關,但並非同一項設定。domainStrategy 控制路由比對時何時需要解析網域,不會直接指定 DNS 伺服器,也不保證解析請求會經由代理。尤其啟用 IP 按需比對後,若解析結果不正確,原本應走代理的網域可能會被導向中國大陸 IP 直連規則。

選了繞過中國大陸,為什麼中國大陸網站還是走代理?

先查看記錄中的目標是網域還是 IP,再前往「設定」→「路由設定」,檢查是否有 geosite:cn,以及是否被前面的代理規則優先命中。若收到的只有 IP,網域規則就無法直接比對,請改查 IP 規則與應用程式的接入方式。

新增 geoip:cn 後,為什麼網域沒有套用規則?

檢查 domainStrategy。使用 AsIs 時,路由不會主動解析網域;使用 IPIfNonMatch 時,前面的規則或末尾的一般備援規則可能已經命中。若要依 IP 判斷,可評估使用 IPOnDemand,並確認 DNS 解析結果可靠。

新增廣告規則後,核心無法啟動怎麼辦?

查看記錄是否指出集合不存在或找不到出站標籤。先撤回新增規則,讓連線恢復,再確認目前的 geosite.dat 是否包含 category-ads-all,以及 block 是否對應實際的封鎖出站。

瀏覽器正常,其他應用程式卻完全沒有依規則分流?

先執行指定 127.0.0.1:10809 的命令作為對照。若命令正常,代表路由連線流程可用,接著檢查該應用程式是否支援系統代理,或在應用程式內設定 SOCKS。不要因為接入問題而反覆調整路由順序。

七、儲存規則與後續維護

訂閱節點與路由設定負責不同工作:節點提供遠端連線參數,路由則決定哪些連線使用這些參數。更新訂閱不等於更新 geosite 與 geoip 資料,也不能用來修正路由順序。更換核心後,也應重新確認規則語法、資料檔與出站標籤,不要假設舊設定可以原封不動沿用。

最後應建立一條清楚可追溯的判斷流程:應用程式確實連入客戶端、規則順序符合預期、目標命中明確的標籤,而且該出站有可用連線。只有這四項都能在設定與記錄中找到依據,才能分辨問題來自路由、DNS 異常,還是節點本身無法使用。