適合已匯入節點、能透過代理瀏覽網頁,但想進一步區分直連與代理流量的使用者。先以繞過中國大陸規則建立基礎設定,再加入網站例外與廣告封鎖,最後透過出站標籤檢查結果。本文範例採用 Xray 路由語法;在客戶端介面中請逐項填寫規則,不能將整段 JSON 貼進網域輸入欄。
一、系統代理與路由分流的差異
系統代理處理的是「應用程式是否將連線交給 v2rayN」,路由分流則決定「核心收到連線後要選擇哪個出站」。啟用「自動設定系統代理」不代表所有連線都會經由遠端節點;只要規則命中 direct,連線仍會由本機直接建立。反過來說,不使用系統代理的應用程式,也不會因為切換路由模式就自動將流量送進核心。
先前往「設定」→「參數設定」確認本機監聽埠,再查看主視窗底部的系統代理與路由選項。下方埠號僅供本文測試示範,不代表所有版本的預設值;若本機顯示不同埠號,命令中的數字也必須一併修改。測試期間請先關閉 TUN,避免兩種連線路徑同時作用而影響判斷。
二、以繞過中國大陸規則建立可復原的基礎設定
在主視窗的路由選項中啟用名稱包含「繞過中國大陸」的預設規則;不同版本或匯入的規則可能顯示不同名稱,請前往「設定」→「路由設定」確認實際內容,不要只憑名稱判斷。先備份目前的路由設定,再複製一份作為測試設定,並保留原有預設規則以便還原。
- 選擇一個已確認可連線的節點,測試期間不要更換。
- 前往「設定」→「路由設定」,確認目前設定包含中國大陸網域、中國大陸 IP 與區域網路直連規則。
- 確認代理備援規則存在:未命中前置規則的 TCP、UDP 連線應交由代理出站處理。
- 儲存並切換至測試設定,讓核心重新載入;確認記錄中沒有設定載入錯誤,再開始測試。
直連規則基礎設定
- 網域集合
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 | 區域網路、中國大陸 IP | direct | 處理 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:。網頁可能會同時載入登入、圖片、介面等不同主機,因此「首頁能開、登入卻失敗」時,通常應先檢查請求的網域,而不是直接將整類流量改為直連。
full:www.qq.com:只比對這個完整主機名稱,不包含其他子網域。domain:qq.com:比對qq.com及其子網域,例如www.qq.com。geosite:cn:引用資料檔中的中國大陸網域集合,不等於所有以.cn結尾的網域。geoip:cn:依目標 IP 是否屬於指定的位址集合進行比對,不依網頁內容或網域後綴判斷。
例如,若要明確將騰訊相關網域設為直連,可在一般集合之前加入以下規則。這條規則只用來示範比對範圍,不代表所有人都需要新增;若原有集合已涵蓋相關網域,重複設定只會增加維護負擔。
{
"type": "field",
"domain": ["domain:qq.com"],
"outboundTag": "direct"
}
廣告封鎖可使用 geosite:category-ads-all,但它只能處理經過核心且命中集合的連線,無法像網頁元素過濾器一樣移除頁面上的留白。若資料檔沒有這個集合,核心可能會因載入失敗而無法啟動;請先檢查記錄與資料檔來源,再決定更新資料或移除規則。
判斷方式:誤封時先新增精確例外
啟用廣告封鎖後,若付款或登入功能異常,請先找出失敗的主機,再用 full: 新增對應的 direct 或 proxy 例外,並將規則放在廣告規則之前。不要立刻放行整個主網域;擴大比對範圍前,先確認一套完整的使用流程正常。
五、透過請求與記錄確認出站結果
「網頁開得起來」只代表有可用的連線路徑,無法證明規則正確。驗證時請一併記錄請求目標、實際使用的接入埠,以及記錄中的出站標籤。客戶端測速通常用來測試節點,不代表瀏覽器目前的請求已依預期分流。
- 先儲存路由設定並重新載入核心,確認沒有設定錯誤。如有需要,可前往「設定」→「參數設定」暫時提高記錄詳細程度。
- 使用明確指定代理的命令連線至目標,避免瀏覽器快取、背景連線與代理擴充功能造成干擾。
- 分別測試中國大陸網域、代理備援網域,以及確認存在於目前廣告集合中的測試網域。
- 依請求時間查看核心連線記錄中的出站標籤;若目前的記錄層級不會輸出連線紀錄,請先調整記錄設定再測試。
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.com | direct | 網域集合、前置代理規則 |
| example.com | proxy | 本文範例中的完整網域規則與代理出站 |
| 已確認屬於廣告集合的主機 | 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 資料,也不能用來修正路由順序。更換核心後,也應重新確認規則語法、資料檔與出站標籤,不要假設舊設定可以原封不動沿用。
- 保留一份可正常使用的繞過中國大陸基礎設定,每次只修改一個目標網域或一條規則。
- 記錄修改日期、比對範圍、出站標籤與驗證命令,方便重現問題及還原設定。
- 更新網域或 IP 資料後,重新測試直連、代理與封鎖三種情境,避免集合變動影響原有例外規則。
- 想了解更多背景,請參閱故障排除手冊;首次設定本機代理,請從使用指南開始。
最後應建立一條清楚可追溯的判斷流程:應用程式確實連入客戶端、規則順序符合預期、目標命中明確的標籤,而且該出站有可用連線。只有這四項都能在設定與記錄中找到依據,才能分辨問題來自路由、DNS 異常,還是節點本身無法使用。