62 lines
2.0 KiB
Bash
62 lines
2.0 KiB
Bash
#!/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" |