温馨提示×

Ubuntu FTP如何设置传输速率限制

小樊
43
2025-10-04 17:14:16
栏目: 智能运维

Ubuntu FTP设置传输速率限制的常用方法

1. 使用vsftpd配置文件限制带宽(推荐)

vsftpd是Ubuntu上最主流的FTP服务器软件,通过修改其配置文件可直接限制用户带宽,操作简单且稳定。

  • 安装vsftpd(若未安装):
    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
    

2. 使用Trickle工具限制客户端带宽

Trickle是轻量级应用程序级带宽控制工具,无需修改服务器配置,直接限制客户端传输速度。

  • 安装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
    

3. 使用tc工具进行系统级流量控制

tc是Linux内核自带的流量控制工具,可实现更精细的网络带宽分配(如按IP、端口限制),适合复杂网络环境。

  • 安装iproute2(包含tc工具):
    sudo apt install iproute2
    
  • 配置流量控制规则(以限制FTP服务器整体带宽为例):
    • 添加HTB队列规则:
      sudo tc qdisc add dev eth0 root handle 1: htb
      
    • 分配总带宽(如100Mbit/s):
      sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
      
    • 创建子类限制特定IP带宽(如限制192.168.1.100为10Mbit/s):
      sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit ceil 10mbit
      
    • 标记目标IP的数据包:
      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服务管理。

注意事项

  • 被动模式(PASV)端口:若使用被动模式,需在vsftpd.conf中配置pasv_min_portpasv_max_port(如pasv_min_port=60000pasv_max_port=61000),并在防火墙中开放这些端口,否则可能导致传输失败。
  • 规则持久化:tc、iptables等命令的规则默认在重启后失效,需通过脚本或系统服务(如cron定时任务)恢复。
  • 性能影响:过度限制带宽可能增加服务器负载,建议根据实际网络环境调整参数。

0