在 CentOS 上搭建 FTP 服务器(常见的是 vsftpd),“限流”通常包含两类需求:
- 带宽限速(限制上传/下载速度)
- 连接数限制(限制并发连接、单 IP 连接数)
下面以 vsftpd(最常用) 为例说明。
一、vsftpd 带宽限速(最常用)
1. 安装 vsftpd
yum install vsftpd -y
systemctl enable vsftpd
systemctl start vsftpd
2. 全局限速(所有用户)
编辑配置文件:
vi /etc/vsftpd/vsftpd.conf
添加或修改:
# 下载速度限制(字节/秒)
anon_max_rate=102400 # 匿名用户 100KB/s
local_max_rate=512000 # 本地用户 500KB/s
单位:字节/秒(B/s)
3. 针对单个用户限速(推荐)
vi /etc/vsftpd/vsftpd.conf
确保:
user_config_dir=/etc/vsftpd/user_conf
创建目录:
mkdir -p /etc/vsftpd/user_conf
为用户 test 单独限速:
vi /etc/vsftpd/user_conf/test
内容:
local_max_rate=204800
重启服务:
systemctl restart vsftpd
二、连接数 & 并发限制
1. 限制总连接数
max_clients=50
2. 限制单 IP 连接数
max_per_ip=3
3. 限制匿名用户
anon_max_rate=102400
max_clients=10
三、使用 iptables / firewalld 限制(IP 级限流)
如果你是想 在系统层限流(不是 FTP 应用层),可以用 tc 或 iptables 限速,但一般不推荐用于 FTP。
示例(iptables 简单限速):
iptables -A INPUT -p tcp --dport 21 -m limit --limit 10/s -j ACCEPT
四、使用 proftpd(备选方案)
如果你用的是 proftpd:
RateKbPS 500
五、常见建议配置示例
local_max_rate=512000
anon_max_rate=102400
max_clients=100
max_per_ip=2
六、验证是否生效
ftp localhost
或用浏览器/FileZilla 下载测试速度。
如果你能告诉我:
- 用的 vsftpd / proftpd / pure-ftpd
- 想限 上传、下载、连接数
- 是否 按用户限流
我可以给你更精确的配置。