1. DIRECT 策略:高性能直连出站的物理管道
当一条规则被判定为 `DIRECT` 时,数据包的处理流如下:
1. 内核直接调用操作系统的原生套接字(Socket);
2. 绑定本地物理网卡的出口 IP;
3. 将数据包直接交付给家庭宽带光猫路由发出;
4. **性能收益**:完全没有代理加密和解密的 CPU 计算损耗,享受本地千兆光纤的 100% 物理极限速度与毫秒级延迟。
💡 所有局域网私有网段(192.168.x.x、10.x.x.x)必须强制配置为 DIRECT。
2. REJECT 策略与广告拦截原理
在浏览网页或使用 App 时,应用会向广告联盟服务器(如 Google AdMob、友盟、穿山甲)发起数据请求。
通过在规则列表中将广告域名绑定至 `REJECT`:
- 客户端在发起 DNS 查询或建立 TCP 握手的第 1 个包时,Mihomo 内核直接将其掐断;
- 浏览器或 App 以为广告服务器宕机,在 0.001 秒内自动跳过广告加载流程,直接渲染正文内容;
- **三重红利**:不仅页面清爽无广告,还能节省大量宽带流量,更能彻底阻断恶意软件对用户行为的隐私追踪!
yaml
# 生产级高效去广告与隐私防护规则配置范例
rules:
# 1. 核心广告域名精准拦截 (REJECT)
- DOMAIN-SUFFIX,doubleclick.net,REJECT
- DOMAIN-SUFFIX,adservice.google.com,REJECT
- DOMAIN-SUFFIX,pangolin-sdk-toutiao.com,REJECT
- DOMAIN-KEYWORD,admarvel,REJECT
- DOMAIN-KEYWORD,admaster,REJECT
# 2. 外部超大规模动态广告规则集引用
- RULE-SET,category-ads-all,REJECT
# 3. 局域网与国内直连
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY 3. REJECT 与 REJECT-DROP 的高阶区别
Mihomo 还提供了更高级的 `REJECT-DROP` 策略:
- **`REJECT`**:主动向客户端回送一个 TCP RST(重置)报文,明确告诉应用「连接已被拒绝」。应用收到后立刻放弃重试;
- **`REJECT-DROP`(静默黑洞丢弃)**:完全不回送任何响应,将数据包在底层静默丢弃,让客户端以为网络严重超时。适合用于对付某些检测到 RST 报错就会反复疯狂重试发包的流氓后台 SDK。
❓ 常见疑问与排查步骤
用 REJECT 规则能拦截爱奇艺或 YouTube 的视频片头广告吗?
可以拦截绝大部分基于独立广告域名的贴片广告。但对于部分将广告视频流与正文视频流混编在同一 CDN 域名的严苛平台,仅靠 DNS/域名层拦截可能会导致正片也无法播放,需要配合浏览器端专属插件。
误把正常网站加进了 REJECT 规则怎么恢复?
在 rules 列表中找到该域名,将末尾的 REJECT 改为 DIRECT 或 PROXY,保存配置后在客户端重新加载即可恢复。
加载了几万条广告规则会导致电脑变卡吗?
如果使用的是 Mihomo 的 mrs 二进制规则集,几万条规则在内存中以基数树检索,每次匹配耗时不足 0.01 毫秒,对系统性能毫无影响。