菜单

核心功能

相关源文件

此页面描述了v2rayN的基本运行能力,重点介绍了应用程序如何管理代理连接、处理配置以及与各种核心进程进行交互。有关应用程序更新的信息,请参阅更新系统,有关速度测试的详细信息,请参阅速度测试

核心组件概述

v2rayN的核心功能围绕着通过各种后端进程管理代理连接。该应用程序支持多种代理核心,包括Xray、sing-box和clash,每种核心都需要不同的配置方法。

来源:ServiceLib/Handler/CoreHandler.cs10-424 ServiceLib/Handler/ConfigHandler.cs6-1032 ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs6-212 ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs6-542

核心功能流程

v2rayN的核心功能遵循以下通用流程

  1. 用户在UI中选择或配置服务器配置文件
  2. 为适当的核心类型生成配置
  3. 使用生成的配置启动核心进程
  4. 根据路由规则将流量路由到代理
  5. 可选地配置系统代理设置

来源:ServiceLib/Handler/CoreHandler.cs66-100 ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs19-78

核心进程管理

CoreHandler 类负责管理代理核心进程的生命周期。它负责启动、停止和监控这些进程,并将它们的状t态回传给UI。

核心进程生命周期

进程管理实现

CoreHandler 类执行以下关键功能:

  1. 初始化:设置环境变量并准备核心二进制文件的路径
  2. 进程启动:使用生成的配置启动适当的核心进程
  3. 进程监控:捕获进程输出并将其转发给UI
  4. 进程终止:确保进程干净地关闭
  5. TUN模式支持:管理TUN模式(系统范围代理)的特殊要求

对于Linux系统,当需要时(例如 TUN 模式),该处理程序包含运行具有提升权限的进程的特殊支持。

来源:ServiceLib/Handler/CoreHandler.cs20-64 ServiceLib/Handler/CoreHandler.cs154-175 ServiceLib/Handler/CoreHandler.cs183-196 ServiceLib/Handler/CoreHandler.cs326-379

配置管理

ConfigHandler 负责管理应用程序的配置,包括服务器配置文件、路由规则和应用程序设置。

配置组件

组件描述
核心配置代理核心的基本设置(日志级别等)
入站规则应用程序接收流量的方式(端口、协议)
路由规则将流量通过不同代理的规则
服务器配置文件代理服务器的连接详细信息
系统设置应用程序偏好设置和UI设置

服务器配置文件管理

ConfigHandler 提供了添加、删除和修改各种类型服务器配置文件的功能。它支持广泛的代理协议,包括:

  • VMess
  • VLESS
  • Shadowsocks
  • Trojan
  • SOCKS
  • HTTP
  • Hysteria2
  • TUIC
  • WireGuard

每种协议都有自己的验证和配置要求,这些都由ConfigHandler类中的特定方法处理。

来源:ServiceLib/Handler/ConfigHandler.cs13-168 ServiceLib/Handler/ConfigHandler.cs214-923 ServiceLib/Global.cs164-186

配置生成

v2rayN通过专门的服务为不同核心类型生成适当的配置文件

  1. CoreConfigV2rayService:为V2Ray/Xray核心生成配置
  2. CoreConfigSingboxService:为sing-box核心生成配置
  3. CoreConfigClashService:为Clash核心生成配置

配置生成流程

配置生成过程通常包括:

  1. 基本配置:为核心类型加载模板配置
  2. 协议配置:根据服务器配置文件添加协议特定设置
  3. 路由配置:根据应用程序设置添加路由规则
  4. DNS配置:为域名解析添加DNS设置
  5. 入站配置:配置应用程序如何接收流量
  6. 附加功能:添加TUN模式、日志记录等功能

来源:ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs19-78 ServiceLib/Services/CoreConfig/CoreConfigSingboxService.cs19-79 ServiceLib/Services/CoreConfig/CoreConfigClashService.cs16-154

协议支持

v2rayN支持广泛的代理协议,具有不同的功能和配置要求。

支持的协议

协议描述支持的核心类型
VMessV2Ray 主要协议,带加密V2Ray, Xray, sing-box
VLESSV2Ray 的轻量级协议Xray, sing-box
Shadowsocks流行的加密协议V2Ray, Xray, sing-box, Clash
Trojan模拟HTTPS的协议Xray, sing-box, Clash
SOCKS标准的SOCKS5代理V2Ray, Xray, sing-box, Clash
HTTP标准的HTTP代理V2Ray, Xray, sing-box, Clash
Hysteria2基于UDP的协议,针对不稳定的连接进行了优化sing-box
TUIC基于TCP的协议,针对可靠性进行了优化sing-box
WireGuard现代VPN协议sing-box

协议配置处理程序

ConfigHandler 包含用于添加每种协议类型的服务器的专用方法,处理它们独特的需求

  • AddVMessServer:处理VMess服务器配置
  • AddVlessServer:处理VLESS服务器配置
  • AddShadowsocksServer:处理Shadowsocks服务器配置
  • AddTrojanServer:处理Trojan服务器配置
  • AddHysteria2Server:处理Hysteria2服务器配置
  • AddTuicServer:处理TUIC服务器配置
  • AddWireguardServer:处理WireGuard服务器配置

这些方法会验证协议特定设置,并将其正确格式化以用于核心配置。

来源:ServiceLib/Handler/ConfigHandler.cs252-784 ServiceLib/Global.cs164-186 ServiceLib/Global.cs187-242

多协议配置模型

v2rayN使用统一的ProfileItem模型来存储服务器信息,无论其协议如何,并根据协议类型利用不同的字段。

来源:ServiceLib/Handler/ConfigHandler.cs252-784 ServiceLib/Models/V2rayConfig.cs6-458

配置到进程的流程

此图说明了服务器配置文件如何转换为运行中的代理进程

来源:ServiceLib/Handler/CoreHandler.cs66-100 ServiceLib/Handler/ConfigHandler.cs214-265

核心选择逻辑

v2rayN根据服务器配置文件的配置类型和用户设置来决定使用哪个核心

核心选择逻辑实现在AppHandler.GetCoreType方法中,该方法根据配置类型和配置文件中设置的任何显式核心类型来确定合适的核心类型。

来源: ServiceLib/Handler/AppHandler.cs234-245 ServiceLib/Handler/CoreHandler.cs183-196

跨平台考量

v2rayN 支持 Windows、macOS 和 Linux,针对不同平台进行了适应性调整,包括:

  1. 文件路径:根据平台的不同,存储位置也不同。
  2. 进程管理:启动/停止进程的不同方式。
  3. 权限:处理提升的权限(特别是对于 TUN 模式)。
  4. 系统集成:系统代理设置的不同方法。

应用程序使用工具方法来确定平台并相应地调整行为。

来源: ServiceLib/Common/Utils.cs797-837 ServiceLib/Handler/CoreHandler.cs222-407

核心功能总结

v2rayN 的核心功能围绕着

  1. 配置管理:处理服务器配置文件和应用程序设置。
  2. 协议支持:支持多种代理协议。
  3. 核心管理:管理不同的代理核心进程。
  4. 配置生成:为不同的核心创建合适的配置。
  5. 进程生命周期:启动、监控和停止代理进程。
  6. 系统集成:与系统代理设置集成。

总之,这些组件共同使 v2rayN 能够为跨多个平台管理代理连接提供灵活而强大的界面。