本文档详细介绍了v2rayN如何管理跨不同操作系统的代理连接和系统代理设置。它涵盖了配置系统范围的代理设置、处理代理进程以及管理代理配置的核心机制。有关服务器配置管理的信息,请参阅配置管理。
来源: ServiceLib/Handler/SysProxy/SysProxyHandler.cs1-98 ServiceLib/Handler/SysProxy/ProxySettingWindows.cs1-359 ServiceLib/Handler/SysProxy/ProxySettingOSX.cs1-37 ServiceLib/Handler/CoreHandler.cs1-409
来源: ServiceLib/Handler/SysProxy/SysProxyHandler.cs7-67 ServiceLib/Handler/SysProxy/ProxySettingWindows.cs10-34 ServiceLib/Handler/SysProxy/ProxySettingWindows.cs38-77 ServiceLib/Handler/SysProxy/ProxySettingOSX.cs7-22
v2rayN通过统一的接口和特定于平台的实现提供跨平台的系统代理配置。
系统支持多种代理设置类型,定义在ESysProxyType枚举中
| 代理类型 | 描述 |
|---|---|
ForcedChange | 强制系统使用已配置的代理(全局代理模式) |
ForcedClear | 强制系统清除代理设置(直接连接) |
Pac | 使用代理自动配置脚本(仅限 Windows) |
Unchanged | 保持系统代理设置不变 |
v2rayN检测操作系统,并将代理设置命令路由到相应的实现
来源: ServiceLib/Handler/SysProxy/SysProxyHandler.cs7-67 ServiceLib/Common/Utils.cs797-805
在 Windows 上,v2rayN 可以通过以下方式配置代理设置:
代理设置同时应用于 LAN 和拨号连接
来源: ServiceLib/Handler/SysProxy/ProxySettingWindows.cs10-97 ServiceLib/Handler/SysProxy/ProxySettingWindows.cs205-236
对于 Linux 和 macOS,v2rayN 使用 shell 脚本来配置系统代理设置
networksetup 命令来配置代理设置来源: ServiceLib/Handler/SysProxy/ProxySettingOSX.cs7-36 ServiceLib/Common/Utils.cs560-596 ServiceLib/Common/Utils.cs838-855
CoreHandler 类负责管理处理网络流量的核心代理进程。
来源: ServiceLib/Handler/CoreHandler.cs66-100 ServiceLib/Handler/CoreHandler.cs154-180 ServiceLib/Handler/CoreHandler.cs184-221 ServiceLib/Handler/CoreHandler.cs239-314
CoreHandler 为不同的代理核心生成适当的配置,并使用正确的参数启动进程
来源: ServiceLib/Handler/CoreHandler.cs184-196 ServiceLib/Handler/CoreHandler.cs239-314 ServiceLib/Handler/AppHandler.cs215-245
v2rayN 支持 TUN 模式以实现系统范围的透明代理,这通常需要管理员权限
来源: ServiceLib/Handler/CoreHandler.cs87-95 ServiceLib/Handler/CoreHandler.cs228-235 ServiceLib/Handler/CoreHandler.cs326-406
v2rayN 支持多种代理协议,每种协议都有特定的配置要求
系统支持 Global.ProtocolShares 和 Global.ProtocolTypes 中定义的各种代理协议
| 协议 | 共享前缀 | 类型标识符 |
|---|---|---|
| VMess | vmess:// | vmess |
| Shadowsocks | ss:// | shadowsocks |
| SOCKS | socks:// | socks |
| HTTP | - | http |
| VLESS | vless:// | vless |
| Trojan | trojan:// | trojan |
| Hysteria2 | hysteria2:// | hysteria2 |
| TUIC | tuic:// | tuic |
| WireGuard | wireguard:// | wireguard |
来源: ServiceLib/Global.cs161-186
每个代理连接都可以使用各种传输协议进行隧道传输
来源: ServiceLib/Global.cs251-261 ServiceLib/Handler/Fmt/BaseFmt.cs20-150
系统支持各种代理安全选项
来源: ServiceLib/Global.cs243-249 ServiceLib/Global.cs302-315 ServiceLib/Handler/Fmt/BaseFmt.cs20-62
v2rayN 可以将自身注册为与操作系统一起自动启动
HKCU\Software\Microsoft\Windows\CurrentVersion\Run系统为每个平台提供默认的例外列表,以绕过本地地址的代理
# Windows Default Exceptions
localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*
# Linux/macOS Default Exceptions
localhost,127.0.0.0/8,::1
对于 Windows,v2rayN 支持 PAC(代理自动配置)模式
来源: ServiceLib/Handler/SysProxy/SysProxyHandler.cs91-97 ServiceLib/Handler/SysProxy/SysProxyHandler.cs56-60
v2rayN 在应用程序退出时确保正确清理代理进程
来源: v2rayN/App.xaml.cs68-73 ServiceLib/Handler/CoreHandler.cs154-180
升级 v2rayN 时,AmazTool 工具会处理此过程,同时确保代理设置得到妥善处理