在开始配置前,请确保已完成以下步骤:
sudo apt-get install vsftpd,CentOS使用sudo yum install vsftpd);/etc/vsftpd.conf(或对应路径的主配置文件),避免误操作导致服务异常;sudo systemctl restart vsftpd)。若需限制服务器所有FTP用户的总带宽,可通过主配置文件设置全局参数:
sudo nano /etc/vsftpd.conf(路径可能因系统略有差异,如CentOS为/etc/vsftpd/vsftpd.conf);# 全局限速(单位:字节/秒,1KB/s=1024字节/秒)
bandwidth_limit=102400 # 限制为100KB/s(示例值,可根据需求调整)
注:部分旧版本vsftpd可能不支持
bandwidth_limit参数,此时可使用local_max_rate(针对本地用户)或anon_max_rate(针对匿名用户)替代,但全局效果需结合用户类型判断。
若需为不同用户分配不同带宽,需通过用户配置目录实现:
# 指定用户配置文件目录(需手动创建)
user_config_dir=/etc/vsftpd/user_conf
sudo mkdir /etc/vsftpd/user_conf
sudo chmod 755 /etc/vsftpd/user_conf # 确保vsftpd进程可读取
ftpuser1的下载速度为200KB/s(204800字节/秒),创建文件/etc/vsftpd/user_conf/ftpuser1,内容如下:# 用户级限速(仅对该用户生效)
local_max_rate=204800
sudo systemctl restart vsftpd。若需限制**匿名用户(anonymous)**的带宽,可直接在主配置文件中设置:
# 匿名用户限速(单位:字节/秒)
anon_max_rate=51200 # 限制为50KB/s(示例值)
同时,需确保匿名用户访问权限符合需求(如是否允许上传):
# 允许匿名用户访问(默认开启)
anonymous_enable=YES
# 允许匿名用户上传文件(需配合写入权限)
anon_upload_enable=YES
# 匿名用户上传目录的写入权限(需设置为可写)
anon_root=/var/ftp/pub
chmod 777 /var/ftp/pub # 示例:开放写入权限(生产环境需谨慎)
若上述内置参数无法满足需求,可尝试以下工具实现更灵活的带宽控制:
trickle是轻量级带宽控制工具,可限制vsftpd进程的带宽:
sudo apt-get install trickle(Debian/Ubuntu)或sudo yum install trickle(CentOS);sudo trickle -d 100 -u 50 vsftpd # -d限制下载速度(100KB/s),-u限制上传速度(50KB/s)
注:此方法需每次启动vsftpd时手动执行,适合临时限速场景。
tc是Linux内核自带的流量控制工具,可实现更精细的网络带宽分配:
eth0接口的下载带宽为1MB/s):sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst <FTP_SERVER_IP> flowid 1:1
注:需替换
<FTP_SERVER_IP>为服务器实际IP,此方法需一定的网络知识,适合复杂网络环境。
配置完成后,需通过以下步骤验证带宽限制是否生效:
lftp、FileZilla)连接服务器;/var/log/vsftpd.log),检查是否有带宽限制相关的错误信息。limit_rate(旧版本参数)与local_max_rate/anon_max_rate(新版本推荐),优先使用后者;setsebool -P ftpd_full_access on)。