出口、规则与广告拦截

日常管理可以在 Telegram Bot 或内网 Web 面板完成。两者共用同一套管理逻辑,保存后立即热更新,无需重启服务。

先理解三种“直连”

  • 国内规则命中 direct:DoT 返回目标真实 IP,手机使用本地蜂窝网络直接访问
  • KFC 本机出口:国外目标先进入网关,再使用 KFC 机器公网 IP 访问;内部出口名为 DIRECT
  • 国外默认出口(FINAL):所有未命中规则的国外流量最终走哪个网关出口

切换 FINAL 不会改变国内域名 / GEOIP CN 的手机本地直连行为,也不会覆盖用户自定义规则。

添加出口

Bot → 国外默认出口 → 添加出口,粘贴节点分享链接即可。内网 Web 面板也提供相同入口。

支持:

ss:// vless:// vmess:// trojan:// hysteria2:// tuic:// socks5:// http://
  • 出口名称默认使用节点备注
  • 添加时会通过该出口真实访问外网并验证响应;不通则不写入配置
  • mihomo 协议栈缺失时会自动安装
  • 出口支持随时测试、切换和删除

切换国外默认出口

Bot → 国外默认出口 → 选择目标出口。

  • 切换前再次做端到端验证
  • 验证失败时拒绝切换,当前出口保持不变
  • 删除当前出口后自动回落 KFC 本机出口
  • 国内直连规则未就绪时,系统会 fail-closed,拒绝切换代理出口

某些国外服务从 KFC 本机公网直出可能不可达。遇到「网页能开、App 连不上」时,可先切换到代理出口,再用连通诊断确认。

自定义分流规则

Bot → 分流规则 → 添加规则。格式为:

类型,值,动作

示例:

DOMAIN-SUFFIX,openai.com,proxy:节点名
DOMAIN-SUFFIX,example.cn,direct
DOMAIN-KEYWORD,ads,block
IP-CIDR,31.13.0.0/16,proxy:节点名
  • 类型:DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、IP-CIDR、RULE-SET、GEOIP
  • 动作:direct、block、proxy:<出口名>
  • 用户规则排在广告规则和国内兜底之前,可以精确覆盖默认行为
  • 域名会先解析目标 IP,再参与 IP-CIDR / GEOIP 匹配

完整优先级:

内置私网保护 → 用户自定义规则 → 广告白名单 → 广告规则 → 国内直连兜底 → FINAL

DNS 广告拦截

广告拦截默认关闭。开启入口:

  • Bot → 广告拦截 → 开启拦截
  • 内网 Web 面板 → 广告拦截 → 切换开关

首次开启会下载约 2 MB 的 anti-AD 域名规则。默认每 24 小时自动刷新;如果首次下载失败,再次点击开启会重新下载和热重载,不需要先关闭。

如何确认真的拦住了

系统区分两类数据:

  • 规则命中:策略判定为 block
  • 成功拦截:NXDOMAIN 已经成功写回客户端

Bot 与 Web 展示的是成功拦截统计,包括:

  • 今日、最近 7 日、最近 30 日与累计次数
  • 最近 100 条成功命中的域名和时间
  • 最多 400 个域名的聚合排行

这些记录不包含客户端 IP、完整 URL或正常访问明细。

误杀白名单

如果某个 App 开启拦截后白屏或资源加载失败:

  1. 打开 Bot / Web 的「最近命中」
  2. 找到可疑域名
  3. 加入广告白名单
  4. 重新打开 App 验证

白名单按域名后缀放行,对该域名及其子域生效;用户自定义 direct 规则也能覆盖广告规则。

内网 Web 面板

手机使用 5GPN 卡蜂窝数据时,浏览器打开安装脚本输出的面板地址即可免登录进入。面板仅接受 client_cidr 来源,公网访问会被应用层与 nftables 双重拒绝。

面板支持:

  • 查看运行状态和 DNS 计数
  • 查看、切换、测试与删除出口
  • 添加和删除自定义规则
  • 开关广告拦截、查看记录和管理白名单
  • 运行逐层连通诊断