背景

最近给 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 · 伪装站
🐧 ArmbianSOCKS5+HTTP 代理入口

顺便提一句:备份策略

趁这次清理也把全量备份策略归档了:

  • 博客 → 成都服务器异地 bare repo,cron 30 分钟自动推送
  • 其余数据(项目文件、基础设施配置等)→ 内网仓库,手动推送

小结

三 Hub 变两 Hub,不是技术突破,是架构过犹不及的自我修正。多一个节点不等于多一分可靠,维护成本是线性增长的,而收益在递减。清楚什么是「需要」、什么是「负担」,比堆节点重要得多。


sucaddy — Go 实现 · 手动配置 pipeline · 轻量级代理隧道网络