寫法總覽
config.yaml YAML
rules:
- DOMAIN,ad.com,REJECT
- DOMAIN-SUFFIX,google.com,auto
- DOMAIN-KEYWORD,google,auto
- DOMAIN-WILDCARD,*.google.com,auto
- DOMAIN-REGEX,^abc.*com,PROXY
- GEOSITE,youtube,PROXY
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR6,2620:0:2d0:200::7/32,auto
- IP-ASN,13335,DIRECT
- GEOIP,CN,DIRECT
- DST-PORT,80,DIRECT
- PROCESS-NAME,curl,PROXY
- NETWORK,udp,DIRECT
- RULE-SET,providername,proxy
- AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT
- SUB-RULE,(NETWORK,tcp),sub-rule
- MATCH,auto
規則按從上到下的順序匹配,排在前面的規則優先級更高。如果請求是 UDP,但匹配到的代理節點沒開 udp: true,會繼續往下匹配下一條規則,而不是直接失敗。
網域類
| 類型 | 說明 |
|---|---|
DOMAIN | 匹配完整網域 |
DOMAIN-SUFFIX | 匹配網域後綴,如 google.com 匹配 www.google.com/mail.google.com/google.com,但不匹配 content-google.com |
DOMAIN-KEYWORD | 網域關鍵詞匹配 |
DOMAIN-WILDCARD | 萬用字元匹配,僅支援 *(零個或多個字元)和 ?(一個字元)——注意這跟設定檔其他地方用的 Clash 風格萬用字元不是一套語法 |
DOMAIN-REGEX | 網域正規表示式匹配 |
GEOSITE | 匹配 Geosite 資料庫內的網域分類,部分資料來自 v2fly/domain-list-community |
IP 類
| 類型 | 說明 |
|---|---|
IP-CIDR / IP-CIDR6 | 匹配 IP 位址範圍,兩者效果相同,IP-CIDR6 只是別名 |
IP-SUFFIX | 匹配 IP 後綴範圍 |
IP-ASN | 匹配 IP 所屬 ASN(自治系統號) |
GEOIP | 匹配 IP 所屬國家代碼 |
SRC-GEOIP / SRC-IP-ASN / SRC-IP-CIDR / SRC-IP-SUFFIX | 對應的來源 IP 版本,匹配發起連線的來源而不是目標 |
埠 / 入站 / 行程 / 其他
| 類型 | 說明 |
|---|---|
DST-PORT / SRC-PORT | 匹配目標/來源埠範圍 |
IN-PORT / IN-TYPE / IN-USER / IN-NAME | 匹配入站埠/類型/使用者名稱/名稱 |
REMATCH-NAME | 匹配 Rematch 出站寫入的名稱 |
PROCESS-PATH / PROCESS-PATH-WILDCARD / PROCESS-PATH-REGEX | 用完整行程路徑匹配(三種寫法:完整路徑 / 萬用字元 / 正規表示式) |
PROCESS-NAME / PROCESS-NAME-WILDCARD / PROCESS-NAME-REGEX | 用行程名稱匹配,Android 上可匹配套件名稱 |
UID | 匹配 Linux 使用者 ID |
NETWORK | 匹配 tcp 或 udp |
DSCP | 匹配 DSCP 標記,僅限 tproxy UDP 入站 |
RULE-SET | 引用規則集合,需要設定 rule-providers |
邏輯規則 & 子規則
AND / OR / NOT寫法為 LOGIC_TYPE,((payload1),(payload2)),Proxy,payload 是規則類型和內容,比如 DOMAIN,google.com。注意括號的使用,多個條件要用雙重括號包裹。
AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT
OR,((NETWORK,UDP),(DOMAIN,baidu.com)),REJECT
NOT,((DOMAIN,baidu.com)),PROXY
SUB-RULE匹配到子規則集合,詳見獨立的 子規則 頁面。
MATCH匹配所有請求,無需任何條件,通常放在規則列表最後一條做兜底。
附加參數
no-resolve僅目標 IP 規則網域開始匹配「目標 IP」類規則時,mihomo 會先觸發一次 DNS 解析來檢查解析出的 IP 是否匹配該規則;加上 no-resolve 可以跳過這次解析。如果更早的規則已經觸發過解析,即使加了 no-resolve 依然會用已有的解析結果去匹配。
src僅目標 IP 規則把「目標 IP」匹配轉換為「來源 IP」匹配。