logo NodeSeekbeta

Portshaper:按端口限速脚本(tc+HTB,上/下行独立限速)

📌 这是什么

Portshaper · 端口限速管家,一个给 3X-UI / X-UI 这类面板补上「按用户限速」的一键脚本。

面板只能限流量(用了多少 G),限不了速度。一个用户跑满,就能把整台 VPS 的带宽吃光,其他人全卡。

Portshaper 用系统自带的 tc + HTB 按端口限速:一个端口 = 一个用户,每个端口的上传、下载带宽各自独立,互不干扰。

原理一句话:下载方向在网卡出站按源端口分流,上传方向经 ingress + ifb 按目标端口分流,每个端口一个独立 HTB class,硬限速。


✨ 功能特性

  • 分端口独立限速:上传 / 下载分开设,每个端口自己的值,互不干扰
  • 统一或逐个设置:所有端口一个值搞定,也可以每个端口单独给
  • 中文菜单操作:1→2→3→4 按顺序填完,5 开始限速,立即生效,不用重启机器
  • 单位随便写:25、25mbit、1gbit 都认,纯数字默认 mbit;填 0 或乱填会被拒绝
  • 自动记住上次填的值:下次打开直接显示;换端口后旧值自动清空,不会串
  • 端口监听检查:填端口时顺手告诉你哪个端口没在监听,防止写错
  • 开机自启可选:重启后限速自动恢复(规则是内存级的,重启会消失)
  • 查看状态:菜单 7 一览各端口限速值和实时流量
  • 反悔一键清除:清除所有规则和自启,网络恢复原状;填过的值还留着,随时回来重限
  • 网卡自动检测:按默认路由自动识别网卡,不对再手动填
  • ifb 兜底提示:上传方向依赖 ifb 模块;ifb 不可用时明确提示"上传不限、下载正常",不悄悄漏限

🚀 使用步骤

第一步:准备工作

需要 root 权限(先 sudo -i),并装好 tc:

apt install -y iproute2

第二步:一键运行脚本

curl -fsSL "https://gist.githubusercontent.com/Puthsent/2bb332eef099cef5f66ee1a57b4fd544/raw/Portshaper" -o /tmp/portshaper.sh && bash -n /tmp/portshaper.sh && bash /tmp/portshaper.sh

第三步:按菜单操作

打开后按顺序走就行:

  1. 选 1:检测网卡(一般自动识别就对了)
  2. 选 2:填写限速端口 —— 3X-UI 里每个用户的 inbound 端口,空格或逗号分隔,一次可填多个
  3. 选 3:填写上传限速(可统一填,也可逐个端口单独填)
  4. 选 4:填写下载限速
  5. 选 5:开始限速 —— 确认后立即生效

参考值:25mbit 看 4K 足够,50mbit 体验更好。

第四步:验证是否生效

  • 菜单里 选 7 查看各端口限速值和实时流量
  • 或者连上节点跑个 speedtest,看速度是否被压住

第五步(可选):开机自启 / 反悔清除

  • 开始限速时会问你要不要开机自启,选是即可(cron @reboot 自动恢复)
  • 想取消限速:菜单 选 6(反悔),或直接运行:
bash /tmp/portshaper.sh --clear

⚠️ 注意事项

  • 只限制 IPv4 流量(filter 按 protocol ip 匹配)。节点若同时监听 IPv6,请先关闭 IPv6,否则 IPv6 流量会绕过限速。
  • 限速规则是内存级的,重启机器后消失,建议开启开机自启。
  • 各端口限速总和超过 VPS 本身带宽时,同时跑满会互相挤占,这是物理上限。
  • 配置文件在 /root/.tc-limit.conf(600 权限),自恢复脚本在 /usr/local/bin/tc-limit-apply.sh。

📎 开源地址

脚本开源在 Gist 上(私密链接,只有拿到链接的人才能看到),欢迎反馈和 star:

https://gist.github.com/Puthsent/2bb332eef099cef5f66ee1a57b4fd544/raw/Portshaper

点进去就能看到完整源码是怎么写的 —— 限速逻辑、菜单、开机自启都在里面,一目了然。觉得哪里不合用的可以直接拿去改,二次开发成自己的版本,改完照着上面的一键命令跑就行。

你好啊,陌生人!

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

📈用户数目📈

目前论坛共有72269位seeker

🎉欢迎新用户🎉