vsftpd带宽限制设置方法
vsftpd自身提供了灵活的带宽限制参数,可通过修改主配置文件实现用户级或全局带宽控制,操作简单且无需额外工具。
针对匿名用户(ftp/anonymous)设置最大传输速率,参数为anonymous_max_rate(单位:字节/秒)。
示例:限制匿名用户最大下载/上传速度为30KB/s(30×1024=30720字节/秒),在/etc/vsftpd/vsftpd.conf中添加或修改:
anonymous_max_rate=30720
针对系统本地用户(如通过SSH登录的用户)设置最大传输速率,参数为local_max_rate(单位:字节/秒)。
示例:限制本地用户最大速度为50KB/s(50×1024=51200字节/秒),在配置文件中添加或修改:
local_max_rate=51200
若需为不同用户设置不同带宽,可通过user_config_dir参数指定用户配置目录,为每个用户单独配置local_max_rate。
步骤如下:
vsftpd.conf中添加:user_config_dir=/etc/vsftpd/user_conf(目录需手动创建并设置权限:sudo mkdir -p /etc/vsftpd/user_conf && sudo chmod 755 /etc/vsftpd/user_conf);user1创建/etc/vsftpd/user_conf/user1,内容为:local_max_rate=20480(限制user1的最大速度为20KB/s);sudo systemctl restart vsftpd若需限制所有用户的总带宽(而非单个用户),可使用bandwidth_limit参数(单位:字节/秒)。
示例:限制所有用户总带宽为100KB/s(100×1024=102400字节/秒),在配置文件中添加:
bandwidth_limit=102400
若需对整个FTP服务或特定IP进行流量整形(如限制FTP占用的总带宽),可使用Linux内核自带的tc工具或第三方工具trickle。
tc通过HTB(层级令牌桶)算法实现流量控制,适合对整个网络接口或特定用户进行带宽限制。
步骤如下:
iproute2(包含tc工具):sudo apt-get install iproute2(Debian/Ubuntu)或sudo yum install iproute(CentOS/RHEL);sudo tc qdisc del dev eth0 root(eth0为网络接口,需替换为实际接口,如ens33);sudo tc qdisc add dev eth0 root handle 1: htb default 10(默认带宽为10Mbit/s,可根据需求调整);sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit(总带宽上限为100Mbit/s);sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20mbit ceil 20mbit(FTP服务最大可用20Mbit/s);iptables标记FTP数据包(端口21及被动模式端口范围),例如:sudo iptables -t mangle -A OUTPUT -p tcp --dport 21 -j MARK --set-mark 10;sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10trickle可限制单个进程的带宽,适合临时限制FTP客户端或vsftpd服务的带宽。
步骤如下:
trickle:sudo apt-get install trickle(Debian/Ubuntu)或sudo yum install trickle(CentOS/RHEL);trickle -u 100 -d 50 ftp ftp.example.com;/etc/init.d/vsftpd),在启动命令前添加trickle,例如:trickle -u 200 -d 100 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf &(限制vsftpd上传200KB/s、下载100KB/s)sudo systemctl restart vsftpd)使更改生效;anonymous_max_rate、local_max_rate等参数的单位为字节/秒(1KB/s=1024字节/秒),而tc工具的单位为比特/秒(1Kbit/s=1000比特/秒);lftp(lftp ftp.example.com)或wget等工具下载/上传大文件,观察实际速度是否符合预期。