装了 BBR,不等于真的在用:Actions-bbr-v3 从安装到回滚

装了 BBR,不等于真的在用:Actions-bbr-v3 从安装到回滚

适用环境:Ubuntu 24.04+、Debian 12+|x86_64 / aarch64|VPS、云服务器、独立服务器

很多人改完一条 sysctl 命令,就以为 BBR 已经生效。

但如果当前内核没有 BBRv3,改到的只是配置,不是算法本身。

Actions-bbr-v3 提供了带 BBRv3 补丁的 Debian 内核包,以及一个交互式管理脚本,可以完成内核安装、状态检查、队列算法切换、TCP 参数调优和配置清理。

下面按一台新 VPS 的实际使用顺序说明。

先确认能救援,再动内核;先验证状态,再谈调优。


一、安装前先确认环境

项目 要求
系统 Ubuntu 24.04+ / Debian 12+
架构 x86_64 / aarch64
包管理器 apt-get
引导方式 建议使用 GRUB

Alpine Linux 暂不支持,因为项目发布的是 Debian .deb 内核包。

树莓派、NanoPi 等依赖 U-Boot 或厂商定制内核链路的设备,也不建议直接使用这套安装流程。

安装前请确认:

  • VPS 控制台或救援模式可用;

  • 旧内核仍然可以启动;

  • 当前用户拥有 root 权限,或可以使用 sudo;

  • 已经为重要数据准备好备份。

脚本运行时会自动检查并尝试安装 curl、wget、jq 等依赖。


二、一条命令安装 BBRv3

在 VPS 终端执行:

bash <(curl -fsSL https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/install.sh)

脚本会自动完成以下工作:

  1. 检查系统版本和 CPU 架构;

  2. 从 GitHub Releases 获取匹配的内核包;

  3. 安装非 debug 版本的 .deb 内核;

  4. 尝试更新 GRUB;

  5. 提示是否重启系统。

进入菜单后,选择:

1. 安装或更新 BBR v3 最新版

接着选择内核类型:

  • BBR v3 标准版:适合日常使用,建议从它开始;

  • BBR v3 Max:采用更激进的吞吐策略,只建议用于自有链路测试。

首次运行后,脚本还会尝试安装快捷命令:

b

以后直接输入 b 即可进入管理菜单。这个快捷命令每次都会从 GitHub 拉取最新版脚本,不使用本地缓存。

GitHub API 限流

如果提示 API rate limit,可以临时设置 GitHub Token:

export GITHUB_TOKEN=你的_GitHub_Token
bash <(curl -fsSL https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/install.sh)

Token 不要放进公开脚本、截图或群聊。


三、重启后先验证状态

安装完成后,按提示重启系统。

重新运行:

b

选择:

3. 检查 BBR v3 状态

重点确认:

  • tcp_bbr 模块版本为 3;

  • 当前 TCP 拥塞控制算法为 bbr;

  • Dirty Frag 相关安全规则已经写入。

也可以手动检查:

uname -r
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
modinfo tcp_bbr 2>/dev/null | grep '^version:'

# 可选:查看当前网卡实际队列
tc qdisc show

通常应看到:

net.ipv4.tcp_congestion_control = bbr
version: 3

注意,内核包安装完成不等于当前系统已经切换到新内核。没有重启就检查,看到的可能仍然是旧内核。


四、队列算法怎么选

脚本提供四种 BBR 与队列算法组合:

菜单 组合 使用建议
4 BBR + FQ 日常首选,建议先从这里开始
5 BBR + FQ_CODEL 可测试更重视队列延迟的场景
6 BBR + FQ_PIE 作为另一种队列算法备选
7 BBR + CAKE 适合单独做队列策略测试

选择后,脚本会立即应用配置,并询问是否永久保存到:

/etc/sysctl.d/99-joeyblog.conf

对于需要内核模块的队列算法,脚本还会尝试加载对应的 sch_* 模块,并按需写入:

/etc/modules-load.d/joeyblog-qdisc.conf

没有哪个选项天然“越激进越快”。建议先用标准 BBRv3 + FQ 记录基线,然后一次只调整一个变量,比较吞吐、延迟、重传率和业务稳定性。


五、亚太线路调优:菜单 8

如果服务器与用户之间是比较明确的亚太线路,可以尝试:

8. 亚太机器 TCP 调优

该功能会立即应用,并把以下参数写入:

/etc/sysctl.d/99-joeyblog.conf
net.ipv4.tcp_wmem = 4096 16384 12582912
net.ipv4.tcp_rmem = 4096 131072 33554432
net.ipv4.tcp_limit_output_bytes = 4194304
net.ipv4.tcp_slow_start_after_idle = 0

这是一组固定值,不会根据你的带宽自动变化。应用前建议先记录原来的参数,尤其是内存较小的 VPS。


六、不确定 buffer 怎么设?使用菜单 10

菜单:

10. BBR v3 智能带宽优化

它的处理流程大致分为三步。

第一步,测量带宽。
脚本优先安装并运行 Ookla 官方 Speedtest CLI 1.2.0,获取上传和下载速度。如果系统中存在 Python 版 speedtest-cli,脚本会先尝试移除,避免输出格式不兼容。

第二步,填写真实 RTT。
你需要手动输入业务链路的实际延迟,并选择亚太、美欧,或手动 RTT + buffer 档位。可以参考 v2rayN 的链路延迟。

不要把 Speedtest 测速节点的 Ping 当作业务 RTT。测速节点离服务器很近,不代表真实用户访问路径也一样。

第三步,写入参数。
脚本会根据上传带宽、地区档位和机器内存上限计算 TCP buffer,并自动启用:

BBR + FQ

同时写入收发缓冲区、tcp_limit_output_bytes 和空闲慢启动参数。

线路选项中的 RTT 只是参考:

线路 脚本提示
亚太 通常小于 100ms
美欧 通常 150-300ms
手动 按实际线路填写 RTT,再选择 buffer 档位

如果测速失败,脚本会回退到手动输入上传带宽。尽量填写服务商标称值或稳定实测值,不要为了得到更大的 buffer 随意夸大带宽。


七、BBR v3 Max 和“疯批模式”要慎用

BBR v3 Max 会提高 Startup、ProbeBW 和拥塞窗口策略的进攻性。

它适合自有链路的吞吐测试,不建议直接用于日常生产。

菜单 12 的“BBR v3 疯批模式”风险更高。它会强制使用 bbr + fq,提高缓冲区、网络 backlog 和发送队列,并把当前默认出口网卡的 txqueuelen 调高到 100000。

这种配置可能提高短时单向测速结果,但也可能带来:

  • 更高的重传率;

  • 更明显的延迟抖动;

  • 更长的排队延迟;

  • 更高的内存占用;

  • 连接稳定性下降;

  • 对其他连接不公平。

它只适合短时间的自有链路测速挑战。测试结束后,建议选择菜单 11 清理网络优化配置,必要时重启,再恢复到标准配置。


八、清理配置和卸载内核不是一回事

菜单 作用
11 清空网络优化配置 删除脚本写入的 sysctl 优化项和 qdisc 模块加载文件
9 卸载 BBR 内核 卸载包名含 joeyblog 的内核,并尝试更新引导配置

菜单 11 不会卸载内核,也不会删除 Dirty Frag 安全规则。部分运行中的参数可能要在重启后才完全恢复。

菜单 9 卸载后建议重启。但在执行前,请确认系统还有一个可以启动的旧内核,尤其不要在没有控制台或救援入口的情况下盲目删除当前运行内核。


九、安全规则与 CVE 检测

脚本启动时会维护:

/etc/modprobe.d/99-joeyblog-security.conf

其中包含对 esp4、esp6 和 rxrpc 的黑名单与禁止安装规则,用于收敛 Dirty Frag 相关风险面。

如果你的服务器依赖 IPsec、ESP 或 RXRPC,请先评估这些规则对现有业务的影响。

项目还提供 CVE-2026-31431 检测脚本。它只检测,不利用:

command -v python3 >/dev/null 2>&1 || (sudo apt update && sudo apt install -y python3)
curl -fsSL -o cve_2026_31431_detector.py https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/cve_2026_31431_detector.py
chmod +x cve_2026_31431_detector.py
sudo python3 cve_2026_31431_detector.py

检测器会检查内核配置、algif_aead 是否加载、AF_ALG AEAD 接口是否可用,以及 ESP/RXRPC 相关状态。

新构建内核会在配置侧关闭:

# CONFIG_CRYPTO_USER_API_AEAD is not set

如果检测结果显示“未知”,不要直接当成“已安全”,应继续核对当前内核配置和补丁级别。


十、常见问题

旧系统被拒绝安装怎么办?

这是脚本对 Linux 7.x 主线内核的保护。最低支持 Ubuntu 24.04+ 或 Debian 12+、Debian 12+。旧系统仍可使用状态检查、网络调优、清理和卸载功能,但不建议绕过拦截强行安装。

选择 CAKE 或 FQ_CODEL 时提示不可用怎么办?

当前内核可能没有对应的 sch_* 模块,云厂商也可能限制网卡队列操作。先使用菜单 4 的 FQ,再通过 tc qdisc show 查看实际状态。

Speedtest 测速失败怎么办?

脚本会提示手动输入上传带宽。填写稳定、可信的带宽值,然后继续选择线路和 RTT 档位。

调优后没有明显变化怎么办?

先确认当前运行内核、拥塞控制算法和实际 qdisc,再进行前后对比。网络调优不会保证固定提速,线路质量、对端服务器、拥塞情况和业务协议都会影响结果。


最后说两句

Actions-bbr-v3 的构建策略是:

BBRv3 补丁固定,Linux stable 内核版本跟随更新。

GitHub Actions 会分别构建 x86_64、arm64、标准版和 Max 版,并发布 Debian .deb 内核包,同时拒绝 debug 内核包。

本文核对时,仓库 Releases 中可见的最新版本为 7.2.4。版本会继续变化,安装时请使用动态入口,不要把文章里的版本号当成永久固定值。

先验证,再调优。

先保留回滚路径,再追求吞吐。

项目地址:

https://github.com/byJoey/Actions-bbr-v3

**免责声明:**内核升级可能导致启动失败、网络异常或数据损失。使用前请确认 VPS 控制台、救援模式或旧内核启动项可用。由本项目构建或安装的内核造成的后果,由使用者自行承担。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容