在 Linux 上给 FTP 服务器限速,常见做法取决于你用的是哪种 FTP 服务器软件。下面按 最常用场景 给你说明,并给出配置示例。
编辑配置文件(通常是 /etc/vsftpd.conf):
# 限制上传速度(单位:字节/秒)
local_max_rate=102400 # 100KB/s
anon_max_rate=51200 # 匿名用户 50KB/s
说明:
local_max_rate:本地用户anon_max_rate:匿名用户重启服务:
systemctl restart vsftpd
vsftpd 本身不支持总带宽限制,但可以用 tc(流量控制) 实现。
示例:限制 FTP(端口 21 + 被动端口)总速度为 1Mbps
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
⚠️ 注意:
iptables + tc 使用编辑 /etc/proftpd/proftpd.conf:
<IfModule mod_xfer.c>
TransferRate RETR 100 # 下载 100KB/s
TransferRate STOR 80 # 上传 80KB/s
</IfModule>
重启:
systemctl restart proftpd
<Directory /home/ftp>
UserLimit 1
TransferRate RETR 200
</Directory>
pure-ftpd -T 100:200
含义:
pure-ftpd -T 100:200 -u 1000
或结合数据库 / 虚拟用户配置。
如果你 不管用哪种 FTP 服务器,都可以用:
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 21 0xffff flowid 1:1
trickle -d 100 -u 50 vsftpd
⚠️ 不推荐用于生产环境
| 场景 | 推荐方式 |
|---|---|
| 限制单个用户 | vsftpd local_max_rate |
| 限制匿名用户 | vsftpd anon_max_rate |
| 限制总带宽 | tc |
| 企业级 FTP | ProFTPD + TransferRate |
| 临时测试 | trickle |
你可以告诉我:
我可以直接给你 可复制粘贴的完整配置。