温馨提示×

vsftp带宽限制:如何控制上传下载速度

小樊
44
2025-12-14 03:39:13
栏目: 编程语言

vsftpd带宽限制实用指南

一 核心参数与生效范围

  • 使用内置参数即可完成限速,关键项为:local_max_rate(本地用户,单位字节/秒)、anon_max_rate(匿名用户,单位字节/秒)。限速是“每条连接”粒度的,并非“每个用户/每个IP”的总速率;例如将匿名限速设为20000时,单条连接约20 KB/s,同一客户端开多条连接时,总速率≈单条限速×连接数。还可配合max_per_ip(每IP最大连接数)与max_clients(全局最大客户端数)避免单IP或整体占用过多连接与带宽。

二 快速配置示例

  • 全局限速(本地用户与匿名用户)
    1. 编辑配置文件:/etc/vsftpd/vsftpd.conf
    2. 按需添加或修改:
      • 限制本地用户单连接为100 KB/slocal_max_rate=102400
      • 限制匿名用户单连接为50 KB/sanon_max_rate=51200
      • 可选并发控制:max_per_ip=3max_clients=20
    3. 重启服务:systemctl restart vsftpd
    4. 验证:用客户端单连接下载大文件,观察速率是否接近设定值(注意单位为字节/秒,常用换算:1 KB/s = 1024 B/s100 KB/s ≈ 102400 B/s)。
  • 按用户差异化限速(推荐)
    1. 启用用户配置目录:user_config_dir=/etc/vsftpd/user_conf
    2. 创建用户配置文件:/etc/vsftpd/user_conf/<用户名>,写入例如:local_max_rate=204800(该用户单连接200 KB/s
    3. 重启服务:systemctl restart vsftpd
    4. 说明:匿名用户如需限速,仍使用全局的anon_max_rate;按用户限速仅对“本地用户”生效。

三 进阶方案

  • 系统级带宽整形(不影响vsftpd配置)
    • 使用tc(Traffic Control)对网卡或特定来源IP限速,适合做全局或按IP的带宽上限;也可结合iptables mangle 标记 + tc filter实现更细粒度控制。
    • 使用trickle为进程限速:例如 trickle -d 100 -u 50 vsftpd(下载100 KB/s、上传50 KB/s),适合临时压测或无法改配置的场景。
  • 说明:vsftpd自身不支持“每用户/每IP总速率”聚合限速;若需此类效果,可在系统层用tc按IP限速,或在应用层用trickle按进程限速。

四 常见问题与排错

  • 限速不准或“看起来超限”:限速是按“每条连接”计算,多连接会叠加;可用max_per_ip限制单IP并发,避免单用户占满带宽。
  • 单位混淆:vsftpd速率参数单位为字节/秒(B/s),配置如102400100 KB/s;若看到KB/s字样,多为工具显示单位,非配置单位。
  • 配置不生效:确认修改了正确的配置文件(常见为**/etc/vsftpd/vsftpd.conf**),并执行了systemctl restart vsftpd;按用户限速需确保启用了user_config_dir且文件名与用户名一致。

0