vsftpd作为Linux下常用的FTP服务器,可通过配置文件直接限制用户带宽,实现基础的带宽分配。
关键配置参数:
/etc/vsftpd/vsftpd.conf中添加anonymous_max_rate=30000(单位:字节/秒,此处限制为30KB/s),防止匿名用户占用过多带宽。local_max_rate=50000(50KB/s),限制本地用户的传输速度,避免单个用户独占资源。sudo systemctl restart vsftpd重启服务使设置生效。若需更精准的带宽分配(如按用户/IP划分),可使用Linux内核自带的tc(Traffic Control)工具,通过HTB(层级令牌桶)算法实现。
操作步骤:
sudo tc qdisc add dev eth0 root handle 1: htb default 10 # 为eth0接口创建HTB队列,默认带宽归类到10
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit # 父类总带宽限制为10Mbit/s
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit ceil 5mbit # 子类(如用户1)分配2-5Mbit/s带宽
iptables标记目标用户的IP(如192.168.1.100):sudo iptables -t mangle -A OUTPUT -s 192.168.1.100 -j MARK --set-mark 10
将标记的流量关联到子类:sudo tc filter add dev eth0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
优势:可实现按用户、IP、端口等多维度限制,适合多用户共享服务器的场景。
若需快速限制单个用户或进程的带宽,可使用trickle工具(无需修改服务器配置)。
安装与使用:
sudo apt-get install tricklesudo yum install tricklesudo trickle -d 100 -u 100 vsftpd # 限制下载速度为100KB/s,上传速度为100KB/s
适用场景:临时测试或不想修改主配置文件的快速限制。
除带宽限制外,还需通过以下策略优化网络资源使用:
vsftpd.conf:pasv_enable=YES,并设置端口范围pasv_min_port=60000、pasv_max_port=61000,解决主动模式下的NAT/防火墙问题,提升传输稳定性。/etc/sysctl.conf,增大TCP窗口大小以提升高延迟网络的利用率:net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
执行sudo sysctl -p使设置生效。vsftpd.conf中启用compress=YES,对传输的文件进行实时压缩(如文本、日志等),减少数据传输量。max_clients=100(最大并发连接数)、max_per_ip=5(单个IP最大并发数),防止服务器过载。优化后需定期监控带宽使用情况,及时调整策略:
iftop(实时查看流量)、nload(监控带宽变化)、vnstat(统计历史流量)等工具,分析带宽瓶颈。vsftpd的日志(/var/log/vsftpd.log)查看用户传输行为,识别异常流量(如大量下载的用户)。通过上述策略的组合应用,可有效限制vsftpd的带宽使用,优化Linux服务器的网络资源分配,确保服务稳定性和多用户的公平性。