Featured image of post 『Blog』Use Hysteria through NekoRay in Windows

『Blog』Use Hysteria through NekoRay in Windows

通过 Nekoray 在 Windows 上运行 Hysteria 代理核心

前言

2022年3月,我们在《V2rayN 配置 Hysteria》 一文中简要介绍了一种 Windows 环境下借助 V2rayN 运行并管理 Hysteria 代理核心的可视化解决方案。行文中,我们提到了一些该种解决方案未能处理的问题,即,无法将 Hysteria 节点的启动与测试集成到一个 action 上,需要自行添加一个 Socks5 驻台线程并手动运行 hysteria-core 才能完成节点测试。在 V2rayN v5.32 中,软件作者 2dust 使用了一种妥协的方法尝试处理这种需求,但仍不够优雅,且方案可行性有待考究。

为了达成上述「检测 + 管理」的集成体验,本文介绍一个仍处于成长期的开源项目——NekoRay,基于 Qt/C++ 跨平台代理配置管理器。NekoRay 不仅能优雅地解决这个问题,还先于 V2rayN 支持了 hysteria:// 协议头的解析,在一定程度上促进 hysteria 节点的社区传播。

NekoRay 虚拟形象

本文从「快速上手」及「进阶指南」两个阶段介绍这个项目。你如果已持有一枚可以使用的 hysteria 节点分享链接,那么只需 1 分钟即可完成与启动系统代理有关的一切操作,开箱机用,十分方便。

注意事项

本文最后更新时间 2022-08-26, 请注意甄别本文中可能过时的内容,谨慎参考。

本文涉及的开源项目如下:

项目名发行版本号用途
HyNetwork/hysteriav1.2.0代理核心
MatsuriDayo/nekorayv1.4图形化客户端

注意 →

  1. 本文不面向零基础的小白读者,且仅涉及与 NekoRay Win10+ 客户端相关的操作演示,hysteria 服务端的配置详见『Blog』V2rayN 配置 Hysteria

  2. 该项目仍处于成长期,其成熟度仍与 V2rayN 有较大差距。本文仅提供解决方案的演示说明,玩家需要根据自己的喜好和需求选择适合自己的产品。

快速上手

下载 NekoRay

进入 Releases · MatsuriDayo/nekoray,下载最新版的 NekoRay Windows 压缩包。免安装,开箱即用。此处假设解压目录为 C:\\nekoray,则主程序路径为 C:\\nekoray\\nekoray.exe

下载 hysteria-windows

进入 Releases · HyNetwork/hysteria,下载最新版的 hysteria-windows-amd64.exe,将其放置在解压后的 NekoRay 配置目录下,例如:C:\\nekoray\\config\\hysteria-windows-amd64.exe(此处随意,但 config 为核心界面的默认启动路径,这样放置方面找文件)。

配置 NekoRay 代理核心

持续进入「首选项」「基本设置」「核心」界面,选择 hysteria-core 的绝对路径,即刚下载的 hysteria-windows-amd64.exe 文件绝对路径。

选定后切换到「基本设置 - 通用」界面,将 HTTP 监听端口启用。其他设置保持默认,点击确定,保存设置。

首选项 - 基本设置 - 核心 - hysteria

需要注意的是,若在后续操作中出现端口重用或冲突的弹窗警告,需要回到「基本设置 - 通用」中修改 Socks 监听端口或 HTTP 监听端口。下图为改变后的端口值:

image-20220831145659642

导入 hysteria 节点

从分享链接或剪切板添加

NekoRay 支持 hysteria:// 协议头的解析,可以直接将订阅链接粘贴进来自动获取节点的配置信息,如下图所示:

NekoRay - 从剪切板添加 hysteria 节点分享链接

值得一提的是,我们在经典的 hysteria 客户端配置文件中设定字段 acl以及 mmdb 用以调取分流策略,还能额外设置 recv_window_connrecv_window以及 resolver 等参数更细粒度地控制代理行为。但我们观察hysteria:// 的节点分享链接的参数后发现,其只保留了 C/S 通信的必要参数,即 hostprotocolauth_str 等字段。

显然,在最佳实践中,我们不应在为传播的设计的参数结构体中携带诸如文件路径等奇怪的东西,这会让整个分享体系变得非常冗余,十分不优雅。但我又偏有分流这样的需求怎么办呢?非常简单,我们可以通过 NekoRay 间接地为代理核心提供相关的配置信息(相关操作其实也非常简单,自己玩一玩就会了,具体操作我会在下文的进阶部分补充)。

手动编辑

有关 hysteria 服务端的配置介绍及最佳实践可见另一篇博客

相关配置的注释及生成后的面板预览结果如下图所示:

NekoRay - Hysteria 配置生成面板
NekoRay - Hysteria 配置生成预览

此处出现了被称为 替换串 的占位符,即 %mapping_port%%socks_port% ,不需要修改,保持默认即可。

启动 hysteria 节点

初次使用时,选中目标节点,并依次点击「程序 – 系统代理 – 启动系统代理」。当控制台开始持续输出来自 hysteria-core 的日志信息时,说明节点启动成功,你可以访问 Google 或 YouTube 等站点进行行为校验。

image-20220826081449835

值得一提的是,NekoRay 的 <系统代理启动> 及 <代理核心运行> 的业务是分离的,也即对着节点敲回车的作用是启动/重启代理核心,只有勾选「启动系统代理」后才能连接互联网,这点与 V2rayN 相似。

测试 hysteria 节点

在合理配置前置代理选项后,你可以将「节点激活 + 节点测试」集成到一个 action 中,这比 V2rayN 目前(~v5.32)的解决方案要更加优雅。

若你按照本文档介绍的步骤走,你只需要在默认分组状态下,依次点击「服务器 – 当前分组」即可调出测试控件的接口,如下图所示:

NekoRay 集成了一些主流的测试工具,直接运行「完整测试」即可。测试包含以下四个项目(点击跳转源码):

测试项目简介
Latency 延迟测试
下载速度测试使用代理下载 10MiB 文件,计算下载速度。
入口IP出口IP
NAT类型

常见的(玄学)速度测试分布如下:

  • 0~5 MiB/s,绝大多数免费节点,山路十八弯的自建节点

  • 4~6 MiB/s,优选IP,反代优选IP,机场普通节点,自建普通线路节点

  • ~10MiB/s,机场上游质量节点,自建优质线路节点,hysteria+自建普通线路节点

  • >18MiB/s,机场上游至最贵一档的机场节点,hysteria+自建优质线路节点(家宽 200Mpbs 起且服务端未限制 100Mbps 的下行速度)

  • 上不封顶,hysteria 一般用于普通或劣质线路的环境改善,在G口档做 UDP 发包是非常睿智的行为。

测试的输出结果如下图所示:

image-20220826083024670

我们在经典的 hysteria 代理拓扑中使用的是最简单的 QUIC 直连方案,也即入口地址 In 和出口地址 Out 是相同的,其值均为你的代理服务器的真实 IP。

需要注意的是,hysteria 的通信协议是基于 quic-go 实现的,TCPing 测试不可用。

进阶教程

(必读)官方文档:Nekoray-配置 - Matsuri & NekoRay

VPN模式

服务器组

NekoRay 以组的形式管理和编排代理对象,因此,所有的测试都是基于组进行的,即,所有组内节点都会被测。

[必读]分流策略

在 Windows 上,NekoRay 默认以全局代理的形式启动。因此,我们需要通过设置基础的路由策略来提升网上冲浪的体验,否则会有大量的代理流量被浪费,还会无端加大断流风险。

此处举个简单的例子说明设置分流的必要性。如果你使用过 Bilibili 你应该知道 B站番剧对「不同地区」用户有着不一样的版权策略,而界定「不同地区」用户的规则是基于「访客IP」编写的(目前),即,使用不同的 IP 访问 B站,推荐系统,搜索引擎,页面布局等服务的响应均有所不同。

  • US Global Proxy
image-20220831151213827
  • GEOIP-CN Bypass(简单理解为访问B站不用代理)
image-20220831151428355

访问国内站点却绕行国外代理除了在评论区装逼我想不出任何动机。由于本篇文章属于「入门介绍」,不过多深入自定义规则或高级路由分流策略之类的东西,只需要按照下图所示操作开启 NekoRay 预设的路由规则即可。

TL;TD

进入「首选项 – 路由 VPN 设置」,选择预设「绕过局域网和大陆」,确定保存,重启代理。

image-20220831152027353
You will to enjoy grander sight / By climing to a greater height.