背景
最近给 sucaddy 网络做了一次大的拓扑精简化。sucaddy 是我自建的轻量级代理隧道网络,之前运行在 3 Hub(韩国、香港、美国博客) + 1 Relay(成都) + 1 Proxy(Armbian)的架构上,覆盖全球 5 个节点。
为什么撤香港
香港节点是最早加入的 Hub 之一,但随着架构演进,它的角色越来越冗余:
- 香港承担的 NaiveProxy 出口功能,韩国和博客两边的 Hub 已经能完全覆盖
- 链式路由的终点完全可以在拓扑中找到替代路径
- 多一个 Hub 意味着多一份证书管理、配置同步、健康检查的负担
结论很简单:不刚需,就砍掉。
清理过程
清理分了两步:
第一步:文档和拓扑清理 所有 sucaddy 相关的文档、拓扑图、部署脚本、用户配置表——逐文件排查,去掉香港相关的所有条目,总计修改 12 个文件,+327/-220 行。涉及范围包括:
- 网络链路拓扑(NODES/LINKS)
- 部署脚本(SSH target、端口表)
- 用户路由配置(删除 HK 相关的链式路径)
- 博客文章内容
- 微结构数据采集配置
第二步:服务器清理 香港服务器的 sucaddy 二进制、配置、证书、伪装站点全部删除,systemd service 停用 + disable,日志真空清理。最后状态:只剩 Debian 12 原始系统,SSH 可登,像刚装好一样。
落地后还有意外收获
跑完拓扑健康检查时发现了一个潜伏已久的 bug — common.sh 里 NODES 块解析的 bash case 模式匹配有问题,导致健康检查脚本从不从文档读节点,一直走硬编码 fallback。之前文档里已经删了 HK,但巡检仍然把它当成节点。顺手修了。
修复后拓扑健康度全绿 ✅
当前架构
公网 (TLS)
🇰🇷 韩国 · 🇺🇸 博客
│ │
┌─────▼─────┐ ┌────▼────┐
│ 韩国 Hub │ │博客 Hub │
└─────┬─────┘ └─────────┘
│
┌─────▼─────┐ ┌──────────┐
│ 成都 Relay│ │Armbian │
│ SS × 多路 │ │ SOCKS5 │
└───────────┘ └──────────┘
| 节点 | 角色 |
|---|---|
| 🇰🇷 韩国 | NaiveHub · 伪装站 |
| 🇨🇳 成都 | SS relay × 多路 |
| 🇺🇸 博客 | NaiveHub · 伪装站 |
| 🐧 Armbian | SOCKS5+HTTP 代理入口 |
顺便提一句:备份策略
趁这次清理也把全量备份策略归档了:
- 博客 → 成都服务器异地 bare repo,cron 30 分钟自动推送
- 其余数据(项目文件、基础设施配置等)→ 内网仓库,手动推送
小结
三 Hub 变两 Hub,不是技术突破,是架构过犹不及的自我修正。多一个节点不等于多一分可靠,维护成本是线性增长的,而收益在递减。清楚什么是「需要」、什么是「负担」,比堆节点重要得多。
sucaddy — Go 实现 · 手动配置 pipeline · 轻量级代理隧道网络