Skip to content

Nexora 的工作原理 ​

Nexora 由两部分组成:一个决定一切的面板,以及任意数量承载用户流量的节点。本节解释它们的内部工作方式,供你想弄清某件事为什么会这样表现时参考。运行服务并不需要它;那部分内容在使用面板一节中。

各部分如何协同工作
客户的应用
v2rayNG、Hiddify、Streisand…
节点
frankfurt-01
节点
tokyo-01
节点
toronto-01
互联网
面板
一切集中管理
你,在浏览器中
插件
商店、通知器、你自己的
用户流量配置与统计,经双向 TLS事件与 API下载订阅

控制平面:面板 ​

面板是一个带网页界面的程序。它掌握四样东西:

  • 数据库,唯一的事实来源。 每个管理员、用户、套餐、入站、模板、节点、隧道、证书和设置都存放在这里,使用 SQLite 或 PostgreSQL。节点不保留自己的副本;两者不一致时,以面板为准,节点会被修改以保持一致。
  • 调度器。 面板自己按固定节奏完成周期性工作(见下文)。
  • API。 网页界面、你的脚本和插件都使用同一套 API,各自拥有自己的权限。
  • 订阅服务。 用户的应用从其订阅地址获取配置。它可以运行在独立的域名上,与你管理面板所用的地址分开。

面板的节奏 ​

每隔面板会
10 秒合并各节点看到的地址,并在有变化的地方推回按用户的地址表
15 秒检查每个节点(心跳),并向没有在提供配置的节点重新发送配置
30 秒从每个节点收集流量计数器
1 分钟执行额度、到期日期、重置周期和节点限制;检查插件的健康状态
5 分钟采样每个节点的磁盘、内存和负载
10 分钟将每个节点上的路由、DNS 和规则集与它应运行的内容进行比较
1 小时刷新到期的规则集,清理旧记录,压缩健康历史,重新读取插件清单
6 小时续期到期的证书

数据平面:节点 ​

节点是承载流量的服务器。它是无状态的:

  • 它没有数据库。入站、出站、端点、路由、用户和限制都来自面板,并保存在内存中。
  • 它在磁盘上只保留自己的 TLS 身份,以及一份可以重新获取的文件缓存,例如面板推送的规则集。
  • 重启后,在面板再次发送配置之前它不提供任何服务,而下一次心跳会在几秒内完成这件事。
  • 它只在能被面板访问到时提供服务。与面板断开约三分钟后,它会停止服务。参见 节点与面板。

节点提供的是它的模板:其中的入站、出站、端点、规则集和路由,再加上属于该模板的用户。

它们如何通信 ​

面板通过 HTTPS 连接每个节点的控制端口(默认 62050),使用双向 TLS:

  • 节点只接受面板的客户端证书,这是它在安装时收到的。
  • 面板在第一次连接时记录节点自己的证书,此后只接受这一张。这就是首次使用时信任:同一地址上出现不同的证书会被拒绝。

节点安装完成后,始终是面板调用节点,从不反过来。面板通过这条链路发送配置和变更,并读回状态、计数器、警告和主机数据。变更只发送变化的部分,不会重启节点;参见 无需重启的变更。

用户只接触节点和订阅地址 ​

你的客户从不访问面板。他们的应用从订阅地址获取配置,然后连接节点的链接地址。面板自己的地址、登录页面和 API,除了你和你的员工之外,不需要任何人知道。

插件位于面板旁边 ​

插件(例如 Nexora Shop 或通知插件)是一个独立的程序,拥有自己的进程、数据库和界面。它只通过网络与面板协作:一个带有你批准的权限的 API 令牌,以及一个接收它所订阅事件的 Webhook。面板从不运行插件的代码。参见 插件平台 和 事件总线。

本节各页 ​

页面说明内容
数据包的路径一个连接逐个阶段地穿过节点
无需重启的变更变更如何在不重启的情况下到达节点
节点与面板信任、会话、心跳,以及节点在没有面板时做什么
隧道内部隧道中的中继、源节点和会话池
从模板到链接用户的链接如何由模板、地址和前置构建
流量、额度与限制流量计量、额度、限制和代理商的配额
事件总线事件总线以及投递如何重试
插件平台插件的注册、授权同意、权限授予和更新
证书的签发与续期证书由谁签发,以及如何续期和重新加载
安全模型安全模型,从双向 TLS 到角色和审计
监控与指标健康历史、实时连接和指标端点

文字与图片采用 CC BY 4.0 许可。