“不道德”的 Hysteria2 协议

因为 Xray 内核面板扛把子 3X-UI 作者宣布停更、Xray 内核长期以来不支持 TUN(而 v2rayN 的双核心解决方案在词元这儿不大能用),词元最近把服务端和客户端都换成了 sing-box。 要说 sing-box 的配置文件是真的好写,主要是它对 Xray 和 Mihomo 的写法都做了兼容处理,词元写惯了 Xray,转换过去没有压力,之前使用的 VMess、WS、TLS 和 CDN 的保险方案很快就转移过去了。 💡 如果您感兴趣,可以参考这个模板:chika0801/sing-box-examples,需要自行填写 UUID 和 Path,可以参考之前词元那则脚本搭建的博客。 但是今天词元不是要讲怎么把这协议迁移过去。毕竟,只要套上 CDN 且有最基本的加密,就基本不可能被封——原因不在于协议、特征什么的,而是 GFW 不会封禁 CDN 的 IP,“代价”太大。 词元想聊的是 Hysteria2,一个其实也不算很新的协议。 🤬 Hysteria2 是啥 Hysteria2 是一个以 UDP、QUIC 和 HTTP/3 为基础的协议。说它的技术本质,词元也搞不清(您可以去看看文档),但有几个基本特点是很好说清的: 🎭 伪装成 HTTP/3 流量,理论上来说比第一代 Hysteria 特征减少。但是很可惜的是,HTTP/3 和 QUIC 本身就是特征,尤其是在某些地区,运营商会干扰、拦截这些流量(俗称“Q 死”)。 📦 使用 UDP 包,且比普通 TCP 和 BBR 算法 TCP 的丢包重发策略更激进: 普通 TCP 在丢包率高时,将其等同于“带宽小”,减速发包。 BBR 算法 TCP 在丢包率高时,以维持带宽稳定为目标,加速发包。 Hysteria2 则主动“抢占”带宽,按 Brutal 算法增加包的数量,尽力达到用户设定的带宽。 ☁️ 不能套 CDN,主流的 CDN 几乎没有支持 UDP 这种“暴力”的包,何况支持 HTTP/3 的 CDN 也很少。 第二点导致了很多争议,因为 Brutal 算法在努力达到用户设定的带宽时,有可能出现多倍发包的情况,而这在流量高峰期会导致网络更加拥挤。Hysteria2 和 Xray 开发者各执一词,前者认为这只是达到运营商和用户签订的“流量协议”的一种手段,而后者认为这会导致骨干网更加拥挤,影响其他协议的用户。 ...

February 2, 2025 · 2 min · 410 words · 词元

金光闪闪的新代理协议:XHTTP

三个月之前,词元发布了一则非常详细的 VLESS、WebSocket、TLS 加上 CDN 的代理搭建指南(搭建自己的代理服务器),给出了词元当时认为最安全的方案。 事实证明,这个方案确实很安全,元旦期间词元用的 Cloudflare Anycast IP 被封了,但词元的服务器 IP 依然坚挺,可以正常访问(改 hosts 可以继续使用 CDN)。而这个安全性,主要就来自于 CDN 的加持,这样可以最大限度地防止 IP 泄露,将自己的流量隐藏在 CDN 边缘服务器的巨量吞吐中,被封也就无从谈起了。 上个月,词元又在 XTLS/Xray-core 的讨论中看到维护者 RPRX 提供了一种他十分自豪的方案:XHTTP。光是从他宣传 XHTTP 的力度(超长“简”介、写进个人主页)上来看,这个协议很牛。 之前词元嫌麻烦,原本的“三驾马车”协议也很够用,而且词元也不能确定这个协议抗封锁的有效性。(词元并不是科学上网领域的专家!)但是最近看到不良林也发布了搭建这种协议节点的视频,说实话有点心动了。借着 L 站上白嫖的节点,词元删掉了原本搭建使用的脚本,来试试这个金光闪闪的新协议! “……这下又开启了一个崭新的时代……”——RPRX ✨ 这是什么 词元与上一篇文章相反,先来讲讲 XHTTP 的原理。因为,来这儿看先进技术的您估计已经有了能用的代理节点,看这则博客的目的大概是改进一下安全性,肯定要先知道凭什么做出改变嘛。 🫣 永不被封的 meek 协议 故事的开端是一个叫作 meek 的协议。这个协议原本是 TOR 的一种混淆处理方式,在 TOR 的实现中模仿了 Azure 的流量,用以防止封禁。 TOR 浏览器中也提到,这种方法虽然能在“重度”审查地区使用,但是会非常缓慢。 半年之前,Xray 的维护者在内核中实现了 meek 协议。其关键,就在于将 VLESS 节点信息伪装成普通 HTTP 流量,采用标准格式。正常的 HTTP 流量中,服务端在没有客户端的请求的情况下,不能向其主动发送数据包。为了克服这一问题,meek 在发送请求之后,不能从服务端得到数据,而是会再次发送请求,获得服务端已经从客户端请求的地址中获取的数据。 绕晕了?列个表: 浏览器:访问 hi.bug-barrel.top。 客户端代理:拦截请求,先用 VLESS 加密,然后包进正常 HTTP 数据包中,发送给服务端代理。 过墙(内到外),检测到正常 HTTP 数据包。 服务端代理:收到 HTTP 数据包,解包;里面是 VLESS 数据包,解包;哦,原来是 hi.bug-barrel.top,发送给目标服务器。 目标服务器:对服务端代理慢慢发包,正在传输。 客户端代理:过一段时间,发包问服务端代理“好没好啊”,包装方式相同。 过墙(内到外),检测到正常 HTTP 数据包。 服务端代理:还没有收到目标服务器发的包,回复一个空数据包,包装方式相同。 重复以上三步,直到服务端代理收到目标服务器的数据包,服务端代理回复有内容的数据包。 就这样,客户端反复发包,服务端反复回复(还得严格按照顺序),直到数据传输完成。 ...

January 20, 2025 · 3 min · 545 words · 词元

伪造 SNI 突破审查

我国智慧勤劳的劳动人民前段时间搞出来一个很新的科学上网方式——伪造 SNI。实现方法十分令人震惊:只需要给浏览器启动时加上一段参数,就可以免服务器访问谷歌、X、维基百科等等站点。例如: 1 google-chrome-stable --host-rules="MAP *google* google.cn,MAP *youtube.com google.cn,MAP *.ggpht.com google.cn,MAP i.ytimg.com google.cn," --host-resolver-rules="MAP google.cn 82.118.16.109," --test-type --ignore-certificate-errors 用这段命令行启动 Chrome,就可以直接访问 google.com 和 youtube.com,速度还挺快(虽然 YouTube 不能播放视频)。 要知道,上一次我们能做到这一点,大概是 10 年前;GFW 还只使用 DNS 污染的时候,可以通过设置一个加密 DNS,实现自由访问。大规模的 IP 封禁现在已经成了 GFW 封禁手段的主流,特别是 HTTPS 普及、无法过滤页面上的内容之后,无需一部境外服务器的方法就基本绝种了。 当然,部分站点(例如 GitHub、LINUX DO)依然可以通过 DNS 设置解决访问问题,因为它们都没有被完全封禁,仅仅使用了 DNS 污染和封禁部分 Anycast IP 的方式阻碍连接。 那这到底是怎么回事?和 1 月 1 日发生的小规模“漏风”事件是否有关?词元也来看看。 🙅‍♂️ 免责申明 本文采用了一些来自网络的资料,因为范围实在太广,词元又没有记录来源的好习惯,无法一一列出,若您感觉某一段内容很熟悉,不必怀疑,大概就是您读或写过它。如果您比较介意词元的行为,敬请邮件告知,词元将添加对您的内容的引用。 本文所有内容与突破中华人民共和国国家防火长城无关,只适用于突破类似 OpenGFW 等第三方防火长城实现,也请读者承担自己的责任,勿以 GFW 作为实验对象,谢谢。 🔧 实现方法 首先我们先来试一试效果。如果您是 Linux 用户,可以直接使用上文所述的那个命令启动 Chrome,然后看看是不是可以正常访问 Google 了;如果您是 Windows 用户,请修改 Chrome 快捷方式,将那段参数添加在原本的命令之后。 ...

January 20, 2025 · 1 min · 175 words · 词元

Clash 配置文件简述

最近词元发现之前搭建的代理,访问部分国内网站的时候不光速度很慢,而且有时候会报 PR_END_OF_FILE_ERROR(无法确定内容完整性),就是远程,特别是 CSDN,全站都无法访问。 😮‍💨 唉:后来发现其实是服务端 WARP 的问题,跟 v2rayA 一毛钱关系都没有。 词元现在使用的 v2rayA 虽然安装起来很方便(Arch Linux CN 有打包),但是对于规则的支持并不算好,并且开启、关闭、切换节点的速度也不尽人意。在网上搜索一通,似乎眼下最完善的内核是 Clash 系列的后继者 Mihomo,因此词元就用它来学习一下如何书写 Clash 配置文件。 💻 客户端选择 Clash 系的客户端在 AUR 上基本全部都有打包。根据词元的测试,似乎还在开发且可用性比较高的,只有 Clash Verge Rev 和 FlClash,而后者的 UI 设计词元看着非常舒服,因此本文就以 FlClash 作为测试客户端。 首先对 FlClash 的软件设置进行调整。虽然诸多 Clash 系客户端使用同一个内核,但是其 UI 设计却千差万别。FlClash 的界面大概是这样的。 在 Tools 栏目中,主要是软件本身和覆写配置文件的选项,前者是主题、日志、自动启动等本地定义的选项,不出现在配置文件中,因此我们首先来完成对其的设置。覆写配置文件的设置主要针对使用远程配置文件(例如机场)的用户,方便修改配置文件。 选项大部分您都应该能理解,说几个比较迷惑的: Logcat:就是日志功能,记录您使用代理访问的网站,关闭之后不会记录,但是似乎需要手动删除之前的记录(位于您的主目录下)。 Auto lost connections:在切换节点之后切断当前存在的连接,开启之后换区域会更加彻底,但是您的下载会被终端。 Only statistics proxy:只对通过的流量进行记录,这时候 FlClash 就变成了一个网络监测工具。 当然这个栏目还有其他功能,比如设置语言、主题、备份之类的,就请您自己探索了。 ⚙️ 配置文件 这当然就是本文的重点了!通过 Clash 配置文件,您可以方便地修改 DNS、分流、(基础)去广告等,至于节点链接,倒成了配置文件中不太重要的一部分了。下面词元参考了一些链接和项目,为行文流畅就不一一列出角标了,一并在文末引用。 ...

December 29, 2024 · 5 min · 962 words · 词元