一條規則拆開就是三段
規則永遠是類型、比對值、策略,中間用逗號隔開。DOMAIN-SUFFIX,github.com,PROXY 讀成「網域結尾是 github.com 的,交給 PROXY 這個策略群組」。
值得記的類型分三類。看網域的有 DOMAIN(完全相等)、DOMAIN-SUFFIX(結尾相符)、DOMAIN-KEYWORD(包含即可);看位址的有 IP-CIDR 和 GEOIP;還有 PROCESS-NAME,它比對的是發起連線的那個程式。
策略名稱寫錯,整份設定起不來
第三段只能填設定裡已存在的策略群組名稱,或是 DIRECT、REJECT。
寫在哪裡,更新訂閱之後才還在
- 1
改訂閱下載的那份是白做工
訂閱抓下來的設定檔是快取,下一次更新整份覆蓋,你加的每一行都跟著消失。這個坑幾乎每個人都踩過一次。
- 2
寫進擴充設定的 prepend-rules
在設定檔的編輯選單裡開啟擴充設定(Merge 檔),建一個
prepend-rules區塊,把你的規則列在下面。每次產生最終設定時,Clash Verge 都會把這幾行插到訂閱規則前面。 - 3
位置就是優先順序
prepend-rules裡越上面的越早生效。你的規則得壓在機場那些很寬的群組規則上面,否則會被它們先接走。寫在清單最後沒有意義,墊底的MATCH之後任何一行都讀不到。
三個最容易寫歪的地方
DOMAIN-SUFFIX 比對的是名稱結尾,寫 example.com 連子網域一起收,通常這正是你要的。DOMAIN-KEYWORD 是包含比對,像 google 這種短關鍵字一寫下去,所有含這串字的網域都被收走。IP 類規則還有個不直覺的地方:請求帶的是網域時,得先解析成位址才比對得了,而這次查詢本身可能已經走錯路。
- 改完到「規則」頁搜這個網域,確認第一個命中的是你新加那條
- 日誌出現 yaml 解析失敗,多半是縮排或少了一個逗號
- 改動之前建立的連線不會重新比對,關掉重連再看
常見問題
規則加了,流量還是走原本的路,要從哪裡查起?
先確認設定真的重新載入了,日誌頁最上面應該看得到重載紀錄,有錯誤就先處理錯誤。再到規則頁搜這個網域,看命中的是不是你寫的那條,不是就代表上面有更早的規則接走了。最後看連線頁的 Chains 欄。
PROCESS-NAME 在 Windows 和 macOS 上各要填什麼?
Windows 填帶副檔名的執行檔名稱,例如 chrome.exe;macOS 和 Linux 填不帶副檔名的執行檔名稱,例如 curl。要跟處理程序清單顯示的完全一致,包含大小寫。核心還得讀得到處理程序資訊,權限不夠時這類規則什麼都比對不到。