一套跑在 Debian 13 (trixie) 上的软路由管理系统,提供 43 个功能页面的 Web 管理面板:WAN 接入、PPPoE 多拨、DHCP/DNS、IPv6、防火墙、QoS 限速、 访问控制、DDNS、文件共享、Docker 管理等。 核心设计原则:不重新实现任何协议 PPPoE 交给 ppp,DHCP 交给 dnsmasq,IPv6 RA 交给 radvd,NAT 交给 nftables。 Web 面板只做三件事:渲染原生配置文件 → 语法预检 → 原子写入并 reload。 面板删掉后,系统仍是一台配置完好的 Debian 路由器。 安全默认值 · 安装后不接管网络:不改默认路由、不开 IP 转发、不启动 DHCP 服务 · 所有改网络的动作都需要用户在面板上亲手点「应用」 · 避开 5900 端口,不触碰 VNC / X 会话 · 配置写入前先做语法预检,失败则回滚 架构 · backend/ Python 3 标准库,零第三方依赖(9 个模块) · web/ 原生 JS/CSS,无构建步骤 · 常驻 helper 通过 Unix socket 提供 75 个动作,socket 不可用时回退 subprocess · 鉴权走 X-Token 请求头 打包 · packaging/build-deb.sh → drouter_1.0.0_all.deb(含 6 个 systemd 单元) · scripts/make-offline-deps.sh → 236 个依赖 .deb + 本地仓库索引 · packaging/build-offline-bundle.sh → 自包含离线包,目标机零外网可装 · packaging/build-docker.sh → 容器镜像(体验用) 测试 40 套单元测试 + 3 个前端检查脚本(菜单映射 / 离线渲染 / 手机适配), 全部挂在 devtools/sync.sh 的预检链里。 许可:MIT
47 lines
1.9 KiB
Bash
47 lines
1.9 KiB
Bash
#!/bin/bash
|
|
# 交付前最终状态审计
|
|
echo "===== 1. 后端服务 ====="
|
|
systemctl is-active drouter-web; systemctl is-enabled drouter-web
|
|
systemctl show drouter-web -p MemoryCurrent -p ProtectSystem -p PrivateTmp -p User 2>/dev/null
|
|
|
|
echo; echo "===== 2. 监听端口 ====="
|
|
ss -lntup 2>/dev/null | awk 'NR==1 || /8080|8443|5900|:22/'
|
|
|
|
echo; echo "===== 3. 网络服务应全部 inactive+disabled ====="
|
|
for s in dnsmasq radvd dhcpcd miniupnpd chrony nftables; do
|
|
printf "%-12s active=%-10s enabled=%s\n" "$s" "$(systemctl is-active $s 2>&1)" "$(systemctl is-enabled $s 2>&1)"
|
|
done
|
|
|
|
echo; echo "===== 4. 端口 53/67/68 占用(应为空) ====="
|
|
ss -lnu 2>/dev/null | grep -E ':53 |:67 |:68 ' || echo " 53/67/68 空闲 ✔"
|
|
|
|
echo; echo "===== 5. nftables 规则(应为空) ====="
|
|
nft list ruleset 2>/dev/null | wc -l
|
|
|
|
echo; echo "===== 6. 构建保护模式 ====="
|
|
if [ -f /etc/drouter/BUILD_MODE ]; then echo " BUILD_MODE 存在 —— 保护开启 ✔"; cat /etc/drouter/BUILD_MODE; else echo " 未开启"; fi
|
|
|
|
echo; echo "===== 7. 已生成配置文件 ====="
|
|
for f in /etc/dnsmasq.d/drouter.conf /etc/nftables.d/drouter-v4.nft /etc/nftables.d/drouter-v6.nft \
|
|
/etc/radvd.conf /etc/dhcpcd.conf /etc/miniupnpd/miniupnpd.conf /etc/chrony/chrony.conf \
|
|
/etc/ppp/peers/drouter-wan; do
|
|
[ -f "$f" ] && printf " ✔ %-42s %s 字节\n" "$f" "$(stat -c%s "$f")" || printf " ✘ %-42s 缺失\n" "$f"
|
|
done
|
|
|
|
echo; echo "===== 8. 快照数量 ====="
|
|
ls -1 /opt/drouter/snapshots 2>/dev/null | wc -l
|
|
|
|
echo; echo "===== 9. 内存占用 ====="
|
|
ps -o rss=,cmd= -C python3 2>/dev/null | awk '{printf " RSS=%.1f MB %s\n", $1/1024, $2}'
|
|
|
|
echo; echo "===== 10. 网卡 ====="
|
|
ip -br -4 addr show ens18
|
|
|
|
echo; echo "===== 11. VNC 进程 ====="
|
|
ps aux | grep -i '[v]nc' | awk '{print " "$11" "$12" "$13}'
|
|
|
|
echo; echo "===== 12. 审计日志尾部 ====="
|
|
tail -5 /var/log/drouter/audit.jsonl 2>/dev/null || echo " (无)"
|
|
|
|
echo "AUDIT_DONE"
|