【原创脚本】TrafficCop v2.0 - 支持多端口独立流量限制和监控!
调试了很久,花费了很大精力,远比想象中要复杂···求鸡腿,坛友们可以测试下,有些小bug实在难以修复就先搁置了。能用就行。
GitHub项目地址: https://github.com/ypq123456789/TrafficCop
TrafficCop 现在支持为多个端口同时设置独立的流量限制!这个功能非常适合需要对特定服务(如Web服务器、代理服务、SSH等)进行精细化流量管理的场景。
功能特点
-
多端口流量管理 - 同时监控和限制多个端口的流量,使用JSON格式存储配置
-
独立端口流量统计 - 使用iptables精确统计每个端口的入站和出站流量
-
实时流量查看 - 彩色可视化界面,显示所有端口的流量使用情况和进度条
-
智能配置同步 - 自动同步机器配置,也支持自定义配置
-
灵活的限制策略 - 支持两种限制模式:
-
TC模式:对端口流量进行限速
-
阻断模式:超限后完全阻断端口流量
-
配置验证 - 确保端口流量限制不超过机器总流量限制
-
推送通知集成 - 所有推送服务(Telegram、PushPlus、ServerChan)自动包含端口流量信息
-
自动化管理 - 支持定时任务自动监控和限制
使用逻辑
场景一:机器未限制流量
当机器尚未配置流量限制时,为指定端口设置流量限制会:
-
创建端口流量配置
-
询问是否同步配置到机器流量限制
-
如果选择同步,端口配置将自动应用到机器级别
场景二:机器已限制流量
当机器已配置流量限制时,为指定端口设置流量限制会:
-
检查端口流量限制是否小于等于机器流量限制
-
默认继承机器的其他配置(统计模式、周期、限制模式等)
-
允许自定义配置以满足特殊需求
安装和配置
方法一:通过管理器脚本(推荐)
选择 "5) 安装端口流量限制"
方法二:直接运行脚本
配置选项
在配置过程中,您需要提供:
-
端口号 - 要限制流量的端口(1-65535)
-
流量限制 - 端口允许使用的最大流量(GB)
-
容错范围 - 触发限制前的缓冲区(GB)
-
配置方式 - 选择使用机器配置或自定义配置
如果选择自定义配置,还需要设置:
-
流量统计模式(出站/入站/总计/最大值)
-
统计周期(月/季/年)
-
周期起始日
-
限制模式(TC限速/阻断)
-
限速值(仅TC模式)
相关命令
查看所有端口流量(推荐)
管理端口配置
通过管理器访问(推荐)
选择 12) 查看端口流量
选择 13) 管理端口配置
查看配置文件
使用示例
场景:为多个服务配置独立流量限制
假设您的机器有1TB的总流量限制,您想为不同服务设置独立的流量配额:
配置多个端口:
-
运行端口配置脚本
-
添加端口80(Web服务):200GB限制,10GB容错
-
添加端口443(HTTPS):300GB限制,15GB容错
-
添加端口22(SSH):50GB限制,5GB容错
实时查看所有端口流量:
输出示例:
推送通知示例(Telegram):
当某个端口流量达到限制时:
技术原理
端口流量限制功能使用以下技术实现:
-
iptables - 创建规则统计特定端口的流量
-
tc (Traffic Control) - 实现端口级别的流量控制和限速
-
HTB (Hierarchical Token Bucket) - 分层流量控制,为不同端口分配不同的带宽
-
Packet Marking - 使用mangle表标记数据包,实现精确的流量分类
配置文件格式(JSON)
注意事项
-
依赖要求:需要jq工具(脚本会自动安装)和iptables
-
流量统计:端口流量统计从配置时开始,不包含历史流量
-
先决条件:建议先运行主流量监控脚本,以确保依赖已安装
-
性能影响:TC模式可能对端口性能有轻微影响
-
谨慎使用:阻断模式会完全禁止端口通信,请谨慎使用
-
多端口支持:✅ 2.0版本已支持同时配置和管理多个端口
-
推送集成:端口流量信息已集成到所有推送通知中