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:10
trickle
可限制單個進程的帶寬,適合臨時限制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
等工具下載/上傳大文件,觀察實際速度是否符合預期。