Ubuntu FTP服务器带宽管理方法
在Ubuntu系统中,FTP服务器的带宽管理可通过应用层配置(如vsftpd、proftpd)或系统层工具(如tc、trickle)实现,以下是具体方案及操作步骤:
vsftpd是Ubuntu上最常用的FTP服务器,其配置文件支持直接设置全局、用户或匿名用户的带宽限制。
sudo apt update && sudo apt install vsftpd
/etc/vsftpd.conf,添加或修改以下参数:# 限制本地用户下载带宽(单位:字节/秒,1MB/s=1048576字节)
local_max_rate=1048576
# 限制匿名用户下载带宽(单位:字节/秒)
anon_max_rate=524288 # 512KB/s
# 允许本地用户写入(若需上传)
write_enable=YES
sudo systemctl restart vsftpd
注:
local_max_rate针对本地用户(系统账号),anon_max_rate针对匿名用户(ftp账号);若需为用户单独设置,可将用户加入/etc/vsftpd.user_list并通过user_config_dir指定个性化配置文件。
proftpd支持通过mod_bw模块实现更灵活的带宽控制(如按用户组、IP段限制)。
sudo apt install proftpd
/etc/proftpd/proftpd.conf,添加以下内容:LoadModule mod_bw.c
<IfModule mod_bandwidth.c>
BandwidthModule on
# 默认限制所有用户带宽(100KB/s)
DefaultUserLimit 102400
# 按用户组限制(如"premium"组用户限制为500KB/s)
<Group premium>
GroupLimit 512000
</Group>
</IfModule>
sudo systemctl restart proftpd
注:
DefaultUserLimit设置默认带宽(字节/秒),<Group>块可针对特定用户组调整,<User>块可针对单个用户设置。
tc是Linux内核自带的流量控制工具,可通过HTB(分层令牌桶)队列实现对FTP流量的精确限制(如按接口、IP或端口)。
sudo apt install iproute2
eth0接口(通过ip a查看),以下命令将总带宽限制为100Mbps,并为FTP流量(端口20/21)分配10Mbps:# 清除现有队列规则(谨慎操作,避免中断网络)
sudo tc qdisc del dev eth0 root 2>/dev/null
# 添加HTB根队列
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 添加父类(总带宽100Mbps)
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
# 添加FTP子类(10Mbps,最大突发15Mbps)
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit ceil 15mbit
# 标记FTP控制端口(21)和数据端口(20)的流量
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 21 0xffff flowid 1:10
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 20 0xffff flowid 1:10
sudo tc -s qdisc show dev eth0 # 查看队列状态
sudo tc -s class show dev eth0 # 查看类统计
注:
ceil参数为最大允许带宽(突发流量),rate为保证带宽;若需永久生效,可将命令添加到/etc/rc.local或使用systemd服务。
trickle是一个轻量级工具,可限制特定FTP客户端或服务器进程的带宽(无需修改服务器配置)。
sudo apt install trickle
trickle -u 100 -d 50 ftp ftp.example.com
-s参数(守护进程模式):trickle -s -d 100 -u 100 vsftpd
注:trickle仅能限制单个进程的带宽,适合临时测试或特定用户场景。
sudo apt install iftop
sudo iftop -i eth0 -n -P -f "port 20 or port 21"
sudo apt install wondershaper
sudo wondershaper eth0 1024 512 # 下载1000Kbps,上传500Kbps
以上方法可根据需求组合使用(如用vsftpd限制用户基础带宽,用tc限制整体带宽峰值),确保FTP服务器带宽的合理分配与高效利用。