<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TCP BBR 永久启用：脚本使用与验证说明]]></title><description><![CDATA[<h1>TCP BBR 永久启用：脚本使用与验证说明</h1>
<blockquote>
<p dir="auto">适用对象：Linux 服务器（需内核支持 tcp_bbr）。本文讲解 <code>启用BBR.sh</code> 在支持 BBR 的 Linux 服务器上的完整使用流程：作用、执行步骤、验证方法与恢复方式。文中命令可直接在<strong>你自己的服务器</strong>上执行验证。</p>
</blockquote>
<h2>一、BBR 是什么，为什么要启用</h2>
<p dir="auto">BBR（Bottleneck Bandwidth and RTT）是 Google 提出的 TCP 拥塞控制算法，与传统的 CUBIC 相比，它不再以"丢包"作为减速信号，而是主动探测瓶颈带宽与往返时延，在高延迟、高丢包、跨国链路上通常能显著提升吞吐与稳定性，对代理/VPN（x-ui）、下载站等长连接场景收益明显。</p>
<h2>二、脚本执行流程</h2>
<p dir="auto"><img src="https://wlite.cn/assets/uploads/bbr-workflow-v3.png" alt="TCP BBR 永久启用流程" class=" img-fluid img-markdown" /></p>
<p dir="auto">脚本整体分 <strong>预检 → 备份 → 写入 → 应用 → 验证</strong> 五步，任何一步失败都会提示可用 <code>恢复.sh</code> 还原：</p>
<ol>
<li><strong>预检</strong>：检查 root 权限；<code>modprobe tcp_bbr</code> 加载模块并确认可用算法列表含 bbr，内核不支持则直接退出。</li>
<li><strong>独立备份</strong>：在 <code>/var/backups/bbr-XXXXXXXX</code> 创建本次专属目录，保存修改前的两个目标配置文件与当前拥塞控制算法，并自动生成 <code>恢复.sh</code>。可重复执行，每次独立备份互不干扰。</li>
<li><strong>写入持久配置</strong>（两个文件，开机自动生效）：
<ul>
<li><code>/etc/modules-load.d/99-xui-bbr.conf</code> → 内容 <code>tcp_bbr</code>，开机加载内核模块；</li>
<li><code>/etc/sysctl.d/99-xui-bbr.conf</code> → <code>net.ipv4.tcp_congestion_control = bbr</code>，新建 TCP 连接默认使用 BBR。</li>
</ul>
</li>
<li><strong>立即应用</strong>：<code>sysctl -p</code> 使配置即时生效，<strong>无需重启服务器、x-ui 或论坛</strong>。</li>
<li><strong>验证</strong>：确认当前算法已切为 bbr，并扫描其他位置是否存在冲突的拥塞控制配置。</li>
</ol>
<p dir="auto">脚本<strong>不会</strong>：改动网卡队列算法、重启任何服务、修改论坛数据库/帖子/内容、自动升级内核。它只碰上面两个配置文件。</p>
<h2>三、脚本源码（可直接复制使用）</h2>
<p dir="auto">将以下完整脚本保存为 <code>启用BBR.sh</code>，在目标服务器以 <code>root</code> 或 <code>sudo bash 启用BBR.sh</code> 执行：</p>
<pre><code class="language-bash">#!/usr/bin/env bash
# 在 Linux 服务器上以 root 执行：sudo bash 启用BBR.sh
set -euo pipefail

if [ "$(id -u)" -ne 0 ]; then
  echo '请使用 root 或 sudo 执行此脚本。' &gt;&amp;2
  exit 1
fi
for tool in modprobe sysctl install cp date; do
  command -v "$tool" &gt;/dev/null || { echo "缺少必要命令：$tool" &gt;&amp;2; exit 1; }
done
# 先确认内核支持 BBR，再修改持久配置。
modprobe tcp_bbr
case " $(sysctl -n net.ipv4.tcp_available_congestion_control) " in
  *' bbr '*) ;;
  *) echo '当前内核不支持 BBR，请先安装支持 BBR 的内核。' &gt;&amp;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" &gt; "$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" &gt;&gt; "$backup/new-files.txt"
  fi
done
cat &gt; "$backup/恢复.sh" &lt;&lt;'RESTORE'
#!/usr/bin/env bash
set -euo pipefail
[ "$(id -u)" -eq 0 ] || { echo '请以 root 执行。'; exit 1; }
backup=$(cd -- "$(dirname -- "$0")" &amp;&amp; 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" ] &amp;&amp; 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" &gt;&amp;2' ERR
install -d /etc/modules-load.d /etc/sysctl.d
printf 'tcp_bbr\n' &gt; "$module_file"
printf '# 开机启用 BBR，作用于新建 TCP 连接。\nnet.ipv4.tcp_congestion_control = bbr\n' &gt; "$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&gt;/dev/null || true
</code></pre>
<blockquote>
<p dir="auto">使用要点：脚本可重复执行，每次生成独立备份目录；不重启任何服务；失败时按提示运行该次备份目录中的 <code>恢复.sh</code> 即可还原。</p>
</blockquote>
<h2>四、验证命令</h2>
<pre><code class="language-bash"># 当前生效算法（预期输出 = 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
</code></pre>
<p dir="auto">注意事项：</p>
<ul>
<li>现有 TCP 连接可能仍走旧算法（CUBIC），<strong>重连或重新发起下载后再测</strong>；</li>
<li>下载测速请用相同文件、相近时间对比，BBR 不保证固定速度，瓶颈在下载源或线路时提升有限。</li>
</ul>
<h2>五、恢复方法</h2>
<p dir="auto"><strong>以后运行本脚本产生的备份</strong>（含 <code>恢复.sh</code>）：</p>
<pre><code class="language-bash">bash /var/backups/bbr-XXXXXXXX/恢复.sh   # XXXXXXXX 换成脚本输出的实际目录名
</code></pre>
<p dir="auto"><strong>撤销当前这次永久启用</strong>（回到 CUBIC，仅针对这两个新建文件；若之后改过请先检查内容）：</p>
<pre><code class="language-bash">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
</code></pre>
<h2>六、常见问题</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>现象</th>
<th>处理</th>
</tr>
</thead>
<tbody>
<tr>
<td>提示"请使用 root 或 sudo"</td>
<td>权限不足，改用 <code>sudo bash</code> 执行</td>
</tr>
<tr>
<td>"Module tcp_bbr not found"</td>
<td>当前内核缺模块，需换用支持 BBR 的内核或补装模块</td>
</tr>
<tr>
<td>执行中途失败</td>
<td>看输出定位原因，必要时运行该次备份目录里的 <code>恢复.sh</code></td>
</tr>
<tr>
<td>重启后算法不是 bbr</td>
<td>检查是否有其他 sysctl 配置覆盖（脚本末尾已列出扫描结果）</td>
</tr>
</tbody>
</table>
]]></description><link>https://wlite.cn/topic/460/tcp-bbr-永久启用-脚本使用与验证说明</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 03:22:05 GMT</lastBuildDate><atom:link href="https://wlite.cn/topic/460.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Sep 2026 16:59:30 GMT</pubDate><ttl>60</ttl></channel></rss>