跳到主内容

Linux 开启 BBR 教程:Ubuntu、Debian、CentOS 一键开启 BBR 加速与检测(2026 最新)

Linux 服务器怎么开启 BBR?这篇教程从零开始介绍 BBR 的作用、适用场景以及开启条件,包含 Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux 等主流发行版的完整开启命令,并提供一键检测脚本、验证方法、常见问题和回滚教程。无论是 VPS、云服务器还是独立服务器,都可以按照本文快速完成 BBR 配置,提升 TCP 网络传输效率。

GSProber · 主机测评编辑84 阅读
Linux 服务器怎么开启 BBR?这篇教程从零开始介绍 BBR 的作用、适用场景以及开启条件,包含 Ubuntu、D…

很多人在买了 VPS、云服务器,或者部署了站点、代理服务之后,第一反应就是想办法“提速”。如果你的业务主要依赖 TCP 传输,那么 BBR 往往是一个值得优先尝试的优化项。

  • 判断当前 Linux 系统是否支持 BBR
  • 用通用方法开启 BBR
  • 补充 Ubuntu、Debian、CentOS 的常用命令
  • 提供一个一键检测 BBR 状态的脚本
  • 告诉你怎么验证是否生效,以及怎么回滚

如果你只是想快速操作,可以直接看文中的“快速开启”和“分发行版命令”部分。

一、BBR 是什么,有什么用

BBR 是 Google 推出的 TCP 拥塞控制算法,全称是 Bottleneck Bandwidth and Round-trip propagation time

和传统的 cubicreno 相比,BBR 的思路不是一味保守地探测网络拥塞,而是尽量估算链路的实际带宽和往返时延,从而更高效地利用网络资源。

在下面这些场景里,开启 BBR 往往比较有意义:

  • 服务器带宽够用,但访问延迟偏高
  • 海外服务器面向国内访问,或者国内访问海外服务
  • 文件下载、上传、Web 服务、反向代理等 TCP 流量较多
  • 链路质量一般,希望连接速度更稳一点

不过也要提前说清楚,BBR 不是万能加速器。如果瓶颈在以下环节,开了 BBR 也不一定会有明显变化:

  • 带宽本身太小
  • 线路质量太差
  • CPU 或磁盘性能不足
  • 对端服务限速
  • 业务主要走 UDP,而不是 TCP

二、开启前需要满足什么条件

通常满足下面几个条件,就可以开始尝试:

  • Linux 内核版本建议 4.9 及以上
  • 系统支持 sysctl
  • 当前内核已经包含 bbr

常见可操作的发行版包括:

  • Ubuntu
  • Debian
  • CentOS
  • AlmaLinux
  • Rocky Linux
  • Fedora
  • openSUSE

如果你用的是比较新的云服务器镜像,大概率已经具备基本条件。

三、先检查系统是否支持 BBR

正式修改配置前,建议先做 3 个检查。

1. 查看内核版本

Bash
uname -r

如果输出类似:

Bash
5.15.0-105-generic

一般说明内核版本已经比较新。

如果版本明显低于 4.9,那就不要急着往下配了,先考虑升级内核,否则很可能根本没有 bbr 可用。

2. 查看当前使用的拥塞控制算法

Bash
sysctl net.ipv4.tcp_congestion_control

常见输出如下:

Bash
net.ipv4.tcp_congestion_control = cubic

这表示系统当前默认使用的是 cubic

3. 查看系统支持哪些拥塞控制算法

Bash
sysctl net.ipv4.tcp_available_congestion_control

如果输出中包含 bbr,例如:

Bash
net.ipv4.tcp_available_congestion_control = reno cubic bbr

那就说明当前系统已经支持 BBR,可以直接继续。

如果没有 bbr,常见原因一般是:

  • 内核版本过低
  • 当前内核没有编译 BBR 模块
  • 系统镜像过旧

这种情况下,正确思路不是反复改配置,而是先升级或更换内核。

四、通用开启方法

这是适用于大多数 Linux 发行版的通用方案。

1. 备份当前配置

Bash
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak

2. 编辑 /etc/sysctl.conf

可以用你熟悉的编辑器:

Bash
sudo nano /etc/sysctl.conf

或者:

Bash
sudo vim /etc/sysctl.conf

在文件末尾添加下面两行:

Nginx
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

这两项分别表示:

  • net.core.default_qdisc=fq:将默认队列调度算法设置为 fq
  • net.ipv4.tcp_congestion_control=bbr:把 TCP 拥塞控制算法切换为 bbr

3. 立即加载配置

Bash
sudo sysctl -p

如果返回结果类似:

Bash
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

通常就表示已经加载成功。

五、快速开启命令

如果你确认系统已经支持 bbr,也可以直接用下面这组命令快速完成配置:

Bash
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

这里要注意一点:如果你的 /etc/sysctl.conf 里本来已经存在同名配置,最好先手动检查,避免重复追加。

六、Ubuntu / Debian / CentOS 分发行版命令

下面把实际操作里最常见的几个系统单独列出来,方便你直接复制使用。

Ubuntu

先检查内核和可用算法:

Bash
uname -r
sysctl net.ipv4.tcp_available_congestion_control

如果结果里已经有 bbr,直接执行:

Bash
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo bash -c 'cat >> /etc/sysctl.conf <<EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF'
sudo sysctl -p
sysctl net.ipv4.tcp_congestion_control

Debian

Debian 的思路和 Ubuntu 基本一致:

Bash
uname -r
sysctl net.ipv4.tcp_available_congestion_control
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo bash -c 'cat >> /etc/sysctl.conf <<EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF'
sudo sysctl -p
sysctl net.ipv4.tcp_congestion_control

如果你使用的是比较老的 Debian 镜像,发现没有 bbr,就优先升级内核,不要直接硬套配置。

CentOS 7

CentOS 7 需要先特别注意内核版本,因为它的默认内核偏老。

先检查:

Bash
uname -r
sysctl net.ipv4.tcp_available_congestion_control

如果输出里已经有 bbr,那么同样可以直接开启:

Bash
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo bash -c 'cat >> /etc/sysctl.conf <<EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF'
sudo sysctl -p
sysctl net.ipv4.tcp_congestion_control

如果没有 bbr,通常说明当前内核不支持。这种情况下应先升级到支持 BBR 的新内核,再继续配置。

CentOS Stream / AlmaLinux / Rocky Linux

这些系统通常内核较新,处理方式和上面相同:

Bash
uname -r
sysctl net.ipv4.tcp_available_congestion_control
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo bash -c 'cat >> /etc/sysctl.conf <<EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF'
sudo sysctl -p
sysctl net.ipv4.tcp_congestion_control

七、如何验证 BBR 是否已经生效

配置完之后,不建议只看一眼 sysctl -p 的输出就结束,最好再做一次确认。

1. 查看当前算法

Bash
sysctl net.ipv4.tcp_congestion_control

如果看到:

Bash
net.ipv4.tcp_congestion_control = bbr

说明系统当前默认算法已经切换成功。

2. 查看 BBR 模块

Bash
lsmod | grep bbr

常见输出类似:

Bash
tcp_bbr                20480  12

这表示 BBR 模块已经加载。

有些系统上这里未必一定有明显输出,但如果 tcp_congestion_control 已经显示为 bbr,通常也说明它已经处于可用状态。

八、一键检测 BBR 状态脚本

如果你不想每次手动敲好几条命令,可以直接保存一个检测脚本。

脚本内容

Bash
#!/usr/bin/env bash

echo "==== BBR Status Check ===="
echo

echo "[1] Kernel Version"
uname -r
echo

echo "[2] Available Congestion Control"
sysctl net.ipv4.tcp_available_congestion_control
echo

echo "[3] Current Congestion Control"
sysctl net.ipv4.tcp_congestion_control
echo

echo "[4] Default Queue Discipline"
sysctl net.core.default_qdisc
echo

echo "[5] Kernel Module"
lsmod | grep bbr || echo "tcp_bbr module not shown"
echo

echo "[6] Result"
if sysctl net.ipv4.tcp_congestion_control 2>/dev/null | grep -q "bbr"; then
  echo "BBR appears to be enabled."
else
  echo "BBR does not appear to be enabled."
fi

使用方法

先创建脚本文件:

Bash
nano check_bbr.sh

把上面的内容保存进去,然后赋予执行权限:

Bash
chmod +x check_bbr.sh

最后执行:

Bash
./check_bbr.sh

如果你希望更方便,也可以直接放到 /usr/local/bin 下面,之后就能像命令一样使用。

九、怎么判断开启后有没有提升

很多教程只讲“怎么开”,却不讲“开完怎么看”。实际上,验证效果比开启本身更重要。你可以重点观察这几类变化:

  • 网站首包时间是否更快
  • 长距离 SSH、SCP、rsync 传输是否更稳定
  • TCP 下载速度是否更平滑
  • 高延迟场景下是否不容易突然掉速

如果你想做一个简单对比,可以在开启前后分别执行一次:

Bash
curl -o /dev/null -s -w 'time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n' https://example.com

然后比较连接建立时间、首包时间和总耗时是否有变化。

十、常见问题

1. sysctl -p 报错怎么办

通常先排查这几项:

Bash
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.core.default_qdisc

常见原因有:

  • 参数写错
  • 内核不支持 BBR
  • 当前系统不识别 fq
  • 配置文件里有重复或冲突项

如果 tcp_available_congestion_control 里压根没有 bbr,那重点就不是修配置,而是升级内核。

2. 开启后速度没变化,是不是没成功

不一定。这类情况很常见,因为网络性能的瓶颈未必就在 TCP 拥塞控制上。比如:

  • 本来线路就很好,优化空间很小
  • 对端服务有限速
  • 业务高峰时瓶颈在 CPU 或磁盘
  • 实际流量大多不是 TCP

所以正确判断方式不是“感觉快没快”,而是做前后对比测试。

3. 重启后配置失效怎么办

如果你已经把配置写进 /etc/sysctl.conf,理论上重启后仍然会生效。重启后可以再次执行:

Bash
sysctl net.ipv4.tcp_congestion_control

如果结果不是 bbr,需要进一步检查:

  • 是否有初始化脚本覆盖配置
  • 是否有面板程序或优化脚本重写了 sysctl 参数
  • 是否切换了内核

十一、如何关闭 BBR 或恢复默认设置

如果你想切回默认的 cubic,把配置改成下面这样即可:

Nginx
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=cubic

然后重新加载:

Bash
sudo sysctl -p

如果你前面已经做过备份,也可以直接恢复:

Bash
sudo cp /etc/sysctl.conf.bak /etc/sysctl.conf
sudo sysctl -p

十二、推荐的实际操作顺序

建议按下面这个顺序来:

  1. 先用 uname -r 检查内核版本
  2. 再用 sysctl net.ipv4.tcp_available_congestion_control 看是否支持 bbr
  3. 确认支持后,备份 /etc/sysctl.conf
  4. 写入 fqbbr 配置
  5. 执行 sudo sysctl -p
  6. 再用检测命令或脚本确认是否生效
  7. 最后再做一次前后测速对比

十三、总结

Linux 开启 BBR 的核心其实就是:

  1. 系统内核支持 bbr
  2. 配置文件里写入下面两行
Nginx
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

然后执行:

Bash
sudo sysctl -p

对多数新系统来说,这件事并不复杂,几分钟就能完成。真正值得你多花一点时间的,反而是“确认系统是否支持”和“开启前后是否真的有提升”。

教程很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安…

Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持

很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安装 Cloudflare 官方的 cloudflared,并配合 systemd 自启动,就能让整个系统通过 DNS over HTTPS(DoH)进行加密解析。

229 阅读

教程GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebR…

Cloudflare Workers 免费搭建开源远程桌面完整教程:无需 VPS,支持 WebRTC P2P、D1、KV、R2、浏览器远程控制、Windows 客户端和文件传输

GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebRTC P2P 直连,服务端仅负责 API、身份认证和 WebSocket 信令,不中转桌面视频流,大幅降低服务器带宽成本。项目支持 Cloudflare 免费套餐 部署,也可以使用 Docker 在 VPS 上自托管,内置 Windows 客户端、浏览器控制端、手机远程控制,支持 8 位设备 ID、OTP 一次性密码、永久密码、Ed25519 设备认证、JWT 身份验证、文件传输、剪贴板同步、自动重连 等完整功能。

307 阅读

教程如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare…

CloudDisk:基于 Cloudflare Workers 的免费个人网盘,无需 VPS、MySQL,支持 R2+D1+KV 一键部署

如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare Workers 的开源项目 CloudDisk 值得看看。整个系统运行在 Cloudflare 免费套餐上,文件存储使用 R2,数据库使用 D1,会话数据使用 KV,不需要 MySQL,也不需要服务器。支持多用户登录、文件夹管理、分享链接、在线预览、Office 文档查看、文本在线编辑、大文件断点续传、协作者权限管理等功能。无论是个人备份、开发者存放代码文件、团队共享资料,还是搭建自己的私有网盘,都可以直接部署到 Cloudflare,一键完成,几乎零维护成本,非常适合独立开发者、个人站长和轻量团队使用。

284 阅读

常见问题

怎么判断自己的 Linux 服务器是否已经支持 BBR?

先执行 uname -r 查看内核版本(建议 4.9 及以上),再执行 sysctl net.ipv4.tcp_available_congestion_control 查看输出中是否包含 bbr。如果没有,通常是内核版本过低或镜像未编译 BBR 模块,需要先升级内核而不是直接改配置。

Ubuntu、Debian、CentOS 开启 BBR 的核心命令是什么?

备份 /etc/sysctl.conf 后,在文件末尾追加:

INI
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

然后执行 sudo sysctl -p 使其立即生效。CentOS 7 因为默认内核偏老,需要先确认是否已支持 bbr,再执行相同操作。

开启 BBR 后怎么确认已经生效?

执行 sysctl net.ipv4.tcp_congestion_control,如果返回 bbr 即代表切换成功;再用 lsmod | grep bbr 检查模块是否已加载。文章还提供了一个一键检测脚本,可以同时输出内核版本、可用算法、当前算法和模块加载情况。

开启 BBR 后网速没有明显变化,是不是没生效?怎么回滚?

不一定是没生效,很可能瓶颈本来就不在 TCP 拥塞控制上(比如线路本身已经很好、对端限速,或者业务流量以 UDP 为主)。如果想回滚,把配置改回 net.ipv4.tcp_congestion_control=cubic 后执行 sudo sysctl -p,或者直接用之前备份的 /etc/sysctl.conf.bak 覆盖恢复。

评价与回复

无需登录;审核通过后公开显示。