適合已匯入節點、代理連線正常,但尚未整理分流規則的使用者。本文以桌面版 v2rayN 的 Xray 核心為例,建立三種出站與六條基本規則,逐一檢查系統代理入口、規則順序及網域解析條件。最後採用中國大陸網域分類直連、其他請求走代理的保守設定;廣告分類則獨立置頂,誤擋時可單獨停用。
一、先確認請求從哪個入口進入
分流不是依照瀏覽器網址自動判斷「國內外」,而是由核心根據收到的目標網域、目標 IP、連接埠等資訊比對規則。請求若沒有進入 v2rayN 的本機入站,就不會套用本文的路由設定。系統代理通常只會影響遵循系統代理設定的應用程式;自行直連的程式則需要個別設定代理,或另外使用 Tun 接管流量。
本文參考 v2rayN 7.x 桌面版的設定分類,先使用系統代理進行驗證,不同時啟用 Tun。不同小版本的按鈕位置可能略有調整,請至「設定」→「參數設定」確認本機監聽連接埠,再到「設定」→「路由設定」管理規則集。若目前用戶端啟用的是其他核心,請先切換至 Xray,確認節點仍可連線後,再套用以下 Xray 規則範例。
- 選擇一個已確認可用的伺服器並設為目前使用的伺服器;先排除節點本身無法連線的問題。
- 記下本機 HTTP 或混合入站實際使用的連接埠,不要把 SOCKS 專用連接埠當成 HTTP 代理連接埠。
- 在系統匣選單的「系統代理」中選擇「自動設定系統代理」,並確認瀏覽器沒有擴充功能覆寫系統代理設定。
- 先備份目前的路由規則集,再複製一份作為測試規則。暫時關閉其他代理軟體,避免流量入口遭到改寫。
這裡的 10808 是後文指令使用的示範值,不需要改成這個數字,也不代表每次安裝的預設連接埠。只有在「參數設定」中確認該連接埠接受 HTTP 或混合代理請求時,才能直接執行指令。
二、建立直連、代理、封鎖三種出站
v2rayN 會將目前使用的伺服器與介面設定組合成核心設定。一般可在規則的出站選項中選擇 direct、proxy、block。這些是產生設定中的標籤,不是節點協定名稱;VMess 或 VLESS 節點都能作為代理出站,路由不必因此改用另一套語法。
連線出站
- 直連標籤
direct- 代理標籤
proxy- 代理目標
- 目前使用的伺服器
- 適用範圍
- 中國大陸網域分類直連,其他請求走代理
直連仍須透過本機網路連線至目標;符合路由規則不代表目標一定連得上。
封鎖與預設路由
- 封鎖標籤
block- 封鎖分類
geosite:category-ads-all- 預設出站
proxy- 預設網路
tcp,udp
封鎖只會處理符合規則的請求,無法依據網頁畫面辨識所有廣告內容。
在「設定」→「路由設定」中新增測試規則集,新增規則時分別填入網域、IP、網路與出站標籤。儲存後,還要將該規則集設為目前使用的項目;只編輯而未切換使用中的規則集,連線結果不會改變。若介面顯示的標籤與本文不同,請以目前產生設定中的 outbounds[].tag 為準,不要引用不存在的標籤。
三、依照六條規則的順序設定分流
Xray 路由由上而下比對,第一條符合的規則會生效。同一條規則同時填入網域與連接埠,代表所有欄位都必須符合;同一份網域清單中的多個項目則是符合其中一項即可。不要把所有網域、IP 和連接埠塞進同一條規則,否則很容易把原本的「或」條件誤設成「且」條件。
| 順序 | 比對條件 | 出站 | 用途 |
|---|---|---|---|
| 1 | geosite:category-ads-all | block | 優先封鎖廣告分類網域 |
| 2 | geoip:private | direct | 內網、回環等私有位址直連 |
| 3 | geosite:cn | direct | 中國大陸網域分類直連 |
| 4 | geoip:cn | direct | 已知目標 IP 屬於中國大陸位址時直連 |
| 5 | full:example.com | proxy | 示範精確網域代理規則 |
| 6 | network: tcp,udp | proxy | 其餘請求一律走代理 |
第 5 條使用文件中的範例網域,方便驗證精確比對,日常使用時可以刪除。若要強制某個已列入前方分類的網站走代理,必須將專用規則移到該分類規則之前。規則不會因為「更精確」就自動取得較高優先權,位置才決定比對順序。
以下是對應的 Xray routing 設定片段,用來核對欄位意義,並非可直接啟動的完整設定,也不是 v2rayN 圖形介面的規則匯入格式。若要使用介面匯入功能,請先查看目前版本匯出的規則結構,不要把這段內容當成完整規則檔匯入。
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["full:example.com"],
"outboundTag": "proxy"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
geosite:cn 是網域分類,不會即時判斷網站伺服器的地理位置;geoip:cn 是 IP 位址集合,也不代表網站營運者所在地。跨境 CDN、託管於境外的中國大陸網站,都可能與直覺不同。若個別網站的連線路徑不理想,新增網域例外會比反覆修改整份分類更容易控管。
四、選擇 AsIs,避免預設規則掩蓋解析條件
本例明確使用 AsIs:不為了路由比對而主動解析網域。請求帶有網域時,主要依據網域規則判斷;請求原本就帶有 IP 時,則可直接比對 IP 規則。因此,上方第 4 條不代表所有未分類網域都會先解析,再依中國大陸 IP 直連。
- AsIs:適合先建立穩定的網域分流基礎。未符合中國大陸網域分類的網域請求會走代理預設路由,降低本機解析結果改變連線路徑的可能性。
- IPIfNonMatch:網域比對階段沒有規則符合時,才會嘗試解析並重新依 IP 比對。並非每次遇到 IP 規則都會立即解析。
- IPOnDemand:比對過程需要 IP 資訊時,就可能觸發解析。使用前應一併評估 DNS 可連線性、解析等待時間,以及 CDN 回傳的位址。
結論:保留全面比對的預設規則時,先使用 AsIs
最後一條 tcp,udp 規則在網域比對階段也可能符合,導致 IPIfNonMatch 沒有機會在「未符合規則」後觸發解析。若需要依 IP 補充分流,應重新設計預設規則或評估 IPOnDemand,不能只更改策略名稱就認定設定已生效。
路由的網域策略與 DNS 查詢採用哪個出站,是兩個不同問題。選擇 AsIs 不代表系統不會進行 DNS 查詢,也不代表所有解析都透過代理完成。應用程式預先將網域解析成 IP、代理協定將網域交由遠端解析,以及核心為直連目標進行解析,都會形成不同的解析路徑。請先確認請求進入核心時帶的是網域還是 IP,再判斷網域規則為何沒有符合。
五、逐類驗證,不只確認出口 IP
儲存並啟用規則集後,先確認核心能否正常啟動。若出現找不到網域分類、讀取 geo 資料失敗等錯誤,請透過用戶端提供的資料更新功能,更新與目前核心相符的資料檔,再重新啟動核心。核心未成功啟動時,瀏覽器快取或殘留的系統代理狀態可能造成「部分可用」的假象。
- 驗證代理:使用以下指令連線至範例網域,並查看存取記錄是否出現代理出站標籤。若連接埠不是 10808,請先替換成介面中顯示的實際 HTTP 或混合連接埠。
- 驗證直連:選擇一個確認包含在目前
geosite:cn資料中的網域,記錄網域、時間與出站標籤。網站能開啟只代表請求成功,不能單憑這點證明流量走直連。 - 驗證封鎖:從目前的廣告分類中選一個已知項目,確認記錄是否顯示走
block。測試時可暫時將full:example.com的獨立規則移至最上方並設為封鎖,以驗證封鎖功能;完成後請恢復原設定。 - 驗證預設路由:使用未被前方規則涵蓋的目標,確認流量仍走代理。若 UDP 服務無法使用,還需確認節點與傳輸方式支援相應的 UDP 轉送。
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/
指令中的 10 秒是連線逾時上限,20 秒是整個請求的總時限,不是實測延遲。收到 HTTP 狀態碼代表請求有回應;連線中斷也不一定是符合封鎖規則,請搭配記錄判斷。部分網站不支援 HEAD 請求,此時可改用一般 GET,再比較路由結果。
- 如果一般記錄中沒有存取紀錄,請到「設定」→「參數設定」的記錄相關選項檢查存取記錄設定;可短暫提高記錄詳細程度,驗證後再恢復。
- 每次只修改一條規則,並記錄「目標、預期出站、實際出站」三個欄位,避免同時變更 DNS、節點與路由。
- 修改規則後請重新建立連線;瀏覽器既有的長連線可能仍沿用舊連線,必要時先關閉相關分頁再試一次。
六、常見分流問題與排查方式
中國大陸網站仍走代理,設定哪裡有問題?
先確認目前啟用的是否為剛才編輯的規則集,再檢查代理預設規則是否排在中國大陸規則之前。若順序正確,請確認核心收到的是網域還是 IP,並檢查目前的 geosite 資料是否包含該網域。確實需要直連時,可在預設規則之前加入 domain: 網域例外,不要直接將所有未知請求改為直連。
啟用廣告封鎖後,登入頁面載入不完整怎麼辦?
先暫時停用廣告分類規則並重試,確認問題是否因此消失。若確定是誤擋,請從記錄中找出登入、驗證碼或靜態資源的網域,為其新增直連或代理例外,並移到廣告封鎖規則之前。不要只因頁面空白,就大範圍放行整個網域後綴。
瀏覽器分流正常,另一個程式卻沒有生效?
確認該程式是否遵循系統代理設定。若支援手動設定,請填入 127.0.0.1 與實際監聽連接埠,並選擇相符的 HTTP 或 SOCKS 類型。只有在需要接管不遵循代理設定的流量時,才另外測試 Tun;啟用前請先確認系統權限與內網存取需求。
更新訂閱後,自己設定的分流規則會被覆蓋嗎?
節點訂閱與本機路由規則集是不同的設定項目,一般更新節點不會改寫獨立儲存的路由。不過,匯入完整用戶端設定或更新遠端路由規則集,可能會變更規則內容。請將個人例外保存在方便維護的本機規則集中,更新後重新檢查目前使用的規則集、順序與出站標籤。
一套容易維護的分流設定,應能清楚說明每條規則的用途:先處理需要封鎖的項目,再依條件讓內網與中國大陸分類直連,特殊網域則個別覆寫,其餘請求明確走代理。先完整驗證這套基礎設定,再新增遊戲、下載或工作服務的專用規則;發生問題時,才能定位到具體變更。