桶装幺蛾子

变宝为废,变废为核废

「不道德」的 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 · 智慧的幺蛾子

用 Plymouth 替换开机日志

默认情况下,Arch Linux 开机会展示 Linux 内核和 systemd 的日志。尽管出现问题时用这些日志排查很有用,但是每次开机,都看到一堆文字滚动,夹杂着几个报错(没有内核签名啊,无法更新钥匙环啊),还是不大舒服。 Fedora 的开发者照着 Windows 和 macOS,搞了个 Plymouth:它可以像这几个操作系统一样,显示开机画面。正好本蛾子之前换到了 systemd-boot,可以默认禁用菜单,开机过程更加简洁了;现在再关掉日志,看起来也更舒服些。 那今天,就来装个 Plymouth 玩玩。 👄 安装 Plymouth 由于 Plymouth 已经进入 freedesktop.org 的官方资源,安装非常简单: sudo pacman -S plymouth 然后,为了让内核和 systemd 在启动时不要显示日志,需要修改一下内核参数。您如果使用 systemd-boot,可以修改启动条目 /boot/loader/entries/*.conf,在内核参数末尾添加: options ... splash quiet 若您还是会看见一些日志,那是因为 dmesg 显示了一些它认为「重要」的日志。添加或修改日志等级即可: options ... loglevel=3 0 是最严重的错误,而 7 是调试信息,3 基本上就是只显示报错。 您当然也可以复制一份条目,然后删除 splash 和 quiet 并填写 loglevel=7,添加参数 plymouth.enable=0 disablehooks=plymouth 禁用 Plymouth,作为调试启动参数。 您还需要将 Plymouth 添加到 mkinitcpio 的生成参数里,以便生成包含 Plymouth 的 initramfs。编辑 /etc/mkinitcpio.conf,找到以下行: HOOKS=(...) 在括号中添加 plymouth,记得与其他项目中间有空格。 ...

February 1, 2025 · 1 min · 智慧的幺蛾子

用 systemd-boot 替换 GRUB

systemd-boot 是一个易于配置的 UEFI 启动引导管理器。相比于更加常见的 GNU GRUB,它有以下优缺点: 轻量灵活,功能和界面都很精简,配置文件很好写(GRUB 的配置文件甚至需要 grub-mkconfig 转译)。 是一个原生的 EFI 应用程序,只使用固件功能。这导致了下一条的功能缺失。 缺乏 GRUB 的一些功能,例如不支持主题、不支持文件系统读写(FAT 等 EFI 固件支持的除外);对于 BTRFS 用户来说,还不支持直接从 BTRFS 子卷启动(只能写内核参数)。 似乎有些同学认为 systemd-boot 界面比 GRUB 好看。 对本蛾子来说,由于不需要 Windows 双启动,也不怎么使用 BTRFS 子卷启动的功能,systemd-boot 的功能足矣。因此,今天就来删掉 GRUB,安装 systemd-boot。 📦 安装 systemd-boot 在 Arch Linux 上,systemd-boot 是 systemd 的依赖,而后者又是 base 包组的依赖,因此您应当已经安装了 systemd-boot,可以通过 bootctl 配置。 首先,将 systemd-boot 安装到 /boot: sudo bootctl install systemd-boot 默认您的 ESP 分区是 /boot、/boot/efi 或 /efi。 如果您的输出中包括以下警告: ⚠️ Mount point '/boot' which backs the random seed file is world accessible, which is a security hole! ⚠️ ⚠️ Random seed file '/boot/loader/[SEED]' is world accessible, which is a security hole! ⚠️ 您可以先移除安装: ...

January 31, 2025 · 2 min · 智慧的幺蛾子

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

Caddy 虽好,但是要让它使用 Cloudflare API 处理 DNS 验证,还非得重新编译一次。而且,本蛾子发现 Caddy 直到目前都没有充足的第三方文档(尽管其官方文档很好),对于一些特殊需求到底该怎么写配置还是不甚清楚。因此,本蛾子决定换用另一个可以自动续期的 SSL 申请工具,综合一下 Caddy 的功能和 NGiNX 的性能和资料优势。 很明显,这个工具就是 acme.sh。 😁 这个长得很像网址的名称确实是一个网址,直接重定向到 GitHub 仓库。 📦 安装 为了不要污染用来日常操作的账号,也防止 sudo 权限被滥用,我们新建一个普通用户: sudo useradd -m certbot sudo passwd certbot 🤖 Certbot:你礼貌吗? 然后,使用 acme.sh 的安装脚本安装。注意这里不需要 Root 权限,安装位置也在主目录下: 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 位置: . .bashrc 如果您打算使用 Let’s Encrypt,请执行: acme.sh --set-default-ca --server letsencrypt 如果您设置了邮箱,打算就用 ZeroSSL,就不必执行。 ...

January 26, 2025 · 1 min · 智慧的幺蛾子

giffgaff 英国手机号体验

本蛾子身边有几位大佬,对于科学上网安全基本是躺平状态——在国产手机上开 v2rayNG、不分流用 360 和 QQ、微信、用 +86 手机号注册电报。本蛾子虽然无法完全保证自己的信息是安全的,但是还是想尽量分离国内外账号,最起码让帽子叔叔难查一点儿 😁 英国有家神奇的运营商 giffgaff,隶属于三大运营商之一的 O2,他们的运营方式绝无仅有——「办理 SIM 卡」这个环节压根儿不存在,甚至不需要登录,直接填写地址,全球范围内就给您免费邮寄一张。然后,您拿到卡再激活,充值获得一个号码。 这个运营方式在国外也就是比较新奇,但是对于国内的本蛾子,可太棒了: giffgaff 毕竟是正经运营商,可以在国内漫游,那就可以接受验证码。 不像 Google Voice 和 Talkatone 那样风控过度严格。 最关键的是,它甚至还有「Pay as You Go」套餐,即预充值,然后用多少扣多少费,0 月租(收短信不要钱,发短信每条 0.3 英镑,半年保活一次即可)。 这似乎是目前解决「分离」问题的最优解了。 📱 获得 SIM 卡 第一个问题,虽然「全球」当然是包括中国的,SIM 卡也确实可以跨洋邮寄到中国(甚至还是免费的?!),但是由于是平信,不光时间会很长(据说 15 到 20 天),而且「最后 100 公里」还很可能丢信件。 于是,本蛾子选择到拼夕夕上随便找了一家最便宜的(反正东西都是一样的),然后快递到家,2 天,9 块 9 搞定 ✌️ 😁 如果您决定要从官网上直接获取,网上教程很多,可以自己搜一搜。 商家很明显就是个人,很幸运可以收到那些粉红色的邮件,甚至还有邀请链接充 10 送 5。 拿到 SIM 卡,还需要激活才能使用。激活链接就在 giffgaff 网站上,需要充套餐,最低的是 10 英镑。您当然可以使用支持 VISA 的信用卡支付,但是如果您没有,也可以到淘宝上搜搜,有很多旅行代充,会给您一个折扣码,按照商家指导直接输入即可。 按照目前汇率,10 英镑是 89 人民币,代充是 98 元。整个过程多花了 20 块,但是少了很多麻烦,还是挺值得的 😊 😄 每半年保活一次,一条短信 0.3 英镑,那就可以用 15 年左右,估计到那个时候早就把这事儿给忘了。 ...

January 21, 2025 · 2 min · 智慧的幺蛾子

金光闪闪的新代理协议: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 · 智慧的幺蛾子

伪造 SNI 突破审查

我国智慧勤劳的劳动人民前段时间搞出来一个很新的科学上网方式——伪造 SNI。实现方法十分令人震惊:只需要给浏览器启动时加上一段参数,就可以免服务器访问谷歌、X、维基百科等等站点。例如: 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 · 智慧的幺蛾子

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

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

January 10, 2025 · 2 min · 智慧的幺蛾子

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、分流、(基础)去广告等,至于节点链接,倒成了配置文件中不太重要的一部分了。下面本蛾子参考了一些链接和项目,为行文流畅就不一一列出角标了,一并在文末引用。 您书写的配置文件应当保存在任意名称的 .yaml 文件中,在 FlClash 中这样引用: ...

December 29, 2024 · 4 min · 智慧的幺蛾子

使用 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 · 智慧的幺蛾子