适用环境: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)
脚本会自动完成以下工作:
-
检查系统版本和 CPU 架构;
-
从 GitHub Releases 获取匹配的内核包;
-
安装非 debug 版本的
.deb内核; -
尝试更新 GRUB;
-
提示是否重启系统。
进入菜单后,选择:
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 控制台、救援模式或旧内核启动项可用。由本项目构建或安装的内核造成的后果,由使用者自行承担。









暂无评论内容