NSD · 演进路线与开发计划
本页汇总
nsd仓库的当前状态、进行中的计划与六大能力轴的现状。架构概念见 architecture.md。计划编号对应nsd仓库docs/plan/。
1. 不可放弃的差异点
Section titled “1. 不可放弃的差异点”- 协议可插拔的控制面 + WebPKI 信任发现 —— 三传输共用事件解析器,节点零手工 pin。
- 私钥不可见性(协议级) ——
WgConfig无private_key。 - 数据面无运行时依赖 —— NSD 不可达时既有链路继续工作。
- 上报驱动合成 —— NSD 只能裁剪节点声明的能力。
- fail-closed 授权 —— 空策略、未引用机器、跨 Account 未证明快照一律拒绝。
2. 当前状态
Section titled “2. 当前状态”nsd 仓库 main(6bce2220,2026-09-30)已覆盖单实例与多实例部署、多 realm、公网入口与 Edge Auth、网关编排、Account / Organization / Network / Device / Node 模型、设备授权登记、SaaS Platform API,以及按 Network 的套餐与容量。生产部署按 tag 触发。尚未开始:SAML / SCIM、Rego / CEL 策略引擎替换、审计导出到 S3 / SIEM、跨区域部署。
3. 进行中的计划
Section titled “3. 进行中的计划”状态以 nsd 仓库 docs/plan/ 索引为准。
| 计划 | 目标 | 状态 |
|---|---|---|
| PLAN-123 统一 Access Grant 与 L3 执行 | 一条逻辑 Grant、归一化模型、系统同 Account Grant、跨 Account 默认拒绝、enforced 代际 | 实施中(与 NS PLAN-173 配套) |
| PLAN-124 relay gateway placement | 用显式、可运营的 placement 组件决定中继网关 | 实施中 |
| 中继位置测量(20260929-2147) | 节点 RTT 测量名单、gateway_rtt 上报、按 realm 开关的”可达优先”放置 | 实施中(开关默认关闭) |
| PLAN-125 relay pair 投影规模 | 有界 → 分片 → 增量化 O(N²) 的 gateway_wg_relay 广播 | 实施中(NSGW PLAN-130 配套) |
| PLAN-126 设备重建爆炸半径 | 一台机器的在线边不应让所有客户端断开全部会话 | 草案 |
| PLAN-178 / PLAN-187 Network 商业化 | Free / Standard / Pro 套餐、容量、订单与结算 | 实施中(结算为模拟,默认关闭) |
| PLAN-021 多实例 active-active | 跨实例配置推送、PostgreSQL、共享会话、nonce 与限流 | 四个环节已交付,计划未关闭 |
| PLAN-022 / PLAN-023 | 管理台 SSO(之后 SAML、SCIM);生态集成(Webhook、SDK、Terraform) | 实施中 |
| PLAN-166 审计完整性与管理出站 | 审计完整性与管理面出站连接整改 | 实施中 |
| PLAN-054 realm-native Gateway Egress 资源 | Egress 资源 realm 原生化 | 实施中 |
| PLAN-058 成员门户最小数据范围 | 门户最小权限数据范围与前端接线 | 实施中 |
| PLAN-036 公网边缘 mTLS | NSD 侧完成;NSGW 集成阻塞 | 阻塞 |
| PLAN-101 / PLAN-159 部署 | tag 触发部署;生产主机部署 | 实施中 |
4. 六大能力轴 × 现状
Section titled “4. 六大能力轴 × 现状”| 轴 | 主问题 | 已实现 | 进行中 / 规划 |
|---|---|---|---|
| ① 身份与组织 | 谁是谁,属于哪个组织 | 本地账号 + OIDC(Deployment provider)、组织邀请(稳定 Network ID)、Account / Org / Network / Device / Node 模型、设备授权 + 精确设备公钥绑定、成员门户、API token、批量用户导入 | SAML / SCIM、2FA 强制、Machine PKI |
| ② 策略与编排 | 谁能访问什么 | Access Grant 资源族(Service / Node / Subnet / 公网应用 / Egress / Exit)、系统同 Account Grant、personal_auto / policy_required、policy_version、快照 / 回滚 / 模拟(模型层) | PLAN-123 收尾;Rego / CEL;定时 / posture 条件;双人审批 |
| ③ 网络编排 | 站点与网关如何组网 | 公网网关池、per-realm 隔离、relay 配对投影、中继 RTT 测量与可达优先放置(按 realm 开关)、Exit 候选 / 选择 / 撤销、Egress、子网映射控制面(active / standby、personal_auto)、CGNAT 地址计划与全局唯一租约、compact naming / Short DNS v2 | relay placement 收尾、配对投影分片、GeoDNS / 多区 |
| ④ 公网入口 | 无 NS 的公网访问 | 域名声明、HTTP / L4 路由、源 IP 准入、集中证书签发(DNS-01 / HTTP-01)、可轮换的客户端 CA 与 CRL、Edge Auth(OIDC / API key / Basic / 签名 URL / mTLS)、匿名公网应用、Signed-URL 商业签发 | 公网 mTLS 的 NSGW 集成 |
| ⑤ 可观测与审计 | 现在什么在跑,过去谁做了什么 | tracing + OTLP + Prometheus、审计事件、Webhook、计量接收与按网关新鲜度、孤立计量清理、启动时外键完整性报告、中继放置指标 | 审计导出、SIEM、SLA 报表 |
| ⑥ 运营与扩展 | 如何部署、如何扩 | 单静态二进制 + Caddy + sidecar;单实例 SQLite 或多实例 PostgreSQL + Redis;VACUUM INTO 备份;无头引导命令;tag 部署;签名 Quick Start 发布;SaaS Platform API;Network 套餐与容量 | 跨区域部署、真实支付 |
5. 运维形态
Section titled “5. 运维形态”| 形态 | 现状 |
|---|---|
| 单实例 | nsd serve + Caddy(443)+ 可选 Noise(4001)/ QUIC(4002)sidecar;SQLite;data_dir 默认 /var/lib/nsd;scripts/deploy-transports.sh 一键启用传输 sidecar |
| 多实例 | 负载均衡后多个实例;以 postgres 特性构建并连接 PostgreSQL;[fanout] backend = "redis",同一集群的实例使用同一个频道 |
| 首次引导 | nsd bootstrap-platform-key 安装首个平台 API key;nsd bootstrap-approver-token 安装设备批准令牌;均从 stdin 读取秘密 |
| 备份 | 数据库与 keys/ 都必须备份;漏备 keys/ 会让既有 JWT 全部失效 |
| 手工改库 | 按运维手册先快照、检查、修改、复查;宿主机 sqlite3 默认不开外键,必须显式处理级联 |
6. 明确不做的事
Section titled “6. 明确不做的事”- 把控制面换成 gRPC —— SSE + Noise + QUIC 已覆盖 DPI 与 UDP 场景。
- NSD 与数据面合并 —— 有状态 / 无状态解耦是核心原则。
- 在连接路径上做实时鉴权 —— 授权是数据,在端侧本地求值。
- NSD 探测节点或网关健康 —— NAT / 防火墙拓扑使签名上报成为唯一可移植的健康信号。
- 租户 auth key 登记 —— 已被 Account 批准的设备授权替代。
- 多 NSD 节点侧合并语义 —— NS 本地保存多个 NSD,但同一时刻只有一个 active。