🚀 一键配置 CAKE 队列脚本
该脚本用于在 Linux 服务器上快速部署 CAKE 智能队列管理 (QoS),可有效缓解网络争抢、提升带宽利用率。
特别适合:VPS 代理、游戏服务器等需要稳定的场景。
✨ 特点
全自动部署:一键生成配置脚本 + systemd 服务,支持开机自启
交互式配置:友好提示,避免输入复杂参数
防呆设计:输入错误会自动回退默认值,避免中断
最终确认:配置写入前要求确认,防止误操作
特别提醒:配合 TCP 参数调优 使用时效果最佳,可显著提升网络稳定性和响应速度。
📥 安装方式
复制以下命令到服务器终端运行:
cat > install-cake.sh <<'EOF'#!/bin/bash# 一键配置 CAKE 队列 + systemd 服务SERVICE_FILE="/etc/systemd/system/set-cake.service"SCRIPT_FILE="/usr/local/bin/set-cake.sh"IFACE="eth0"echo "=== CAKE 队列一键配置脚本 ==="# 交互输入 NAT 模式read -rp "请确认是否为 NAT 机器?(y=是 / n=不是) [默认: n]: " NAT_CHOICEcase "$NAT_CHOICE" in [Yy]) NAT_MODE="nat" ;; [Nn]|"") NAT_MODE="nonat" ;; *) echo "输入无效,默认使用 nonat"; NAT_MODE="nonat" ;;esac# 交互输入延迟read -rp "请输入网络延迟 (仅输入数字,单位为 ms) [默认: 100]: " RTT_INPUTif [[ "$RTT_INPUT" =~ ^[0-9]+$ ]]; then RTT="${RTT_INPUT}ms"else echo "输入无效,使用默认 100ms" RTT="100ms"fi# 交互输入带宽echo "带宽单位支持:mbit / gbit"read -rp "请输入带宽数值 (仅输入数字) [默认: 600]: " BW_INPUTread -rp "请选择带宽单位 (输入 m 代表 mbit / g 代表 gbit) [默认: m]: " BW_UNIT# 数值检查if [[ ! "$BW_INPUT" =~ ^[0-9]+$ ]]; then echo "输入无效,使用默认 600mbit" BW="600mbit"else case "$BW_UNIT" in [Gg]) BW="${BW_INPUT}gbit" ;; [Mm]|"") BW="${BW_INPUT}mbit" ;; *) echo "单位输入无效,使用默认 mbit"; BW="${BW_INPUT}mbit" ;; esacfiecho ""echo "====== 配置信息确认 ======"echo " 网卡接口 : $IFACE"echo " NAT 模式 : $NAT_MODE"echo " 延迟 : $RTT"echo " 带宽 : $BW"echo "=========================="echo ""# 最终确认read -rp "是否确认应用该配置?(y=确认 / n=取消): " CONFIRMif [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then echo "❌ 已取消配置,未做任何更改。" exit 1fi# 生成 /usr/local/bin/set-cake.shcat > "$SCRIPT_FILE" <<EOL#!/bin/bashIFACE="$IFACE"# 删除旧的 qdisc(避免重复添加)tc qdisc del dev "\$IFACE" root 2>/dev/null# 添加 CAKE 队列规则tc qdisc add dev "\$IFACE" root cake \\ bandwidth $BW \\ rtt $RTT \\ diffserv3 \\ $NAT_MODE \\ triple-isolate \\ ack-filter \\ split-gso \\ ethernet \\ overhead 0 \\ mpu 64 \\ washEOLchmod +x "$SCRIPT_FILE"# 生成 systemd service 文件cat > "$SERVICE_FILE" <<EOL[Unit]Description=Set CAKE Qdisc on $IFACEAfter=network-online.targetWants=network-online.target[Service]Type=oneshotExecStart=$SCRIPT_FILERemainAfterExit=true[Install]WantedBy=multi-user.targetEOL# 应用 systemdsystemctl daemon-reloadsystemctl enable set-cake.servicesystemctl restart set-cake.serviceecho "✅ CAKE 已配置并开机自启"echo "可用命令:"echo " systemctl status set-cake.service # 查看运行状态"echo " tc -s qdisc show dev $IFACE # 查看 CAKE 队列统计"EOFchmod +x install-cake.sh./install-cake.sh