Ubuntu FTP设置传输速率限制的常用方法
vsftpd是Ubuntu上最主流的FTP服务器软件,通过修改其配置文件可直接限制用户带宽,操作简单且稳定。
sudo apt update && sudo apt install vsftpd
nano)打开/etc/vsftpd.conf:sudo nano /etc/vsftpd.conf
local_max_rate(本地用户,默认包括匿名用户)和anon_max_rate(匿名用户)参数,单位为字节/秒(1KB/s=1024字节/秒)。例如:local_max_rate=102400 # 本地用户默认下载/上传限制为100KB/s
anon_max_rate=51200 # 匿名用户默认下载限制为50KB/s(上传通常禁用)
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist # 用户列表文件路径
userlist_deny=NO # 允许列表中的用户连接(设为YES则拒绝)
然后在/etc/vsftpd.userlist中添加用户名(每行一个),并在配置文件中通过local_max_rate覆盖其默认限制(需配合user_config_dir指向用户专属配置目录,此处略复杂,建议参考vsftpd文档)。sudo systemctl restart vsftpd
Trickle是轻量级应用程序级带宽控制工具,无需修改服务器配置,直接限制客户端传输速度。
sudo apt install trickle
trickle命令启动FTP客户端,指定上传(-u)和下载(-d)速率(单位:KB/s)。例如:trickle -u 50 -d 100 ftp your_server_ip # 上传限制50KB/s,下载限制100KB/s
或限制curl(用于测试):trickle -u 20 -d 40 curl -O ftp://your_server_ip/file.zip
tc是Linux内核自带的流量控制工具,可实现更精细的网络带宽分配(如按IP、端口限制),适合复杂网络环境。
sudo apt install iproute2
sudo tc qdisc add dev eth0 root handle 1: htb
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit ceil 10mbit
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
/etc/rc.local(需赋予执行权限chmod +x /etc/rc.local)或使用netplan/systemd服务管理。vsftpd.conf中配置pasv_min_port和pasv_max_port(如pasv_min_port=60000、pasv_max_port=61000),并在防火墙中开放这些端口,否则可能导致传输失败。cron定时任务)恢复。