logo NodeSeekbeta

Debian 12 BBR 一键优化脚本 让小鸡网络飞起 TCP一键运行调优脚本

之前看到一个贴友,发了一个网络优化版本,但是没有一件部署,用着非常不方便,我就做了一个一键脚本,方便使用,而且还做了一键检测脚本,检测是否正常,我把源码和一键脚本都贴上,需要的自取!我测试Debian 12,完美运行,有显著提升网络优化作用。TCP调优脚本,可以根据服务器实际情况优化线路,感谢 GPTADM 大神的源码,我只是做了简单优化!

一键执行代码

curl -fsSL https://gist.githubusercontent.com/XiaoDianGG/7e1586bd219fa11725608218f04ceac6/raw/debian12-bbr.sh -o /tmp/debian12-bbr.sh && chmod +x /tmp/debian12-bbr.sh && sudo /tmp/debian12-bbr.sh

一键检测是否成功

bash <(curl -fsSL https://gist.githubusercontent.com/XiaoDianGG/ff536d5ebb3f419f6a8f09081fd40a68/raw/check-bbr.sh)

可以用了,觉得不错,记得上个鸡腿 yct018 yct018 yct018

1234
  • 一键执行源码

    #!/bin/bash
    #
    # Debian 12 TCP/BBR/FQ auto-tune script
    # Author: ChatGPT
    # Date: 2025-09-22
    #
    
    set -euo pipefail
    
    backup_conflict_file() {
        local file="$1"
        if [[ -f "$file" ]]; then
            local timestamp
            timestamp=$(date +%Y%m%d%H%M%S)
            mv "$file" "${file}.bak.${timestamp}"
            echo "已备份冲突文件: $file -> ${file}.bak.${timestamp}"
        fi
    }
    
    # 检测内存
    total_mem=$(free -m | awk '/Mem:/ {print $2}')
    echo "检测到内存: ${total_mem} MB"
    if [[ $total_mem -lt 1024 ]]; then
        echo "⚠️ 内存小于 1G,可能不适合调优"
    fi
    
    # 检测默认网卡
    default_iface=$(ip route show default | awk '{print $5}' | head -n1)
    echo "默认网卡: $default_iface"
    
    # 检测 RTT
    client_ip=$(echo $SSH_CLIENT | awk '{print $1}')
    if [[ -z "$client_ip" ]]; then
        client_ip="1.1.1.1"
    fi
    rtt=$(ping -c 5 -q "$client_ip" 2>/dev/null | awk -F'/' '/rtt/ {print int($5)}')
    if [[ -z "$rtt" ]]; then
        rtt=50
    fi
    echo "检测到 RTT: ${rtt} ms"
    
    # 默认带宽
    bandwidth_mbps=1000
    echo "默认带宽: ${bandwidth_mbps} Mbps"
    
    # 计算 BDP
    bandwidth_bps=$((bandwidth_mbps * 1000000 / 8))
    bdp_bytes=$((bandwidth_bps * rtt / 1000))
    echo "计算 BDP: ${bdp_bytes} bytes"
    
    # 取最近的桶值
    for candidate in 4194304 8388608 16777216 33554432 67108864; do
        if [[ $bdp_bytes -le $candidate ]]; then
            bucket=$candidate
            break
        fi
    done
    bucket=${bucket:-67108864}
    echo "使用桶值: $bucket ($((bucket/1024/1024)) MB)"
    
    # 清理冲突配置
    echo "清理冲突 sysctl 配置..."
    sed -i.bak "/net.core.rmem_max/d;/net.core.wmem_max/d;/net.ipv4.tcp_rmem/d;/net.ipv4.tcp_wmem/d;/net.ipv4.tcp_congestion_control/d;/net.core.default_qdisc/d" /etc/sysctl.conf || true
    
    for f in /etc/sysctl.d/*.conf; do
        if grep -Eq 'net\.core\.rmem_max|net\.core\.wmem_max|net\.ipv4\.tcp_rmem|net\.ipv4\.tcp_wmem|net\.ipv4\.tcp_congestion_control|net\.core\.default_qdisc' "$f"; then
            backup_conflict_file "$f"
        fi
    done
    
    # 写入新配置
    cat >/etc/sysctl.d/999-net-bbr-fq.conf <<EOF
    net.core.rmem_max = $bucket
    net.core.wmem_max = $bucket
    net.ipv4.tcp_rmem = 4096 87380 $bucket
    net.ipv4.tcp_wmem = 4096 65536 $bucket
    net.ipv4.tcp_congestion_control = bbr
    net.core.default_qdisc = fq
    EOF
    
    sysctl --system >/dev/null
    
    # 应用 qdisc
    tc qdisc replace dev "$default_iface" root fq || true
    
    # 打印结果
    echo "==== RESULT ===="
    echo "最终使用值 -> 内存: ${total_mem} MB, 带宽: ${bandwidth_mbps} Mbps, RTT: ${rtt} ms"
    echo "桶值: $bucket ($((bucket/1024/1024)) MB)"
    sysctl net.ipv4.tcp_congestion_control
    sysctl net.core.default_qdisc
    sysctl net.core.rmem_max
    sysctl net.core.wmem_max
    sysctl net.ipv4.tcp_rmem
    sysctl net.ipv4.tcp_wmem
    tc qdisc show dev "$default_iface" | head -n1
    echo "================"
    
  • 一键执行代码

    curl -fsSL https://gist.githubusercontent.com/XiaoDianGG/7e1586bd219fa11725608218f04ceac6/raw/debian12-bbr.sh -o /tmp/debian12-bbr.sh && chmod +x /tmp/debian12-bbr.sh && sudo /tmp/debian12-bbr.sh
    

    一键检测是否成功

    bash <(curl -fsSL https://gist.githubusercontent.com/XiaoDianGG/ff536d5ebb3f419f6a8f09081fd40a68/raw/check-bbr.sh)
    
  • 有前后的效果对比图吗? xhj001

  • 支持技术贴

  • 如果用了之后要怎么还原?

  • /tmp/debian12-bbr.sh: line 32: SSH_CLIENT: unbound variable
    有这个报错,老哥

    将32行改成

    client_ip=$(echo "${SSH_CLIENT:-}" | awk '{print $1}')
    

    ,后来好了

  • 我主要是开启bbr后,不如让系统自己接管。

  • @sean-wu #6 关闭bbr就行,或者替换其他bbr算法

1234

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72033位seeker

🎉欢迎新用户🎉