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或整体占用过多连接与带宽。
二 快速配置示例
- 全局限速(本地用户与匿名用户)
- 编辑配置文件:/etc/vsftpd/vsftpd.conf
- 按需添加或修改:
- 限制本地用户单连接为100 KB/s:
local_max_rate=102400
- 限制匿名用户单连接为50 KB/s:
anon_max_rate=51200
- 可选并发控制:
max_per_ip=3、max_clients=20
- 重启服务:
systemctl restart vsftpd
- 验证:用客户端单连接下载大文件,观察速率是否接近设定值(注意单位为字节/秒,常用换算:1 KB/s = 1024 B/s;
100 KB/s ≈ 102400 B/s)。
- 按用户差异化限速(推荐)
- 启用用户配置目录:
user_config_dir=/etc/vsftpd/user_conf
- 创建用户配置文件:
/etc/vsftpd/user_conf/<用户名>,写入例如:local_max_rate=204800(该用户单连接200 KB/s)
- 重启服务:
systemctl restart vsftpd
- 说明:匿名用户如需限速,仍使用全局的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),配置如
102400即100 KB/s;若看到KB/s字样,多为工具显示单位,非配置单位。
- 配置不生效:确认修改了正确的配置文件(常见为**/etc/vsftpd/vsftpd.conf**),并执行了
systemctl restart vsftpd;按用户限速需确保启用了user_config_dir且文件名与用户名一致。