Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

netguard

本机网络分流的统一入口:账本驱动、边车执行、Clash API 验收、哨兵自愈。目标:网络这一层出什么事都自动解决,人不再碰 Karing GUI。

架构(2026-08-19 定稿)

  • 账本 rules.yaml:唯一事实源。每条 = 域名/后缀 + 出站(direct/proxy/karing/节点) + why + date。
  • 边车 sing-box@127.0.0.1:3070:由账本生成路由,系统代理长期指向它。匹配到的走自己的出站,没匹配到的转 Karing(3067) 兜底。需要固定出口的站(如 Claude)显式走 karing,由 Karing 的规则决定具体节点。
  • Karing:只当出口池 + 兜底。其规则层不再改(内核在系统扩展里,改文件不重载;karing-rule-cli v0.2.0 已改为诚实报告 pending_reload)。
  • 哨兵 launchd com.<you>.netguard(见 launchd 示例) 每 5 分钟:边车不健康→重启;重启失败→系统代理切回 3067;恢复→切回 3070;然后 netguard fix --apply

命令

netguard rule list
netguard rule add <name> --suffix a.com,b.com --out proxy|direct|karing|<节点> --why "..."
netguard rule rm <name>
netguard apply         # 账本→边车配置→重载→验收(失败自动回滚, exit 3)
netguard doctor        # 只读体检
netguard why <host>    # 某站走哪条链/为什么断
netguard fix [--apply] # 自愈预案(默认 dry-run)

铁律

  • 绝不碰 Karing 绿盾/连接开关;系统代理只在 3067/3070 之间切。
  • 本机没有直连外网:direct 只给国内站/局域网/明确不能走代理的长连接站。
  • 每次改动都有备份(backups/)、日志(netguard.log/guard.log)。
  • 飞书只发"要你远程点一下"或"A/B 选一个"的消息(全局协议 28.4)。

安装

git clone https://github.com/duevan07/netguard ~/netguard
pip3 install pyyaml
cp ~/netguard/local.example.yaml ~/netguard/local.yaml   # 填你的边车 launchd 标签 / Clash API / 节点池
cp ~/netguard/rules.example.yaml ~/netguard/rules.yaml   # 你的分流账本
ln -s ~/netguard/bin/netguard ~/.local/bin/netguard
netguard doctor
# 哨兵:cp examples/com.example.netguard.plist ~/Library/LaunchAgents/ 改 Label 后 launchctl bootstrap gui/$(id -u) <plist>

前提:一个由 launchd 常驻的 sing-box 边车(inbound 127.0.0.1:3070,开着 clash_api),以及 Karing(或任何监听 3067 的上游代理)当兜底。

为什么不直接改 Karing 的规则

Karing 的 sing-box 内核跑在 macOS 系统扩展里,接受 PUT /configs 但不重读文件,改文件不生效,只有 GUI 重载才行。与其和它较劲,不如把规则层放到自己完全可控的边车里——这就是本项目的全部动机。姊妹项目 karing-rule-cli 负责在需要时诚实地改 Karing 本尊(并如实报告"已写入但内核未生效")。

About

Ledger-driven split routing for a sing-box sidecar in front of Karing: doctor / why / fix, with a launchd guard that self-heals and fails over. Never touch the Karing GUI again.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages