← 戻る
BBR を有効化
輻輳制御を BBR、キュー規則を fq に変更し sysctl.d に書き込んで即時反映します。カーネル 4.9 未満では中断します。
root が必要
ワンライン実行
curl -fsSL https://www.moiu.cn/scripts/bbr-enable.sh | bashソース
#!/usr/bin/env bash
# 开启 BBR 拥塞控制
#
# 需要 root。写入 /etc/sysctl.d/99-bbr.conf 并立即生效,
# 同时把默认队列规则设为 fq(BBR 要它配合)。
# 内核低于 4.9 不支持 BBR,脚本会先检查再退出。
set -e
# 需要 root:下面的系统级改动都直接执行,不再逐条 sudo
if [ "$(id -u)" -ne 0 ]; then
echo '[!] 这个脚本需要 root 权限,请用 sudo 重新运行:'
echo ' curl -fsSL 脚本地址 | sudo bash'
echo ' 或已经下载到本地:sudo bash 本文件'
exit 1
fi
CONF=/etc/sysctl.d/99-bbr.conf
echo '====== 开启 BBR ======'
KERNEL=$(uname -r | cut -d. -f1-2)
MAJOR=$(printf '%s' "$KERNEL" | cut -d. -f1)
MINOR=$(printf '%s' "$KERNEL" | cut -d. -f2)
if [ "$MAJOR" -lt 4 ] || { [ "$MAJOR" -eq 4 ] && [ "$MINOR" -lt 9 ]; }; then
echo "[!] 内核 $KERNEL 低于 4.9,不支持 BBR"
exit 1
fi
if [ ! -d /proc/sys/net/ipv4 ]; then
echo '[!] 找不到 /proc/sys/net/ipv4,这看起来不是 Linux'
exit 1
fi
cat > "$CONF" <<'CONF_EOF'
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
CONF_EOF
echo "[*] 已写入 $CONF"
sysctl --system >/dev/null
echo ''
echo '====== 当前状态 ======'
echo " 队列规则:$(sysctl -n net.core.default_qdisc)"
echo " 拥塞控制:$(sysctl -n net.ipv4.tcp_congestion_control)"
if [ "$(sysctl -n net.ipv4.tcp_congestion_control)" = 'bbr' ]; then
echo ' [√] BBR 已启用'
else
echo ' [!] BBR 未生效,检查内核是否编了 tcp_bbr 模块'
fi
