域名规则是使用频率最高的规则族。三种写法看似相近,匹配范围差别很大,选错会导致规则不生效或大面积误伤。
三者对比
以目标 www.google.com 为例:
| 规则 | 是否命中 | 说明 |
|---|---|---|
DOMAIN,www.google.com | 命中 | 仅精确匹配这一个域名,mail.google.com 不命中。 |
DOMAIN,google.com | 不命中 | DOMAIN 不含子域。 |
DOMAIN-SUFFIX,google.com | 命中 | 匹配 google.com 本身及全部子域,最常用。 |
DOMAIN-KEYWORD,google | 命中 | 域名任意位置包含“google”即命中——包括 googleusercontent.com、fake-google.evil.com。 |
如何选择
- 目标是一整个站点:用
DOMAIN-SUFFIX,这是 90% 场景的正确答案。 - 只想控制某一个子域(如只让 API 子域走代理):用
DOMAIN。 DOMAIN-KEYWORD用于域名多变但含固定关键词的服务(如 CDN 域名家族),务必警惕误伤:DOMAIN-KEYWORD,ad这类短关键词会命中 shadow、download 等无辜域名。
域名规则为什么优先写在 IP 规则前面
域名规则在 DNS 解析之前就能完成匹配,不需要解析 IP;IP 类规则(IP-CIDR、GEOIP)则必须先解析出 IP。把域名规则放前面可以减少解析开销,在 fake-ip 模式下还能避免“为了匹配规则而被迫真解析”的泄漏问题(配合 no-resolve,见 IP 规则详解)。
提示:子域名走不同出口是合法需求,例如公司自建服务:
DOMAIN,vpn.company.com,DIRECT 放在 DOMAIN-SUFFIX,company.com,PROXY 之前即可实现“唯独这个子域直连”。