tcp-cal/tc_limit.sh
2024-11-20 20:18:22 +08:00

62 lines
2.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 检查是否以root权限运行
if [ "$EUID" -ne 0 ]; then
echo "请使用root权限运行此脚本"
exit 1
fi
# 设置网络参数
echo "正在配置系统网络参数..."
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_wmem = 4096 16384 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
EOF
# 使网络参数生效
sysctl -p
# 获取网络接口名称
echo "可用的网络接口:"
ip a
read -p "请输入要限速的网络接口名称默认eth0: " INTERFACE
INTERFACE=${INTERFACE:-eth0}
# 获取限速值
read -p "请输入限速值Mbit: " SPEED_LIMIT
# 清除现有TC配置
tc qdisc del dev $INTERFACE root 2>/dev/null
# 配置TC限速
echo "正在配置TC限速..."
tc qdisc add dev $INTERFACE root handle 1:0 htb default 10
tc class add dev $INTERFACE parent 1:0 classid 1:1 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}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
tc class add dev $INTERFACE parent 1:0 classid 1:2 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}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
# 显示TC配置结果
echo "当前TC配置"
tc qdisc show dev $INTERFACE
tc class show dev $INTERFACE
tc -s filter show dev $INTERFACE
# 配置开机自启
echo "正在配置开机自启..."
cat > /etc/rc.local << EOF
#!/bin/bash
tc qdisc add dev $INTERFACE root handle 1:0 htb default 10
tc class add dev $INTERFACE parent 1:0 classid 1:1 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}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
tc class add dev $INTERFACE parent 1:0 classid 1:2 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}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
exit 0
EOF
# 设置rc.local可执行权限
chmod +x /etc/rc.local
echo "配置完成!系统将在重启后自动应用限速设置"
echo "当前限速值为: ${SPEED_LIMIT}Mbit"