levmnkv/sign-craze
GitHub: levmnkv/sign-craze
面向 Keenetic 路由器的一体化防火墙管理工具,集成 sing-box 透明代理、nfqws2 DPI 绕过与 Web UI,简化路由器级流量管控部署。
Stars: 0 | Forks: 0
# sign-craze
用于管理 Keenetic 路由器防火墙的 Go 实用工具。
使用 [sing-box](https://github.com/SagerNet/sing-box) 作为代理核心,并可选使用 [nfqws2.](https://github.com/nfqws/nfqws2-keenetic)
## 功能特性
- 管理 sing-box:安装、启动、停止、更新、回滚
- 三种路由模式:`proxy` (tproxy)、`dpi` (nfqws2 + NFQUEUE)、`hybrid`
- 原子化应用 iptables/ipset 规则,并保证回滚
- 通过 SRS rule-set 进行 GeoIP 过滤(基于 SHA256 选择性下载)
- 内置 Web UI:Zashboard + admin API,运行在端口 `9090`/`9091`
- 无需重启即可管理端口和例外项
- 配置的备份与还原
- 诊断模式 (`--diag`)
## 支持的架构
| 平台 | GOARCH | 备注 |
|-----------|--------|-----------|
| Keenetic (MIPS LE) | `mipsle` | GOMIPS=softfloat |
| Keenetic (MIPS BE) | `mips` | GOMIPS=softfloat |
| Keenetic / RPi (ARM 32) | `arm` | GOARM=7 |
| Keenetic Ultra / RPi 4 | `arm64` | |
## 环境要求
- 已安装 [Entware](https://help.keenetic.com/hc/ru/articles/360021214160) 的 Keenetic 路由器
- 路由器可访问互联网(用于在安装时下载 sing-box)
- `/opt` 上的可用空间:至少 30 MB
## 安装
```
# 自动检测架构并安装最新 release
wget -O - https://github.com/levmnkv/sign-craze/releases/latest/download/install.sh | sh
# 启动安装(交互式:将请求 proxy / outbound URL)
sign-craze --install
# 或无提示运行 — 从路由器配置自动检测
sign-craze --install-auto
# 运行
sign-craze --start
```
## 命令
```
sign-craze --install Установить sing-box + правила iptables
sign-craze --install-auto Установить без интерактивных подсказок
sign-craze --install-offline <путь> Установить из локального бинаря
sign-craze --start Применить правила + запустить sing-box
sign-craze --stop Остановить + убрать правила iptables
sign-craze --restart / -r Перезапуск (stop + start)
sign-craze --status / -s Показать состояние сервисов
sign-craze --update / -u Обновить sign-craze
sign-craze --update-geo / -g Обновить гео-файлы (SRS rule-set)
sign-craze --update-core Обновить бинарь sing-box
sign-craze --mode proxy|dpi|hybrid Переключить режим маршрутизации
sign-craze --dpi on|off Включить / выключить DPI-обход
sign-craze --dpi-strategy <пресет> Установить стратегию DPI
sign-craze --port-add <порт> Добавить порт в проксируемый набор
sign-craze --port-del <порт> Удалить порт
sign-craze --port-list Показать список портов
sign-craze --exclude-add Добавить IP/CIDR в исключения
sign-craze --exclude-del Удалить из исключений
sign-craze --exclude-list Показать исключения
sign-craze --ui on|off Включить / выключить Web UI (порты 9090/9091)
sign-craze --backup / -b Создать резервную копию конфигурации
sign-craze --restore <путь> Восстановить из резервной копии
sign-craze --diag / -D Диагностика (PASS/WARN/FAIL по каждому пункту)
sign-craze --uninstall Удалить sing-box и правила, сохранить конфиги
sign-craze --purge Полное удаление включая конфиги и логи
sign-craze --version / -v Показать версии sign-craze и sing-box
```
有关每条命令的详细说明、iptables 规则及配置文件格式,请参见 [`BEHAVIOR_SPEC.md`](BEHAVIOR_SPEC.md)。
## 从源码构建
宿主机上不需要安装 Go——构建过程在容器中进行。
```
# 所有架构 + UPX
podman run --rm \
-v $(pwd):/workspace:z -w /workspace \
golang:1.25 make build
# 特定架构
podman run --rm \
-v $(pwd):/workspace:z -w /workspace \
-e GOOS=linux -e GOARCH=mipsle -e GOMIPS=softfloat -e CGO_ENABLED=0 \
golang:1.25 go build -ldflags="-s -w" -o dist/sign-craze-mipsle ./cmd/sign-craze
# Tests
podman run --rm -v $(pwd):/workspace:z -w /workspace golang:1.25 go test ./...
# Linter
podman run --rm -v $(pwd):/workspace:z -w /workspace \
golangci/golangci-lint:latest golangci-lint run ./...
```
经过 `upx --lzma` 处理后的目标二进制文件大小:≤ 4 MB。
## 架构
```
cmd/sign-craze/main.go
│
internal/cli (диспетчер команд)
├── internal/singbox (загрузка, установка, конфиг sing-box)
├── internal/dpi (nfqws2: загрузка, конфиг, NFQUEUE)
├── internal/firewall (iptables/ipset: tproxy / redirect / hybrid)
├── internal/service (init.d shim, lifecycle, PID-файлы)
├── internal/geo (SRS rule-set, ipset-конвертация)
└── internal/web (HTTP: Zashboard + admin API)
```
详细的数据流图请参见 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
## 开发状态
| 阶段 | 状态 | 内容 |
|------|--------|-----------|
| 阶段 0 — 准备 | ✅ | go.mod, Makefile, CI, BEHAVIOR_SPEC.md, docs |
| 阶段 1 — 脚手架 | ✅ | cli, log, locks, exectx, errors, atomicfs, version, types |
| 阶段 2 — sing-box | ✅ | 下载、安装、配置模板、服务 shim、生命周期 |
| 阶段 3 — 防火墙 | ✅ | iptables/ipset, tproxy/redirect/hybrid 模式, Docker 测试 |
| 阶段 4 — DPI/nfqws2 | ✅ | 下载、配置、NFQUEUE 生命周期 |
| 阶段 5 — GeoIP 文件 | ✅ | SRS manifest、选择性下载、ipset |
| 阶段 6 — Web UI | ✅ | HTTP 服务器、REST API、Zashboard 嵌入 |
| 阶段 7 — 发布 | 🔄 | GitHub Actions 流水线、install.sh |
## 路由器上的文件结构
```
/opt/sbin/sing-box — бинарь sing-box
/opt/sbin/sign-craze — этот бинарь
/opt/etc/sign-craze/config.json — конфигурация sing-box
/opt/etc/sign-craze/nfqws2.conf — конфигурация nfqws2 (если DPI включён)
/opt/etc/init.d/S05signcraze — init.d shim (автозапуск)
/opt/var/lib/sign-craze/ — состояние (гео-файлы, бэкапы)
/opt/var/log/sign-craze/ — логи с ротацией
/opt/var/run/sign-craze-singbox.pid — PID sing-box
/opt/var/run/sign-craze-nfqws2.pid — PID nfqws2
/opt/var/lock/sign-craze.lock — эксклюзивная блокировка
```
标签:DPI绕过, Entware, EVTX分析, Google搜索, Go语言, ipset, iptables, Keenetic, Linux运维, MIPS, Netcraze, NFQUEUE, sing-box, TCP SYN 扫描, Web UI, Zashboard, 二进制发布, 代理工具, 代理核心, 家庭网络, 开源工具, 日志审计, 程序破解, 网络分流, 网络管理工具, 网络配置, 网络防火墙, 路由器管理, 路由规则, 透明代理