上一篇
Debian 12 BBR 一键优化脚本 让小鸡网络飞起 TCP一键运行调优脚本
- 脚本
- 2025-09-23
- 158
之前看有人发了一个网络优化版本,但是没有一件部署,用着非常不方便,我就做了一个一键脚本,方便使用,而且还做了一键检测脚本,检测是否正常!我测试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)
一键执行源码
#!/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 "================"本站所发布的全部内容源于互联网搬运,仅限于小范围内传播学习和文献参考 请在下载后24小时内删除,如果有侵权之处请第一时间联系我们删除。 敬请谅解! E-mail:tudoumc@foxmail.com
本文链接:https://tudoumc.com/post/11542.html
您需要 登录账户 后才能发表评论

