出口、规则与广告拦截
日常管理可以在 Telegram Bot 或内网 Web 面板完成。两者共用同一套管理逻辑,保存后立即热更新,无需重启服务。
先理解三种“直连”
- 国内规则命中 direct:DoT 返回目标真实 IP,手机使用本地蜂窝网络直接访问
- KFC 本机出口:国外目标先进入网关,再使用 KFC 机器公网 IP 访问;内部出口名为
DIRECT - 国外默认出口(FINAL):所有未命中规则的国外流量最终走哪个网关出口
切换 FINAL 不会改变国内域名 / GEOIP CN 的手机本地直连行为,也不会覆盖用户自定义规则。
添加出口
Bot → 国外默认出口 → 添加出口,粘贴节点分享链接即可。内网 Web 面板也提供相同入口。
支持:
- 出口名称默认使用节点备注
- 添加时会通过该出口真实访问外网并验证响应;不通则不写入配置
- mihomo 协议栈缺失时会自动安装
- 出口支持随时测试、切换和删除
切换国外默认出口
Bot → 国外默认出口 → 选择目标出口。
- 切换前再次做端到端验证
- 验证失败时拒绝切换,当前出口保持不变
- 删除当前出口后自动回落 KFC 本机出口
- 国内直连规则未就绪时,系统会 fail-closed,拒绝切换代理出口
某些国外服务从 KFC 本机公网直出可能不可达。遇到「网页能开、App 连不上」时,可先切换到代理出口,再用连通诊断确认。
自定义分流规则
Bot → 分流规则 → 添加规则。格式为:
示例:
- 类型:
DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、IP-CIDR、RULE-SET、GEOIP - 动作:
direct、block、proxy:<出口名> - 用户规则排在广告规则和国内兜底之前,可以精确覆盖默认行为
- 域名会先解析目标 IP,再参与
IP-CIDR/GEOIP匹配
完整优先级:
DNS 广告拦截
广告拦截默认关闭。开启入口:
- Bot → 广告拦截 → 开启拦截
- 内网 Web 面板 → 广告拦截 → 切换开关
首次开启会下载约 2 MB 的 anti-AD 域名规则。默认每 24 小时自动刷新;如果首次下载失败,再次点击开启会重新下载和热重载,不需要先关闭。
如何确认真的拦住了
系统区分两类数据:
- 规则命中:策略判定为 block
- 成功拦截:NXDOMAIN 已经成功写回客户端
Bot 与 Web 展示的是成功拦截统计,包括:
- 今日、最近 7 日、最近 30 日与累计次数
- 最近 100 条成功命中的域名和时间
- 最多 400 个域名的聚合排行
这些记录不包含客户端 IP、完整 URL或正常访问明细。
误杀白名单
如果某个 App 开启拦截后白屏或资源加载失败:
- 打开 Bot / Web 的「最近命中」
- 找到可疑域名
- 加入广告白名单
- 重新打开 App 验证
白名单按域名后缀放行,对该域名及其子域生效;用户自定义 direct 规则也能覆盖广告规则。
内网 Web 面板
手机使用 5GPN 卡蜂窝数据时,浏览器打开安装脚本输出的面板地址即可免登录进入。面板仅接受 client_cidr 来源,公网访问会被应用层与 nftables 双重拒绝。
面板支持:
- 查看运行状态和 DNS 计数
- 查看、切换、测试与删除出口
- 添加和删除自定义规则
- 开关广告拦截、查看记录和管理白名单
- 运行逐层连通诊断