跳转到内容

NSIO 概览

面向”站点与用户对称”的覆盖网络生态:NS · NSD · NSGW 三组件、零信任接入平台,底层数据面为可独立复用的 nsplane。本站描述各仓库的已实现形态(ns 分支 refactor/nsplane a9c6a090、nsd 6bce2220、nsgw aa94aa5、nsplane v0.10.1、nsshared v0.6.0),并单独标注仍处于设计或规划中的能力。

组件仓库产品面一句话
NS · 端侧节点nsns CLI、libns FFI、官方容器镜像账户模式下每台 NS 既是”访问端”也是”发布端”:访问其他 Node 发布的 Service / 子网 / 出口,同时用 services.toml 发布本机 Service、用 ns subnet 发布本地 LAN;Quick 模式下设备凭短码两两直连
NSD · 控制中心nsd单一静态二进制 + 内嵌 React 19 管理台 + nsdctl + SDK / Terraform provider;单实例或多实例部署账户模式网络的权威:管理 Account / Organization / Network / Device / Node,编译 Access Grant,签发配置投影;从不承载业务流量
nsplane · 数据面nsplaneRust 库(nsplane-noise 核心、nsplane-packet、nsplane-core、nsplane 驱动、nsplane-tun)+ Linux / macOS 开发工具NS 节点的数据面:WireGuard 引擎、多传输与路径策略机制、报文过滤链、TUN 与用户态协议栈;每个节点一个引擎,其他应用也可直接嵌入
NSGW · 数据网关nsgwnsgw-server(+ 可选 Envoy sidecar);独立的 nsgw-quick-relay账户模式的公网边缘:不解密 WireGuard 中继、WSS 中继、终结、公网 HTTP/L4 入口、Gateway Egress / Gateway Exit;Quick 模式的短码会合与密文中继

协议字段与 wire schema 中的 nsc / nsn 指一条链路的两端(访问端 / 发布端),不对应两个产品。

部分入口主要用途权威状态
账户模式(NSD)ns up --server <URL> 登记,之后 ns up / ns down团队、长期共享、策略与运维NSD:Account / Organization / Network / Device / Node 与 Access Grant已实现,默认
Quick 模式ns quick up --relay <host:port>,ns quick invite / ns quick join <短码>,ns quick allow add <节点 ID>免账户的设备两两互联每台设备自己:本地身份键、允许 / 移除记录ns 侧已实现 v2;relay 侧的 v2 服务端待 nsgw M2
应用模式ns send / ns receive <票据>;第三方应用在节点的隧道之上运行的应用,首先是文件发送由应用自己准入(文件发送用票据口令 PAKE),对端与路径来自节点当前模式设计,未实现
  • 账户模式:首次 ns up --server <URL> 走浏览器 / 设备授权,由已登录 Account 批准;之后 ns up / ns down / ns status 作用于全部已连接的 membership(没有 active NSD),ns network join / leave 增减 membership,未指定 --server 时使用默认 NSD https://nsd.dev.ns.io。NSD 投影 Service、子网、Gateway Exit 与 Short DNS,数据走 direct → wg-relay → wss-relay 链路阶梯。
  • Quick 模式:无需账户或 NSD。A 运行 ns quick invite 得到短码,B 运行 ns quick join <短码>,双方经 relay 的会合信箱核对身份后配对并派生 PSK;也可以不会合,双方各自 ns quick allow add <节点 ID>,记录从 relay 的登记表取得。配对只授权这一对设备:A–B 与 A–C 配对不让 B 与 C 互通。地址(N6 / N4)与节点 ID 由身份键派生,一份签名的 NodeRecord 说明身份当前用哪把 WireGuard 键,relay 只在 WireGuard 之下转发密文;协议见 Quick 协议 v2。目前 relay 侧仍是 v1,v2 服务端是 nsgw 的迁移里程碑 M2。
  • 应用模式:文件发送以及之后的功能、第三方应用都作为应用运行在节点之上,使用节点当前模式的对端与路径;没有现成对端时经会合信箱建立仅限本次会话的对端。目标设计中每个节点只有一个 nsplane 引擎,两种模式与所有应用都基于它。
  • 账户模式与 Quick 模式由同一个二进制提供,运行在同一个 nsplane 引擎上。自 2026-10-12 起节点以 membership 模型运行:每个已连接的 NSD Network 与 Quick 各是引擎上的一个本地身份(由设备密钥链派生),平等、同时运行、互不影响;NSD 只提议,节点决定生效的配置。这一版 ns 的账户模式线上格式已变(身份对端,不再有 NSD 分配的 IPv4),NSD 与 nsgw 的配套在迁移计划的 M6。

跨组件的”角色 + 互联 + 时序”总体视图见 总体架构(拓扑、控制面下发、数据面链路阶梯、身份与授权模型、信任边界与失败域)。

每个组件有概览页(index.md)、架构与功能页和演进路线页(roadmap.md);NS 的架构按三个部分分页。

  • NS · 端侧节点 —— 账户模式、Quick 模式、应用模式;三种数据面(tun / dns-vip / proxy)、链路阶梯、Service 发布、Short DNS、Gateway Exit、子网路由、libns。
  • NSD · 控制中心 —— 身份与登记、Access Grant、配置投影、网关编排与中继放置、公网入口与 Edge Auth、管理台、Network 套餐与 SaaS 多租户。
  • nsplane · 数据面 —— 定位与原则、crate 划分、无 I/O 引擎模型与驱动 trait、翻译与 MTU、安全基线、发布与路线图。
  • NSGW · 数据网关 —— 五条数据面职责、Envoy 公网边缘、多 realm、fail-closed ACL 门、计量,以及 Quick relay。
协议 / 机制NSDNSGWNS
WebPKI 控制信任发现(GET /api/v1/info → control_trust.v1)发布方消费方消费方
控制传输 SSE / Noise IK / QUICserver(Noise / QUIC 由 sidecar 终结为明文 HTTP)client(按发现顺序探测)client(auto 优先 SSE,运行时故障切换)
Envelope v1(CBOR + Ed25519 签名,POST /api/v1/control)校验请求 / 签名响应签名请求签名请求
配置流事件(ControlMessage,逐事件 Ed25519 签名)signerverifierverifier
WireGuard UDP—不解密中继(:51821,含中继测量探测)/ 终结与 Exit 承载(:51820)peer ↔ peer(direct / wg-relay)、Exit 客户端
中继位置测量(probe_roster / probe_set / gateway_rtt)下发名单、按 RTT 放置应答测量探测测量并在心跳中上报
WSS(/client、/wss-relay、/relay、/exit-wss/v1)—serverclient
公网 HTTPS / TCP / UDP 入口编排(域名、路由、证书、Edge Auth)Envoy sidecar + ext_authz + 入口 ACL—
本地 DNS(Short DNS v2 resolver)authority / projection—server(127.53.53.53 / 169.254.53.53)
JWT(RS256)issuerverifier(WSS、Exit 承载)持有者
ACL(仅允许语义)编译 acl_config执行(terminate / 公网入口 / Egress / Exit,全部 fail-closed)执行(Service PEP、Node L3、子网),fail-closed

核心不变量:

  1. 节点私钥永不出节点 —— NSD 从不接收节点身份私钥或 WG 私钥;WgConfig 没有 private_key 字段。NSD 自有的签名密钥与集中管理的公网边缘证书密钥属于另外的信任域。
  2. 三种控制传输共用一份事件解析器 —— 传输只是外壳,事件签名独立于外壳。
  3. 账户模式配置来自 NSD 投影 —— 本地 services.toml 与 gateway_services.toml 声明能力与执行下限。Quick 模式没有中心权威,每台设备只按自己的准入策略接纳配对。
  4. ACL 全链路 fail-closed —— 策略未到、显式为空、来源被撤销时一律拒绝;传输抓取失败只保留 last-known-good。
  5. 数据面对 NSD 无运行时依赖 —— NSD 不可达时既有链路继续工作,只失去变更与新登记能力。
  1. 统一节点 —— 一个二进制、一个身份,同时访问与发布;同一 Account 下的 Node 之间默认全双向 L3 互通。
  2. 协议可插拔的控制面 + 零手工 pin —— 只配一个 HTTPS origin,Noise / QUIC / Envelope 信任材料由 WebPKI 认证的发现文档提供。
  3. 三种数据面同一份上层逻辑 —— tun(默认,L3 + L4)、dns-vip(免 root 的 L4 兼容)、proxy(免 root 的 SOCKS5 / HTTP / PAC)。
  4. 链路阶梯 —— direct → wg-relay → wss-relay 逐级降级、可恢复;网关在 relay 模式下结构性看不到明文。
  5. 网关能力对称声明 —— NS 用 services.toml / ns subnet 声明,NSGW 用 gateway_services.toml 声明,NSD 只做合成与裁剪,不能凭空生成节点没有声明的能力。
  6. 节点身份与 WG 私钥永不出节点 —— 这是协议约束,不是运维惯例。