vsftp带宽限制:如何控制上传下载速度
vsftpd带宽限制实用指南

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
一 核心参数与生效范围
其实,用好vsftpd内置的几个参数就能轻松实现限速,关键在于理解它的生效逻辑。核心参数就两个:local_max_rate(针对本地用户,单位是字节/秒)和anon_max_rate(针对匿名用户,单位也是字节/秒)。
这里有个关键点必须厘清:vsftpd的限速是“每条连接”粒度的,而不是“每个用户”或“每个IP”的总速率。这意味着什么呢?举个例子,如果你把匿名用户限速设为20000(约20 KB/s),那么单个客户端建立的每一条连接,其速度上限就是20 KB/s。如果同一个客户端同时开启了5条连接,它的总下载速度理论上就能接近100 KB/s。
所以,要想避免单个用户或IP占用过多资源,通常需要配合另外两个参数:max_per_ip(限制每个IP能建立的最大连接数)和max_clients(限制全局最大客户端数)。这样一来,就能从连接数和单连接速度两个维度,更有效地管理带宽了。
二 快速配置示例
理论清楚了,动手配置就简单了。下面提供两种最常用的方案。
全局限速(本地用户与匿名用户)
- 编辑配置文件:打开
/etc/vsftpd/vsftpd.conf。 - 添加或修改参数:
- 限制本地用户单连接速度为100 KB/s:
local_max_rate=102400 - 限制匿名用户单连接速度为50 KB/s:
anon_max_rate=51200 - 可选,加上并发控制:
max_per_ip=3(每IP最多3条连接)、max_clients=20(全局最多20个客户端)
- 限制本地用户单连接速度为100 KB/s:
- 重启服务:执行
systemctl restart vsftpd使配置生效。 - 验证效果:找个客户端,用单连接下载一个大文件,观察速度是否稳定在设定值附近。提醒一下,配置单位是字节/秒,我们常说的100 KB/s换算过来就是102400 B/s,千万别搞混了。
按用户差异化限速(推荐)
如果需要对不同本地用户设置不同的速度上限,这个方案更灵活。
- 启用用户配置目录:在
vsftpd.conf中添加一行:user_config_dir=/etc/vsftpd/user_conf。 - 创建用户专属配置文件:在刚指定的目录下,创建一个以用户名命名的文件。例如,为用户“john”创建文件
/etc/vsftpd/user_conf/john,并在里面写入:local_max_rate=204800(这意味着john的单连接速度上限是200 KB/s)。 - 重启服务:同样,执行
systemctl restart vsftpd。 - 重要说明:这种方式仅对本地用户生效。匿名用户的限速,依然要靠全局的
anon_max_rate参数来控制。
三 进阶方案
有时候,vsftpd自身的限速机制可能无法满足所有需求。比如,你需要限制“每个IP的总带宽”,而不仅仅是“每条连接”的速度。这时候,就得借助系统层面的工具了。
- 系统级带宽整形(不影响vsftpd配置)
- 使用tc(Traffic Control):这是Linux内核自带的流量控制工具,功能强大。你可以直接对网卡进行整体限速,或者针对特定的来源IP地址进行限速。更复杂的,还能结合iptables的mangle表给数据包打标记,再用tc的filter进行精细过滤和控制。
- 使用trickle为进程限速:这个工具用起来更直接。比如执行
trickle -d 100 -u 50 vsftpd,就能限制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、MB/s,那是显示单位的差异,配置时别被它误导。 - 配置不生效:如果改了配置却没效果,按这个顺序排查:1) 确认修改的是正确的配置文件(通常是
/etc/vsftpd/vsftpd.conf);2) 确认执行了systemctl restart vsftpd重启服务;3) 如果是按用户限速,确保user_config_dir路径正确,并且里面的配置文件文件名必须和用户名完全一致。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Composer如何查看可升级的包_Composer查看可升级包步骤
Composer如何查看可升级的包?别被默认输出“骗”了 直接运行 composer outdated,这大概是所有PHP开发者检查依赖更新的第一反应。但这里有个常见的误解:这个命令的输出结果,并不是在告诉你“世界上所有可用的新版本”,它只显示那些符合你composer json里既定版本约束的更新
Ubuntu Golang编译失败常见原因有哪些
Ubuntu 上 Golang 编译失败的常见原因与排查要点 在 Ubuntu 上折腾 Go 项目,编译失败这事儿,说大不大,说小不小。它不像运行时错误那样有清晰的逻辑线索,往往一个看似不起眼的配置问题,就能让整个构建过程戛然而止。别慌,咱们今天就把那些最常见的“拦路虎”梳理一遍,并提供一套清晰的排
PhpStorm一键导入VSCode主题(无缝切换)
PhpStorm 无法直接使用 VSCode 主题,因二者格式(JSON vs icls)、语义体系、作用域命名完全不兼容;所谓“一键导入”无官方支持且不可靠,需手动迁移核心颜色、图标与字体以实现视觉一致性。 PhpStorm 里根本不能直接用 VSCode 主题 事情是这样的:VSCode 的主
phpstorm怎么快速将选中代码包裹在Try-Catch中(快捷键)
PhpStorm 中 Ctrl+Alt+T(macOS 为 Cmd+Alt+T)可快速用 try-catch 包裹代码,但需选中有效 PHP 语句且文件类型为 PHP;默认捕获 Exception,PHP 7+ 应改用 Throwable;可自定义 Live Templates 添加日志或 re
Ubuntu下Golang编译项目结构怎么设计
在Ubuntu下使用Golang编译项目时,可以遵循以下项目结构设计原则 好的项目结构是高效开发和团队协作的基石。在Ubuntu环境下用Go语言开发,遵循一些清晰的设计原则,能让编译、测试和维护都变得事半功倍。下面这套结构方案,可以说是经过大量项目验证的“最佳实践”了。 1 项目根目录 首先,为你
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

