這是最直接的方式,適用于大多數場景,通過修改vsftpd的主配置文件/etc/vsftpd.conf
實現。
sudo apt update && sudo apt install vsftpd
nano
)打開配置文件:sudo nano /etc/vsftpd.conf
local_max_rate=5242880
(約5MB/s,5×1024×1024);anon_max_rate=204800
(約200KB/s,200×1024);local_max_rate
同樣適用(上傳速度通常與下載速度分開限制,需確保write_enable=YES
開啟寫權限)。local_enable=YES
write_enable=YES
local_max_rate=5242880 # 本地用戶下載/上傳限制為5MB/s
anon_max_rate=204800 # 匿名用戶下載限制為200KB/s
Ctrl+X
→Y
→Enter
保存文件,然后重啟vsftpd使配置生效:sudo systemctl restart vsftpd
若需要基于IP、接口或更細粒度的帶寬分配(如限制某臺主機的FTP流量),可使用Linux自帶的tc
(Traffic Control)工具。
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 -p tcp --dport 21 -j MARK --set-mark 10
sudo tc filter add dev eth0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc
規則重啟后會丟失,需將其添加到/etc/rc.local
或使用systemd
服務實現開機自啟。若需限制用戶進程的文件描述符或進程數(間接影響傳輸速度),可編輯/etc/security/limits.conf
:
sudo nano /etc/security/limits.conf
添加以下內容(以限制用戶ftpuser
為例):
ftpuser hard nofile 1024 # 最大文件描述符數
ftpuser soft nofile 512 # 軟限制
ftpuser hard nproc 1024 # 最大進程數
保存后,用戶下次登錄時生效(需重新登錄)。
無論使用哪種方法,均可通過以下方式驗證速度限制是否生效:
ftp
命令或FileZilla)連接服務器;提示:
vsftpd.conf
)適合大多數場景,配置簡單且無需額外工具;tc
)適合需要精細化管理的環境,但配置復雜;sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
)。