菜单

服务器管理

相关源文件

Shadowsocks Windows 中的服务器管理系统负责处理代理服务器在运行期间的配置、存储和选择。本页面介绍管理服务器配置的组件、服务器选择算法,以及如何导入和导出服务器。

有关处理这些服务器实际连接的代理服务的信息,请参阅代理服务。有关插件系统与服务器集成的详细信息,请参阅SIP003 插件

概述

服务器管理系统允许用户添加、编辑、删除和优先设置 Shadowsocks 服务器。每个服务器都需要配置详细信息,例如服务器地址、端口、密码和加密方法。该系统支持以标准 Shadowsocks URL 格式导入/导出服务器,并通过各种策略(负载均衡或高可用性)选择服务器。

来源:shadowsocks-csharp/Model/Server.cs15-50 shadowsocks-csharp/View/ConfigForm.cs shadowsocks-csharp/Controller/Strategy/IStrategy.cs

服务器数据模型

服务器数据模型在 Server 类中定义,该类封装了连接 Shadowsocks 服务器所需的所有配置参数。

核心服务器属性

属性类型描述默认
服务器字符串服务器主机名或 IP 地址""
server_portint服务器端口号8388
password字符串用于 ACL 身份验证的密码""
method字符串加密算法"chacha20-ietf-poly1305"
plugin字符串SIP003 插件名称""
plugin_opts字符串插件选项""
plugin_args字符串插件参数""
remarks字符串服务器的易读名称""
group字符串用于排序/筛选的分组标识符""
timeoutint连接超时(秒)5

来源:shadowsocks-csharp/Model/Server.cs15-50

服务器 URL 格式

服务器可以以标准 Shadowsocks URL 格式表示,其中包含所有必要的连接信息,便于携带。 Server 类提供了生成和解析这些 URL 的方法

系统支持两种 URL 格式

  1. SIP002(首选):使用 Web 安全的 base64 编码,插件参数位于查询字符串中
  2. 传统:使用整个连接字符串的标准 base64 编码

来源:shadowsocks-csharp/Model/Server.cs75-119 shadowsocks-csharp/Model/Server.cs150-250

服务器配置界面

服务器配置用户界面在 ConfigForm 中实现,它提供了一个全面的界面来管理服务器配置。

服务器列表管理

用户界面允许用户

  • 查看所有已配置的服务器
  • 添加新服务器
  • 删除现有服务器
  • 复制服务器
  • 通过在列表中上下移动来重新排序服务器
  • 编辑服务器属性

来源:shadowsocks-csharp/View/ConfigForm.cs410-415 shadowsocks-csharp/View/ConfigForm.cs496-577

服务器配置验证

在保存或切换服务器时,用户界面会验证服务器配置

  • 服务器地址必须是有效的主机名或 IP
  • 端口必须是有效数字
  • 密码不能为空
  • 超时时间必须是有效数字

系统为无效配置提供适当的错误消息,并阻止保存,直到问题解决。

来源:shadowsocks-csharp/View/ConfigForm.cs138-368

服务器选择策略

Shadowsocks Windows 实现了不同的算法(策略)来选择用于连接的服务器。这些策略对于优化性能和可靠性至关重要。

负载均衡策略

负载均衡策略(BalancingStrategy)在所有已配置的服务器之间分配连接

  • 对于 TCP 连接:为每个新连接随机选择一个服务器
  • 对于 UDP 连接:使用本地端点的哈希值确定性地选择一个服务器

当所有服务器具有相似的性能和可靠性时,此策略简单但有效。

来源:shadowsocks-csharp/Controller/Strategy/BalancingStrategy.cs10-49

高可用性策略

高可用性策略(HighAvailabilityStrategy)使用性能指标选择最佳服务器

  • 跟踪每个服务器的各种性能指标
    • 连接延迟(SYN 和 SYN+ACK 之间的时间)
    • 上次读/写时间
    • 连接失败
  • 根据这些指标计算每个服务器的分数
  • 当性能更好的服务器得分显著更高时,自动切换到它们

这种智能选择有助于即使在某些服务器缓慢或不可靠时也能保持最佳性能。

来源:shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs10-187

服务器导入与在线配置

系统支持从 URL 或在线 JSON 配置导入服务器配置。

在线配置解析器

OnlineConfigResolver 类负责从 URL 检索和解析服务器配置。

解析器支持多种 JSON 格式

  • 包含标准属性的直接服务器对象
  • 服务器对象的 JSON 数组
  • 包含服务器对象的嵌套 JSON 结构

每个检索到的服务器都会被分配到与其来源 URL 匹配的组中,以便于组织管理。

来源:shadowsocks-csharp/Controller/Service/OnlineConfigResolver.cs12-68

URL 导入

服务器可以从标准 Shadowsocks URL (ss://) 导入

ss://base64(method:password)@hostname:port/?plugin=name;opts#remarks

Server.ParseURL 方法负责将这些 URL 转换为服务器对象。可以通过空格或换行符分割输入来处理多个 URL。

来源:shadowsocks-csharp/Model/Server.cs183-249 shadowsocks-csharp/Model/Server.cs252-259

服务器配置存储

服务器配置是主应用程序配置的一部分,以 JSON 格式存储。系统支持便携模式(配置保存在应用程序目录中)和标准模式(配置保存在用户配置文件中)。

当通过用户界面对服务器配置进行更改时,它们会经过验证,然后由 ShadowsocksController 保存到磁盘。

来源:shadowsocks-csharp/View/ConfigForm.cs439-458

与其他系统集成

服务器管理系统与 Shadowsocks Windows 客户端中的其他几个组件集成

  1. 代理服务:使用选定的服务器建立连接
  2. SIP003 插件:扩展服务器功能,提供额外特性(混淆等)
  3. 二维码系统:生成/扫描二维码以便轻松共享服务器
  4. PAC 系统:配置哪些流量通过哪些服务器路由

集成主要通过 ShadowsocksController 类协调,该类维护当前配置并通知其他组件更改。