#!/bin/bash # BBR Blast Smooth v2 - 自动识别系统/内存智能调优版 # 支持 Debian 11/12/13, Ubuntu 20.04/22.04/24.04 # 根据内存大小自动调整缓冲区参数 🚀 set -e # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}========================================${NC}" echo -e "${BLUE} BBR Blast Smooth v2 智能调优版${NC}" echo -e "${BLUE}========================================${NC}" echo "" # 检测系统 detect_os() { if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID VER=$VERSION_ID else echo -e "${RED}❌ 无法识别系统${NC}" exit 1 fi case "$OS" in debian) if [[ "$VER" =~ ^(11|12|13)$ ]]; then echo -e "${GREEN}✓ 检测到 Debian $VER${NC}" else echo -e "${RED}❌ 仅支持 Debian 11/12/13${NC}" exit 1 fi ;; ubuntu) if [[ "$VER" =~ ^(20.04|22.04|24.04)$ ]]; then echo -e "${GREEN}✓ 检测到 Ubuntu $VER${NC}" else echo -e "${RED}❌ 仅支持 Ubuntu 20.04/22.04/24.04${NC}" exit 1 fi ;; *) echo -e "${RED}❌ 不支持的系统: $OS${NC}" exit 1 ;; esac } # 检测内存并设置参数 detect_memory() { # 获取总内存 (MB) TOTAL_MEM=$(free -m | awk '/^Mem:/{print $2}') echo -e "${GREEN}✓ 检测到内存: ${TOTAL_MEM}MB${NC}" # 缓冲区 = 内存的 1/8,最小 8MB,最大 256MB BUF_MB=$(( TOTAL_MEM / 8 )) [ "$BUF_MB" -lt 8 ] && BUF_MB=8 [ "$BUF_MB" -gt 256 ] && BUF_MB=256 BUF_BYTES=$(( BUF_MB * 1024 * 1024 )) if [ "$TOTAL_MEM" -lt 512 ]; then PROFILE="micro" echo -e "${YELLOW}→ 使用 Micro 配置 (极小内存优化)${NC}" elif [ "$TOTAL_MEM" -lt 1024 ]; then PROFILE="small" echo -e "${YELLOW}→ 使用 Small 配置 (小内存优化)${NC}" elif [ "$TOTAL_MEM" -lt 2048 ]; then PROFILE="medium" echo -e "${YELLOW}→ 使用 Medium 配置 (中等内存)${NC}" elif [ "$TOTAL_MEM" -lt 4096 ]; then PROFILE="large" echo -e "${YELLOW}→ 使用 Large 配置 (大内存)${NC}" else PROFILE="xlarge" echo -e "${YELLOW}→ 使用 XLarge 配置 (超大内存)${NC}" fi RMEM_MAX=$BUF_BYTES WMEM_MAX=$BUF_BYTES TCP_RMEM="4096 87380 $BUF_BYTES" TCP_WMEM="4096 65536 $BUF_BYTES" echo -e "${YELLOW}→ 缓冲区: ${BUF_MB}MB${NC}" } # 启用 BBR enable_bbr() { echo "" echo -e "${BLUE}==> 启用 BBR${NC}" modprobe tcp_bbr 2>/dev/null || true echo "tcp_bbr" > /etc/modules-load.d/bbr.conf echo -e "${GREEN}✓ BBR 模块已加载${NC}" } # 备份原配置 backup_config() { if [ -f /etc/sysctl.conf ]; then cp /etc/sysctl.conf /etc/sysctl.conf.bak.$(date +%Y%m%d%H%M%S) echo -e "${GREEN}✓ 已备份原配置${NC}" fi } # 写入优化参数 apply_config() { echo "" echo -e "${BLUE}==> 写入优化参数 (Profile: $PROFILE)${NC}" # 移除旧的 BBR 配置 sed -i '/# === BBR Blast Smooth/,/# === END BBR/d' /etc/sysctl.conf 2>/dev/null || true cat >> /etc/sysctl.conf < 应用配置${NC}" sysctl -p >/dev/null 2>&1 echo -e "${GREEN}✓ 配置已生效${NC}" } # 验证结果 verify() { echo "" echo -e "${BLUE}==> 验证配置${NC}" CC=$(sysctl -n net.ipv4.tcp_congestion_control 2>/dev/null) QDISC=$(sysctl -n net.core.default_qdisc 2>/dev/null) if [ "$CC" = "bbr" ] && [ "$QDISC" = "fq" ]; then echo -e "${GREEN}✓ 拥塞控制: $CC${NC}" echo -e "${GREEN}✓ 队列算法: $QDISC${NC}" else echo -e "${RED}⚠ 配置可能未完全生效,建议重启${NC}" fi } # 显示摘要 summary() { echo "" echo -e "${BLUE}========================================${NC}" echo -e "${GREEN}✅ BBR Blast Smooth v2 配置完成!${NC}" echo -e "${BLUE}========================================${NC}" echo -e "系统: $OS $VER" echo -e "内存: ${TOTAL_MEM}MB" echo -e "配置: $PROFILE" echo -e "缓冲: $(($RMEM_MAX/1024/1024))MB" echo "" } # 主流程 main() { detect_os detect_memory enable_bbr backup_config apply_config reload_config verify summary } main