先是大佬BlackSheep的基操 https://www.nodeseek.com/post-197087-1
后是大佬mereith搞了个第一种办法的计算器 https://www.nodeseek.com/post-199442-1
最后又是lanzi大佬搞了个第二种简化 https://www.nodeseek.com/post-199985-1
我就是觉得鸡多每个都一行一行输麻烦又搞了自用的脚本0.0虽然命令还是有点多但是用xterminal可以保存命令所以也还好了,大佬别喷
初始化/etc/sysctl.conf配置
cat > /etc/sysctl.conf << EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_rmem=8192 262144 536870912
net.ipv4.tcp_wmem=4096 16384 536870912
EOF
sysctl -p && sysctl --system
创建BlackSheep大佬第二种调优方法的懒人脚本
TARGET_DIR="/app/tcp"; SCRIPT_NAME="setup_traffic_control.sh"; CONFIG_FILE="/app/tcp/bandwidth.conf"; mkdir -p $TARGET_DIR && touch $CONFIG_FILE && echo '#!/bin/bash' > $TARGET_DIR/$SCRIPT_NAME && cat <<EOF >> $TARGET_DIR/$SCRIPT_NAME && chmod +x $TARGET_DIR/$SCRIPT_NAME
# 获取第一个以太网接口名称
INTERFACE=\$(ip -o link show | grep 'link/ether' | awk -F': ' '{print \$2}' | head -n 1)
echo "网络接口名称: \$INTERFACE"
# 检查参数
if [ "\$1" != "-y" ] && [ "\$1" != "-n" ]; then
echo "无效的参数。请使用 -y 或 -n。"
exit 1
fi
# 系统自动执行或用户执行
if [ "\$1" = "-n" ]; then
# 系统自动执行,从配置文件中读取带宽值
if [ -f "/app/tcp/bandwidth.conf" ]; then
source /app/tcp/bandwidth.conf
else
echo "配置文件 /app/tcp/bandwidth.conf 不存在,请手动执行脚本并输入带宽值。"
exit 1
fi
elif [ "\$1" = "-y" ]; then
# 用户执行,交互式输入带宽值
read -e -p "请输入瓶颈带宽值 (单位 Mbit/s): " BANDWIDTH
echo "瓶颈带宽值: \$BANDWIDTH Mbit/s"
# 保存带宽值到配置文件
echo "BANDWIDTH=\$BANDWIDTH" > /app/tcp/bandwidth.conf
fi
# 检查变量是否为空
if [ -z "\$INTERFACE" ] || [ -z "\$BANDWIDTH" ]; then
echo "网络接口名称或瓶颈带宽值不能为空,请重新输入。"
exit 1
fi
# 删除现有的队列调度
echo "正在删除现有队列调度..."
tc qdisc del dev \$INTERFACE root 2>/dev/null || true
# 添加 htb 队列调度
echo "正在添加 HTB 队列调度..."
tc qdisc add dev \$INTERFACE root handle 1:0 htb default 10
# 对所有源IP进行限速
echo "正在设置所有源IP的带宽限制..."
tc class add dev \$INTERFACE parent 1:0 classid 1:1 htb rate \${BANDWIDTH}mbit ceil \${BANDWIDTH}mbit
tc filter add dev \$INTERFACE protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:1
# 对所有目的IP进行限速
echo "正在设置所有目的IP的带宽限制..."
tc class add dev \$INTERFACE parent 1:0 classid 1:2 htb rate \${BANDWIDTH}mbit ceil \${BANDWIDTH}mbit
tc filter add dev \$INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:2
# 查看配置是否生效
echo "显示当前配置..."
tc qdisc show dev \$INTERFACE
tc class show dev \$INTERFACE
tc -s filter show dev \$INTERFACE
EOF
为了开机自启加了个脚本参数
使用-y参数需要手动输入瓶颈宽带值 调整参数也执行该命令
/app/tcp/setup_traffic_control.sh -y
脚本执行后会将上次输入的瓶颈宽带值记录至配置文件,所以输入-n参数就是为了后续重启机器后自动执行脚本用的,当然你也可以手动执行会加载你上次输入的瓶颈宽带值
/app/tcp/setup_traffic_control.sh -n
开机自启我用的系统服务
创建系统服务
cat << EOF > /etc/systemd/system/tcp_traffic_control.service
[Unit]
Description=TCP Traffic Control Setup
After=network.target
[Service]
Type=oneshot
ExecStart=/app/tcp/setup_traffic_control.sh -n
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
EOF
加载系统服务
sudo systemctl daemon-reload
启用服务
systemctl enable tcp_traffic_control.service
前排支持
懶🐶不太想折騰還是收藏了
后排支持
有啥用。不如买线路好的鸡?
@烟花易冷 #4 貌似 就是为线路好的鸡调的...虽然我试了试貌似无所谓就是降低iperf3重传的?
@minikoro #5 好吧
@烟花易冷 #6 教学贴在这里 https://www.nodeseek.com/post-197087-1
我就一个fq一个bbr,摆烂了
@shuai #8 没啥好玩的了 索然无味
用gpt整合成sh脚本