“不道德”的 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 · 词元

使用 acme.sh 获取泛域名证书

Caddy 虽好,但是要让它使用 Cloudflare API 处理 DNS 验证,还非得重新编译一次。而且,词元发现 Caddy 直到目前都没有充足的第三方文档(尽管其官方文档很好),对于一些特殊需求到底该怎么写配置还是不甚清楚。因此,词元决定换用另一个可以自动续期的 SSL 申请工具,综合一下 Caddy 的功能和 NGiNX 的性能和资料优势。 很明显,这个工具就是 acme.sh。 😁 这个长得很像网址的名称确实是一个网址,直接重定向到 GitHub 仓库。 📦 安装 为了不要污染用来日常操作的账号,也防止 sudo 权限被滥用,我们新建一个普通用户: 1 2 sudo useradd -m certbot sudo passwd certbot 🤖 Certbot:你礼貌吗? 然后,使用 acme.sh 的安装脚本安装。注意这里不需要 Root 权限,安装位置也在主目录下: 1 curl https://get.acme.sh | sh -s email=you@example.com # 改为您的邮件 目前 acme.sh 已默认从 Let’s Encrypt 转为使用 ZeroSSL,后者需要邮箱地址进行注册,所以如果您打算使用默认设置,您需要添加 email=you@example.com 这一部分。如果您打算使用 Let’s Encrypt,可以忽略这个设置。 🏅 申请证书 首先要激活一下在 .bashrc 中添加的 $PATH 位置: 1 . .bashrc 如果您打算使用 Let’s Encrypt,请执行: ...

January 26, 2025 · 1 min · 180 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 · 词元

使用单板机为旧打印机添加局域网共享

词元家里有一部香橙派 Zero 3 一直在吃灰。 最近期末复习,大量打印试卷,只有主卧的台式机连着一台 HP LaserJet 打印机,不得不断断续续打扰我爸玩游戏去打印。他说,唉,要么买一台带 Wi-Fi 打印功能的新打印机吧!一看价格,动辄 2000 多。 于是词元在网上搜了搜,发现 HP 对 Linux 的驱动支持很好。在提出将打印机挪到词元的房间的要求并被拒绝之后,猛地想起来这部吃灰的香橙派,插电看看,更新一下包,还能用。遂记录一下操作方法供您参考 😁 🛜 Wi-Fi 上网 之前这部单板机一直都是直接插网线上网的,但由于房间里唯一的网线接口被我爸的台式机占据,不得不使用无线网络。 Armbian 竟然不自带 network-manager,先自己装一个。 1 2 3 sudo apt update && sudo apt upgrade sudo apt install network-manager sudo systemctl enable --now NetworkManager # 大小写敏感 然后用 nmtui 连接一下无线网。 1 sudo nmtui 然后选择你的 Wi-Fi 连接即可。 使用 ip addr 验证一下: 可以发现已经 DHCP 了一个 Wi-Fi IP 段的 IP。 词元家的路由器似乎不按照递增的顺序添加 IP,因此还需要设置一下静态 IP,以防失联: ...

January 10, 2025 · 2 min · 280 words · 词元

使用 SSH 公钥登录服务器并禁用密码

😠 太长不读:生成 SSH密钥,上传到服务器,然后禁用密码登录。(好像是废话) 🔒 生成 SSH 密钥 以下使用 $ 符号代表本机执行,> 符号代表服务器执行。 $ ssh-keygen # 旧版本需要添加 `-t ed25519` 参数 Generating public/private ed25519 key pair. Enter file in which to save the key (/home/YOUR_USER_NAME/.ssh/id_ed25519): # 可以自定义位置,也可以直接回车 Enter passphrase for "example" (empty for no passphrase): # 输入密码(不显示),不建议空密码 Enter same passphrase again: # 再输一遍 Your identification has been saved in id_ed25519 Your public key has been saved in id_ed25519.pub # 带有 .pub 的是公钥 The key fingerprint is: SHA256:SOME_STRANGE_STRING YOUR_USER_NAME@YOUR_HOST_NAME # 你的公钥指纹 The key's randomart image is: # 根据公钥生成的随机图像 +--[ED25519 256]--+ | SOME | | STRANGE | | IMAGE | | | | | | | | | | | | | +----[SHA256]-----+ $ ls .ssh id_ed25519 id_ed25519 # 可能还有其他文件 ⬆️ 上传到服务器 首先确保你当前可以使用密码登录一个非 root 的账号。 ...

December 15, 2024 · 2 min · 230 words · 词元

搭建自己的代理服务器

😡 太长不读版:使用 VLESS + WebSocket + TLS 方案、Cloudflare CDN 保护、Cloudflare WARP 解锁服务,在 RackNerd 的 10.99/yr 起廉价服务器上搭建一个安全、隐私、不易封的代理服务器。无广告,很详细。 本文如未特殊提及,货币单位均为美元。好吧,其实是会被 KaTeX 识别成数学公式…… 各位想必都已经混迹互联网十余载,对于这门技术有所耳闻,甚至自己购买过机场的订阅,在外面的世界已经遨游过一番了。今天词元就讲一个老生常谈的问题:老是觉得那些机场主都不可靠,我能不能自己搭一个? 首先在文章开始之前,国际惯例,对于几个常见误解进行声明: 词元没有收一分钱;相反,还因为购买服务器和域名花了 30 多,本文请放心食用; 搭建代理服务器是一个比较复杂的过程,您应当有最基本的 Linux 使用能力,对网络相关知识有一定了解; 无论是自建的代理还是机场,总有被封或跑路的一天,您的钱若打了水漂,词元不负责。 12 月 28 日更新:删去了大段大段没啥用的安全性分析。 👌 我知道了,开始吧 准备好了?让我们先看看大概要做什么。 购买 RackNerd 服务器; 购买 Namesilo 域名并用 Cloudflare 托管; 服务器初步设置,对于建站比较通用; 搭建代理服务器,此时您已经可以使用代理了; (可选)使用 Cloudflare 的 CDN 和 WARP 服务,对服务器前后流量进行优化; (可选)安全性和速度提升(0x06 节)。 词元趁着双十一购买了服务器和域名,总价 27.86(¥200.87,按照支付宝和 Stripe 的汇率),如果您不幸地在没什么活动的时候看到这篇文章,也可以选择到 RackNerd 社区去找找优惠,下面会说到。如果没有什么意外(不可能),搭建时间会在 30 到 40 分钟。 💵 花钱 其实词元一直都想哪次出国旅游,把台式机带着,找个角落连上网线和电源,就这么免费享受家宽加上超高性能。当然是瞎想了。 首先我们来到 RackNerd。活动期间会有首页横幅,点击进入即可。RackNerd 的老板据说是华人,除了北美常见节日有活动,双十一、春节等等国内节日也有,并且优点是续费可以原价。如果有可能的话,就在双十一前后买,这样到期之后重新购买,相当于免费换一个 IP。 ...

November 17, 2024 · 4 min · 826 words · 词元