香港服务器上FTP服务占用过多的带宽,会影响到其他服务的正常运行,通过限制FTP带宽(限制上FTP上传和下载的速度)可以合理的进行带宽分配,既不影响现有的FTP服务,同时也可以保持其他服务的稳定性。FTP服务器软件比较多,常见的包括vsftpd、ProFTPD或者Pure-FTPd,不同的软件配置方法也有所不同。
vsftpd可以通过配置文件中的anon_max_rate和local_max_rate参数来限制匿名用户和本地用户的速率。而ProFTPD则使用TransferRate指令,Pure-FTPd可能需要通过启动参数或配置文件进行设置。此外,还可以考虑使用流量控制工具如tc(Traffic Control)在系统层面限制FTP端口的带宽,这样不依赖具体的FTP服务器软件,但可能需要更复杂的配置。
在香港服务器限制FTP带宽,可以通过FTP服务软件的内置配置或系统级流量控制工具实现,下面我们一一来介绍。
方法 1:通过 FTP 服务软件内置配置
常用FTP服务器-vsftpd,支持通过配置文件限制用户上传/下载速率。
编辑配置文件 /etc/vsftpd.conf:
sudo nano /etc/vsftpd.conf
添加以下参数(单位为字节/秒):
# 限制匿名用户下载速率(示例:1MB/s = 1000000 字节/秒)
anon_max_rate=1000000
# 限制本地用户下载速率
local_max_rate=2000000
# 限制上传速率(需启用写权限)
# write_enable=YES
# anon_upload_rate=500000 # 匿名用户上传限速
# local_upload_rate=1000000 # 本地用户上传限速
重启 vsftpd 服务:
sudo systemctl restart vsftpd
ProFTPD,使用 TransferRate 指令控制速率。
编辑配置文件 /etc/proftpd/proftpd.conf:
sudo nano /etc/proftpd/proftpd.conf
在全局或用户作用域添加限速规则:
# 全局下载限速(示例:2MB/s)
TransferRate DOWN 2000
# 全局上传限速(示例:1MB/s)
TransferRate UP 1000
# 针对特定用户或组限速
<User ftpuser>
TransferRate DOWN 500
TransferRate UP 300
</User>
单位是KB/s(1MB/s = 1000 KB/s)。
重启ProFTPD服务:
sudo systemctl restart proftpd
方法 2:使用tc系统级流量控制
如果FTP服务软件不支持限速,可以通过 Linux 内核的流量控制工具 tc 限制 FTP 端口的带宽。
确认网卡名称(如 eth0):
ip addr show
创建流量控制规则。以下示例限制FTP端口(21)的下载和上传带宽为5Mbps:
# 清除旧规则(谨慎操作)
sudo tc qdisc del dev eth0 root
# 创建队列规则(使用令牌桶算法)
sudo tc qdisc add dev eth0 root handle 1: htb default 10
# 添加带宽限制类
sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 5mbit ceil 5mbit
# 匹配 FTP 流量(端口21)
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip dport 21 0xffff flowid 1:10 # 限制下载(目标端口21)
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip sport 21 0xffff flowid 1:10 # 限制上传(源端口21)
验证规则,查看当前流量控制状态:
sudo tc -s qdisc show dev eth0
方法 3:使用trickle用户级带宽限制
trickle是一个轻量级工具,可为单个进程动态限制带宽。
安装 trickle:
sudo apt install trickle
启动FTP服务时附加限速(示例:限制为 1MB/s):
# 限制下载1MB/s,上传0.5MB/s
sudo trickle -d 1000 -u 500 /usr/sbin/vsftpd
验证限速效果
使用iperf3 测试带宽,在一台客户端运行:
# 测试下载(从服务器拉取文件)
iperf3 -c 服务器IP -p 21 -R
# 测试上传(向服务器推送文件)
iperf3 -c 服务器IP -p 21
监控实时流量,使用 iftop 或 nload:
sudo iftop -i eth0 -f "port 21"
在香港服务器限制FTP带宽的时候,用户可能还需要注意单位的转换,比如将Mbps转换为KB/s,确保设置的数值正确。配置完成以后需要重启服务使设置生效,务必要进行测试确认限速是否有效。如果是在多用户的场景下,tc和trickle的限制是全局的(所有用户共享带宽),若需按用户限速,需结合FTP 软件或配置更复杂的tc规则。tc规则重启后失效,需将命令写入。最后还有一些常见问题,比如如何监控带宽使用,或者处理限速后用户连接数过多的情况,建议结合连接数限制来综合管理带宽资源。