[TrafficCop] 多端口流量限制!拼车神器! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bacon159
V2EX    服务器

[TrafficCop] 多端口流量限制!拼车神器!

  •  
  •   bacon159 61 天前 1247 次点击
    这是一个创建于 61 天前的主题,其中的信息可能已经有所发展或是发生改变。

    github 地址: https://github.com/ypq123456789/TrafficCop 调试了很久,花费了很大精力,远比想象中要复杂求鸡腿,坛友们可以测试下,有些小 bug 实在难以修复就先搁置了。能用就行。

    TrafficCop 现在支持为多个端口同时设置独立的流量限制!这个功能非常适合需要对特定服务(如 Web 服务器、代理服务、SSH 等)进行精细化流量管理的场景。

    功能特点

    1. 多端口流量管理 - 同时监控和限制多个端口的流量,使用 JSON 格式存储配置
    2. 独立端口流量统计 - 使用 iptables 精确统计每个端口的入站和出站流量
    3. 实时流量查看 - 彩色可视化界面,显示所有端口的流量使用情况和进度条
    4. 智能配置同步 - 自动同步机器配置,也支持自定义配置
    5. 灵活的限制策略 - 支持两种限制模式:
      • TC 模式:对端口流量进行限速
      • 阻断模式:超限后完全阻断端口流量
    6. 配置验证 - 确保端口流量限制不超过机器总流量限制
    7. 推送通知集成 - 所有推送服务( Telegram 、PushPlus 、ServerChan )自动包含端口流量信息
    8. 自动化管理 - 支持定时任务自动监控和限制

    使用逻辑

    场景一:机器未限制流量

    当机器尚未配置流量限制时,为指定端口设置流量限制会:

    1. 创建端口流量配置
    2. 询问是否同步配置到机器流量限制
    3. 如果选择同步,端口配置将自动应用到机器级别

    场景二:机器已限制流量

    当机器已配置流量限制时,为指定端口设置流量限制会:

    1. 检查端口流量限制是否小于等于机器流量限制
    2. 默认继承机器的其他配置(统计模式、周期、限制模式等)
    3. 允许自定义配置以满足特殊需求

    安装和配置

    方法一:通过管理器脚本(推荐)

    bash <(curl -sL https://raw.githubusercontent.com/ypq123456789/TrafficCop/main/trafficcop-manager.sh) 

    选择 "5) 安装端口流量限制"

    方法二:直接运行脚本

    sudo mkdir -p /root/TrafficCop && \ curl -fsSL "https://raw.githubusercontent.com/ypq123456789/TrafficCop/main/port_traffic_limit.sh" | tr -d '\r' > /root/TrafficCop/port_traffic_limit.sh && \ chmod +x /root/TrafficCop/port_traffic_limit.sh && \ bash /root/TrafficCop/port_traffic_limit.sh 

    配置选项

    在配置过程中,您需要提供:

    1. 端口号 - 要限制流量的端口( 1-65535 )
    2. 流量限制 - 端口允许使用的最大流量( GB )
    3. 容错范围 - 触发限制前的缓冲区( GB )
    4. 配置方式 - 选择使用机器配置或自定义配置

    如果选择自定义配置,还需要设置:

    • 流量统计模式(出站/入站/总计/最大值)
    • 统计周期(月/季/年)
    • 周期起始日
    • 限制模式( TC 限速/阻断)
    • 限速值(仅 TC 模式)

    相关命令

    查看所有端口流量(推荐)

    # 普通查看 sudo bash /root/TrafficCop/view_port_traffic.sh # 实时监控(每 5 秒刷新) sudo bash /root/TrafficCop/view_port_traffic.sh --realtime # 导出 JSON 报告 sudo bash /root/TrafficCop/view_port_traffic.sh --export 

    管理端口配置

    # 打开交互式配置菜单 sudo bash /root/TrafficCop/port_traffic_limit.sh # 删除特定端口 sudo bash /root/TrafficCop/port_traffic_limit.sh --remove 80 # 删除所有端口配置 sudo bash /root/TrafficCop/port_traffic_limit.sh --remove 

    通过管理器访问(推荐)

    bash <(curl -sL https://raw.githubusercontent.com/ypq123456789/TrafficCop/main/trafficcop-manager.sh) # 选择 12) 查看端口流量 # 选择 13) 管理端口配置 

    查看配置文件

    # 查看 JSON 配置(多端口) sudo cat /root/TrafficCop/ports_traffic_config.json # 美化输出 sudo cat /root/TrafficCop/ports_traffic_config.json | jq 

    使用示例

    场景:为多个服务配置独立流量限制

    假设您的机器有 1TB 的总流量限制,您想为不同服务设置独立的流量配额:

    配置多个端口:

    1. 运行端口配置脚本
    2. 添加端口 80 ( Web 服务):200GB 限制,10GB 容错
    3. 添加端口 443 ( HTTPS ):300GB 限制,15GB 容错
    4. 添加端口 22 ( SSH ):50GB 限制,5GB 容错

    实时查看所有端口流量:

    sudo bash /root/TrafficCop/view_port_traffic.sh 

    输出示例:

     端口流量监控 - 2025-10-18 15:30:45 端口 80 (Web Server) 已用: 150.2 GB / 200 GB (75.1%) [ ] 限速: 20kbit/s 端口 443 (HTTPS) 已用: 280.5 GB / 300 GB (93.5%) [ ] 限速: 50kbit/s 端口 22 (SSH) 已用: 15.3 GB / 50 GB (30.6%) [ ] 限速: 10kbit/s 总计: 3 个端口 | 总用量: 446.0 GB | 总限制: 550 GB 

    推送通知示例( Telegram ):

     [MyServer]每日流量报告 机器总流量: 当前使用:650.5 GB 流量限制:1000 GB 端口流量详情: 端口 80 (Web Server):150.2GB / 200GB 端口 443 (HTTPS):280.5GB / 300GB 端口 22 (SSH):15.3GB / 50GB 

    当某个端口流量达到限制时:

    • TC 模式:端口速度将被限制到设定值(如 20kbit/s )
    • 阻断模式:端口将被完全阻断,无法接收或发送数据
    • 自动通知:所有配置的推送服务会发送警告通知

    技术原理

    端口流量限制功能使用以下技术实现:

    1. iptables - 创建规则统计特定端口的流量
    2. tc (Traffic Control) - 实现端口级别的流量控制和限速
    3. HTB (Hierarchical Token Bucket) - 分层流量控制,为不同端口分配不同的带宽
    4. Packet Marking - 使用 mangle 表标记数据包,实现精确的流量分类

    配置文件格式( JSON )

    { "ports": [ { "port": 80, "description": "Web Server", "traffic_limit": 200, "traffic_tolerance": 10, "traffic_mode": "total", "traffic_period": "monthly", "period_start_day": 1, "limit_speed": 20, "main_interface": "eth0", "limit_mode": "tc", "created_at": "2025-10-18 12:00:00", "last_reset": "2025-10-01" } ] } 

    注意事项

    1. 依赖要求:需要 jq 工具(脚本会自动安装)和 iptables
    2. 流量统计:端口流量统计从配置时开始,不包含历史流量
    3. 先决条件:建议先运行主流量监控脚本,以确保依赖已安装
    4. 性能影响:TC 模式可能对端口性能有轻微影响
    5. 谨慎使用:阻断模式会完全禁止端口通信,请谨慎使用
    6. 多端口支持: 2.0 版本已支持同时配置和管理多个端口
    7. 推送集成:端口流量信息已集成到所有推送通知中
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     942 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 22:24 PVG 06:24 LAX 14:24 JFK 17:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86