什么是 VPN Client?
VPN Client,中文通常叫 VPN 客户端,是运行在用户设备上的一套网络软件。
它最基本的工作,是根据服务端提供的配置与 VPN 服务器建立连接,然后把符合条件的网络流量送入加密隧道,再由远端服务器访问互联网。
从用户角度看,这个过程可能只是点击一个“连接”按钮,但客户端背后实际上需要完成服务器选择、身份认证、DNS 配置、虚拟网络接口建立、路由规则处理、协议握手、网络状态检测和断线恢复等大量工作。
一个比较完整的 VPN 连接可以理解为:
应用程序 → VPN Client → 加密隧道 → VPN Server → Internet
因此,VPN Client 并不只是一个“节点列表界面”。
它实际上处在用户设备和整个 VPN 网络之间,是服务商把服务器能力真正交付给用户的最后一层。
同样的服务器,如果客户端对系统网络栈处理不好,可能出现 DNS 泄露、连接后无法访问局域网、睡眠唤醒后断线、IPv6 绕过、分流规则异常等问题;反过来,一个成熟客户端可以把大量复杂网络逻辑隐藏起来,让普通用户只需要考虑“连接哪个地区”。
这也是为什么我们认为,评价一个 VPN 时不能只看节点数量和服务器速度,客户端本身同样属于产品的一部分。
为什么中国大陆用户更熟悉“机场 + 第三方客户端”?
中国大陆代理工具生态长期形成了一种比较特别的使用方式:节点服务商主要负责提供服务器和订阅链接,而客户端则由其他开发者提供。
用户购买机场套餐以后,通常会得到一个订阅 URL,然后把它复制到 Clash、Mihomo、Shadowrocket、Stash、sing-box 或其他兼容客户端中。
第三方客户端再读取订阅中的节点信息,例如服务器地址、端口、协议和认证信息,并把这些节点显示在客户端中。
从架构上看,它更接近:
机场 → 提供订阅和节点
第三方开发者 → 提供客户端和代理内核
用户 → 自己把两者组合起来
Mihomo 的官方文档中就存在 proxy-providers 机制,可以从外部加载代理节点集合,而常见的 URI、Base64 或 YAML 订阅本质上都是把节点配置交给客户端解析。
这种模式本身有明显优势。
用户可以自由选择客户端,可以把不同服务商的节点放在同一个软件中,也可以自己编写分流规则、代理组和策略,对于熟悉网络配置的人而言自由度非常高。
所以,第三方客户端并不是一种“错误方案”。
相反,它是代理工具生态能够快速发展的重要原因之一。
真正的问题是,这种模式把一个原本完整的网络产品拆成了多个相互独立的部分。
当机场和客户端不是同一家公司时,出了问题到底该找谁?
这是普通用户最容易遇到的问题。
假设用户购买了一个机场订阅,然后导入某个第三方客户端,突然有一天无法连接。
问题可能来自机场节点故障,也可能来自订阅没有及时更新;可能是第三方客户端升级后改变了配置格式,也可能是代理内核升级以后某个协议参数发生变化;还有可能是 Windows、macOS、iOS 或 Android 更新后,系统网络接口、VPN API 或权限机制发生改变。
从用户角度来看,表现只有一个:
“VPN 不能用了。”
但对于服务商来说,这实际上可能是完全不同的故障。
机场客服可能会告诉用户:
“我们的节点正常,是你的客户端问题。”
客户端开发者则可能认为:
“软件没有问题,是你的订阅配置不兼容。”
最后真正需要判断问题的人反而变成了用户自己。
用户需要尝试更新订阅、重新导入配置、切换内核、查看日志、修改规则,甚至去社区搜索同样的问题。
对于熟悉网络技术的人来说,这些操作并不困难,但对于只希望连接 VPN 的普通用户来说,整个使用成本已经明显超过了“网络工具”本身。
365VPN 选择自己研发客户端,其中一个很现实的原因,就是希望减少这种责任边界。
服务器是我们维护的,客户端也是我们维护的,那么当用户遇到连接问题时,我们需要解决的就是完整链路,而不是首先判断“这是不是另一个开发者的软件造成的”。
自研客户端最重要的优势,其实是服务端和客户端可以一起设计
如果一个 VPN 服务商只提供订阅,它必须尽量遵守第三方客户端已经支持的配置和协议。
换句话说,服务端需要适配客户端。
而自己控制客户端以后,客户端和服务器就可以作为同一个系统进行设计。
例如服务器调度系统发现某个地区节点出现异常时,客户端可以根据自己的逻辑自动切换到其他可用节点;服务端增加新的连接机制时,可以同步发布客户端版本,而不必等待第三方内核是否支持;某个系统升级导致 VPN 接口行为变化时,也可以直接针对 Windows、macOS、Android 或 iOS 修改客户端。
这种能力对普通用户可能不明显,因为最终看到的仍然只是一个“连接”按钮。
但后台的差异实际上很大。
传统订阅模式更加像:
服务商把节点配置交给用户,后续怎么使用由客户端决定。
自研客户端模式则更接近:
服务商直接负责从设备到服务器的整个连接过程。
365VPN 选择后一种模式,是因为我们希望提供的不是一组可以复制到软件里的服务器地址,而是一套完整的 VPN 服务。
为什么 365VPN 不希望用户每天研究协议和配置文件?
第三方客户端生态中存在很多非常优秀的技术,例如不同代理协议、规则引擎、策略组和订阅机制,但它们同时也会带来一个问题:很多普通用户不得不学习本来不应该由最终用户负责的网络知识。
例如第一次接触机场时,用户可能需要理解什么是订阅地址,随后要知道怎么导入 Clash,再理解 Global、Rule 和 Direct 的区别;如果节点不能使用,还可能继续接触 TUN、System Proxy、DNS、Fake-IP、Rule Provider 和配置覆写。
这些知识本身当然有价值。
但如果一个人购买 VPN 的目的只是稳定访问互联网,那么要求他理解整个代理技术栈并不是合理的产品设计。
365VPN 自研客户端希望把这些复杂性留在产品内部。
用户选择地区,然后连接。
客户端负责处理认证、服务器配置、网络路由和其他底层逻辑。
这并不意味着高级网络功能没有价值,而是我们认为绝大多数用户不应该为了正常使用 VPN,被迫先成为网络工程师。
自研客户端可以减少“订阅链接”本身的依赖
机场模式中,订阅链接通常是非常重要的凭证。
里面可能包含用户可以使用的全部节点地址和认证参数,因此一旦订阅地址泄露,其他人可能直接导入使用,服务商还需要通过流量限制、设备限制或者重新生成订阅等方式处理。
另一方面,订阅服务本身也成为整个连接链路中的额外依赖。
客户端需要先访问订阅服务器,下载并解析最新节点配置,然后才能获得服务器列表。如果订阅域名出现访问异常、缓存没有刷新或者内容格式发生问题,即使真正的代理节点仍然在线,用户也可能因为无法正确更新配置而受到影响。
官方客户端则可以把账号认证、节点列表、服务器调度和版本控制放进自己的体系中,而不必把一个长期有效的订阅 URL 作为用户最核心的使用入口。
对用户而言,账号就是账号,节点就是节点,不需要保存、复制和保护一串复杂订阅地址。
为什么自己做客户端更方便进行自动节点调度?
传统订阅通常把一组节点列表直接交给客户端,用户看到的可能是几十甚至几百个服务器,然后自己选择。这种方式非常透明,但也把部分运维判断交给了用户。
某个节点是不是刚刚异常?当前线路是不是正在拥塞?这个服务器是不是已经进入维护状态?某个 AI 服务今天在这个出口是否正常?
普通用户并不知道。
365VPN 官网目前公开提供全球 500+ 服务器、覆盖 60+ 国家和地区,同时已经上线节点和 AI 服务状态监控。
当服务器网络和客户端属于同一套体系时,未来很多网络状态都可以直接参与客户端自己的连接决策,而不只是把几百个服务器名字全部交给用户自己试。
对于大型 VPN 服务来说,节点数量真正有价值的方式不是让用户每天手动点击几百次,而是让系统能够利用这些资源进行调度。
自研客户端可以更完整地处理 Kill Switch 和系统网络状态
VPN 与普通代理最大的区别之一,是它需要深入操作系统的网络层。
Windows、macOS、iOS 和 Android 对 VPN 都提供了自己的系统接口,客户端需要创建虚拟网络连接、处理默认路由、DNS、IPv4/IPv6、休眠唤醒以及网络切换。
例如一台 MacBook 从家庭 Wi-Fi 带到咖啡店以后,底层网络已经改变,VPN 客户端需要判断现有隧道是否仍然有效并重新建立连接。
手机则更加复杂,因为设备可能不断在 Wi-Fi 和 5G 之间切换。
如果 VPN 连接中断,而系统直接恢复普通网络,真实 IP 就可能暂时暴露,因此 Kill Switch 需要与操作系统网络状态紧密配合。
这些功能如果由服务商自己的客户端实现,就可以根据服务器网络和产品逻辑一起测试,而不需要假设所有第三方客户端对各种系统都采用完全相同的处理方式。
这也是为什么我们认为 VPN Client 不是一个可以随意替换的“外壳”。
对于完整 VPN 产品而言,客户端本身就是安全架构的一部分。
客户端统一以后,DNS 和分流也更容易保持一致
第三方客户端最容易产生差异的部分之一就是 DNS。
同一个订阅导入不同客户端以后,由于客户端自身的 DNS 模式、Fake-IP 设置、系统代理方式和 TUN 配置不同,实际网络表现可能完全不同。
一个用户可能完全正常,另一个用户使用同一个节点却出现 DNS 泄露或者某些网站打不开。
如果服务商自己控制客户端,就可以对 DNS 策略、智能分流和节点行为进行统一测试。
365VPN 官网目前也强调客户端简单、稳定,并提供公共 Wi-Fi 保护以及真实 IP 屏蔽等功能。
这种统一性并不意味着所有用户必须使用完全一样的网络策略,而是基础行为可以由服务商先验证,再把真正有意义的选项提供给用户。
相比让每个人分别维护一份 YAML 配置,这种方式显然更适合普通消费者产品。
自研客户端还有一个重要价值:产品功能不再受订阅格式限制
如果 VPN 永远只是一个“节点订阅”,那么产品能力很容易停留在:
提供服务器。
让用户连接服务器。
但当客户端由自己研发以后,能够加入的能力就不再局限于节点配置本身。
365VPN 当前已经提供自有 IP 托管能力,用户可以通过 SOCKS5 管理自己的 IP 基础设施,也就是把自己购买的独立出口纳入 365VPN 的使用体系。
用户不一定只能在“365VPN 公共节点”和“第三方代理软件”之间二选一,而可以把自己购买的独立 IP 与 365VPN 的客户端结合起来。
未来类似能力无论是节点状态、AI 可用性检测、网络诊断还是更细的连接策略,都可以直接集成进客户端,而不是要求用户寻找另外一个插件、规则集或配置脚本。
客户端因此从“连接节点的软件”变成了网络服务的控制中心。
自研客户端也意味着我们承担更多责任
使用第三方成熟客户端,对节点服务商来说其实更加轻松,因为客户端开发、操作系统兼容和大量网络功能都由开源社区或第三方开发者完成。
自己开发客户端则意味着需要长期维护 Windows、macOS、iOS、Android,甚至路由器等不同平台,每次操作系统升级都需要重新测试,而任何客户端 Bug 最终也不能推给其他开发者。
因此,自研客户端并不是一条成本更低的道路。恰恰相反,它通常需要更多研发和维护成本。
365VPN 之所以仍然选择这种模式,是因为一旦服务规模扩大,我们希望用户购买的是一项可以直接使用的 VPN 服务,而不是购买服务器以后,还需要自己寻找另一个软件把整个产品拼装起来。
这两种模式对应的是不同产品理念。
“机场 + Clash”是不是一定不安全?
不是。
不能因为客户端是第三方开发,就认为这种模式天然不安全。
Mihomo、sing-box 等项目本身拥有公开代码和成熟用户群,一些高级用户甚至更喜欢开源客户端,因为可以查看实现、自由配置并自己控制全部规则。
真正需要区分的是“安全”和“产品责任”。
第三方客户端模式的问题不是它一定存在安全漏洞,而是当服务端、客户端、规则和配置来自不同主体时,用户需要自己承担更多组合和排错成本。
同时,用户还应该确保客户端来自可信官方来源,因为第三方代理工具本身拥有很高网络权限,能够处理设备的大量流量。如果从非官方渠道下载被篡改版本,风险自然会明显增加。
365VPN 自研客户端所追求的优势,也不是“只有我们的客户端才安全”,而是让软件来源、账号系统、节点网络、功能更新和客服支持都属于同一个责任主体。
为什么不直接支持所有第三方客户端?
从高级用户角度看,一个很自然的问题是:既然第三方客户端功能这么强,为什么不直接提供订阅链接,让用户自己选择软件?
技术上这当然是一种可行模式,但一旦把订阅作为主要使用方式,服务商就很难保证不同客户端中的实际体验一致。
同一个节点在某个客户端中可能使用系统代理,在另一个客户端使用 TUN;某个软件可能处理 IPv6,另一个默认绕过;不同 DNS 实现、分流规则甚至不同核心版本都可能让结果产生差异。
这会让“365VPN 是否正常”变成一个很难定义的问题。
如果服务商希望对连接体验承担完整责任,就必须能够控制从登录、获取服务器、建立连接到断线重连的主要链路。
所以,自研客户端首先是一种产品一致性的选择。
365VPN 团队的理解
VPN Client 看起来只是设备上的一个应用图标,但它实际上决定了用户如何进入整个 VPN 网络。
服务器负责把流量送到互联网,而客户端负责把设备安全、稳定地接入服务器,两者缺少任何一边,都无法形成完整体验。
“机场 + 第三方客户端”的模式给用户带来了很高自由度,也非常适合愿意自己维护网络配置的高级用户;但它同时把节点、客户端、规则和故障处理分给了多个主体,因此用户需要承担更多学习和排错成本。
365VPN 选择自己研发客户端,是希望把这些责任重新收回来。
当连接失败时,我们不希望第一句话是“换一个客户端试试”;当系统升级以后出现问题,也不希望用户自己研究配置文件;当网络发生变化时,更不希望每个人重新寻找一份新的规则。
我们的目标不是让用户学会如何维护一个代理系统,而是尽可能让用户打开 365VPN、选择需要的地区,然后连接。
对普通用户来说,一个真正成熟的 VPN Client 最重要的能力,并不是把网络配置展示得有多复杂,而是让复杂的事情尽量不需要用户亲自处理。
