logo NodeSeekbeta

TCP调优...被大佬们玩出花来了...我太懒了改了个自己用的...

先是大佬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
1234
1234

你好啊,陌生人!

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

📈用户数目📈

目前论坛共有73246位seeker

🎉欢迎新用户🎉