TCP BBR 永久启用:脚本使用与验证说明
-
TCP BBR 永久启用:脚本使用与验证说明
适用对象:Linux 服务器(需内核支持 tcp_bbr)。本文讲解
启用BBR.sh在支持 BBR 的 Linux 服务器上的完整使用流程:作用、执行步骤、验证方法与恢复方式。文中命令可直接在你自己的服务器上执行验证。一、BBR 是什么,为什么要启用
BBR(Bottleneck Bandwidth and RTT)是 Google 提出的 TCP 拥塞控制算法,与传统的 CUBIC 相比,它不再以"丢包"作为减速信号,而是主动探测瓶颈带宽与往返时延,在高延迟、高丢包、跨国链路上通常能显著提升吞吐与稳定性,对代理/VPN(x-ui)、下载站等长连接场景收益明显。
二、脚本执行流程

脚本整体分 预检 → 备份 → 写入 → 应用 → 验证 五步,任何一步失败都会提示可用
恢复.sh还原:- 预检:检查 root 权限;
modprobe tcp_bbr加载模块并确认可用算法列表含 bbr,内核不支持则直接退出。 - 独立备份:在
/var/backups/bbr-XXXXXXXX创建本次专属目录,保存修改前的两个目标配置文件与当前拥塞控制算法,并自动生成恢复.sh。可重复执行,每次独立备份互不干扰。 - 写入持久配置(两个文件,开机自动生效):
/etc/modules-load.d/99-xui-bbr.conf→ 内容tcp_bbr,开机加载内核模块;/etc/sysctl.d/99-xui-bbr.conf→net.ipv4.tcp_congestion_control = bbr,新建 TCP 连接默认使用 BBR。
- 立即应用:
sysctl -p使配置即时生效,无需重启服务器、x-ui 或论坛。 - 验证:确认当前算法已切为 bbr,并扫描其他位置是否存在冲突的拥塞控制配置。
脚本不会:改动网卡队列算法、重启任何服务、修改论坛数据库/帖子/内容、自动升级内核。它只碰上面两个配置文件。
三、脚本源码(可直接复制使用)
将以下完整脚本保存为
启用BBR.sh,在目标服务器以root或sudo bash 启用BBR.sh执行:#!/usr/bin/env bash # 在 Linux 服务器上以 root 执行:sudo bash 启用BBR.sh set -euo pipefail if [ "$(id -u)" -ne 0 ]; then echo '请使用 root 或 sudo 执行此脚本。' >&2 exit 1 fi for tool in modprobe sysctl install cp date; do command -v "$tool" >/dev/null || { echo "缺少必要命令:$tool" >&2; exit 1; } done # 先确认内核支持 BBR,再修改持久配置。 modprobe tcp_bbr case " $(sysctl -n net.ipv4.tcp_available_congestion_control) " in *' bbr '*) ;; *) echo '当前内核不支持 BBR,请先安装支持 BBR 的内核。' >&2; exit 1 ;; esac backup=$(mktemp -d /var/backups/bbr-XXXXXXXX) module_file=/etc/modules-load.d/99-xui-bbr.conf sysctl_file=/etc/sysctl.d/99-xui-bbr.conf old_value=$(sysctl -n net.ipv4.tcp_congestion_control) printf '%s\n' "$old_value" > "$backup/previous-congestion-control.txt" for file in "$module_file" "$sysctl_file"; do if [ -e "$file" ]; then cp -a --parents "$file" "$backup" else printf '%s\n' "$file" >> "$backup/new-files.txt" fi done cat > "$backup/恢复.sh" <<'RESTORE' #!/usr/bin/env bash set -euo pipefail [ "$(id -u)" -eq 0 ] || { echo '请以 root 执行。'; exit 1; } backup=$(cd -- "$(dirname -- "$0")" && pwd) for file in /etc/modules-load.d/99-xui-bbr.conf /etc/sysctl.d/99-xui-bbr.conf; do if [ -e "$backup$file" ]; then cp -a "$backup$file" "$file" elif [ -f "$backup/new-files.txt" ] && grep -Fxq "$file" "$backup/new-files.txt"; then rm -f -- "$file" fi done sysctl -w "net.ipv4.tcp_congestion_control=$(cat "$backup/previous-congestion-control.txt")" echo '已恢复本次执行前的配置,新建连接使用恢复后的算法。' RESTORE trap 'echo "执行失败,可恢复配置:bash $backup/恢复.sh" >&2' ERR install -d /etc/modules-load.d /etc/sysctl.d printf 'tcp_bbr\n' > "$module_file" printf '# 开机启用 BBR,作用于新建 TCP 连接。\nnet.ipv4.tcp_congestion_control = bbr\n' > "$sysctl_file" chmod 644 "$module_file" "$sysctl_file" sysctl -p "$sysctl_file" [ "$(sysctl -n net.ipv4.tcp_congestion_control)" = bbr ] echo 'BBR 已启用并写入开机配置,无需重启服务。现有连接可能需重新连接。' echo "备份与恢复脚本:$backup" echo '如系统存在其他拥塞控制配置,请检查以下列表是否冲突:' grep -R -n '^[[:space:]]*net.ipv4.tcp_congestion_control' /etc/sysctl.conf /etc/sysctl.d /run/sysctl.d /usr/local/lib/sysctl.d /usr/lib/sysctl.d 2>/dev/null || true使用要点:脚本可重复执行,每次生成独立备份目录;不重启任何服务;失败时按提示运行该次备份目录中的
恢复.sh即可还原。四、验证命令
# 当前生效算法(预期输出 = bbr) sysctl net.ipv4.tcp_congestion_control # 内核支持的算法(输出应包含 bbr) sysctl net.ipv4.tcp_available_congestion_control # 实际运行 BBR 的连接(有活跃连接时有输出,无输出不代表失败) ss -tin | grep bbr # 确认两个配置文件在位 cat /etc/modules-load.d/99-xui-bbr.conf cat /etc/sysctl.d/99-xui-bbr.conf注意事项:
- 现有 TCP 连接可能仍走旧算法(CUBIC),重连或重新发起下载后再测;
- 下载测速请用相同文件、相近时间对比,BBR 不保证固定速度,瓶颈在下载源或线路时提升有限。
五、恢复方法
以后运行本脚本产生的备份(含
恢复.sh):bash /var/backups/bbr-XXXXXXXX/恢复.sh # XXXXXXXX 换成脚本输出的实际目录名撤销当前这次永久启用(回到 CUBIC,仅针对这两个新建文件;若之后改过请先检查内容):
rm -f /etc/modules-load.d/99-xui-bbr.conf /etc/sysctl.d/99-xui-bbr.conf sysctl -w net.ipv4.tcp_congestion_control=cubic六、常见问题
现象 处理 提示"请使用 root 或 sudo" 权限不足,改用 sudo bash执行"Module tcp_bbr not found" 当前内核缺模块,需换用支持 BBR 的内核或补装模块 执行中途失败 看输出定位原因,必要时运行该次备份目录里的 恢复.sh重启后算法不是 bbr 检查是否有其他 sysctl 配置覆盖(脚本末尾已列出扫描结果) - 预检:检查 root 权限;
-
,A admin 将此主题从 软件分享 移至此处

请使用微信扫一扫