温馨提示×

Ubuntu FTPServer带宽限制策略

小樊
45
2025-12-07 08:32:08
栏目: 智能运维

Ubuntu FTP Server 带宽限制策略

一、策略总览与选择

  • 按服务器进程限速:在 FTP 服务进程内限制每个连接的吞吐,粒度细、配置简单,适合“每用户/每连接”的公平分配。代表:vsftpd 的 local_max_rate/anon_max_rateProFTPD 的 mod_bandwidth
  • 按系统或接口限速:在系统层面限制某个进程、用户或网口的带宽,适合“全局/按主机/按接口”的管控。代表:trickle(用户态限速)、tc + iptables/mangle(内核队列整形)、wondershaper(简化接口限速)。
  • 选择建议:优先使用“服务器内限速”满足业务公平;需要统一出口或按主机治理时叠加“系统/接口限速”;客户端限速仅作为临时或测试手段。

二、服务器内限速配置

  • vsftpd(推荐)

    • 安装与启用:
      • sudo apt update && sudo apt install vsftpd
      • sudo systemctl enable --now vsftpd
    • 关键参数(单位:字节/秒):
      • local_max_rate:限制本地(系统)用户的最大传输速率(上/下行均受控,取决于数据方向)。
      • anon_max_rate:限制匿名用户的最大传输速率。
    • 示例(本地用户约200 KB/s,匿名用户约100 KB/s):
      • echo -e “local_max_rate=204800\nanon_max_rate=102400” | sudo tee -a /etc/vsftpd.conf
      • sudo systemctl restart vsftpd
    • 说明:vsftpd 以“每连接”生效,多个并发连接会按配置值分别限速并叠加。若需更细粒度(按目录/虚拟用户),需结合 PAM/虚拟用户与多实例或选择 ProFTPD 模块方案。
  • ProFTPD(模块方式)

    • 安装与启用:
      • sudo apt update && sudo apt install proftpd
    • 启用模块与限速(单位:字节/秒):
      • /etc/proftpd/proftpd.conf 的顶层或 内加入:
        • BandwidthModule on
        • DefaultUserLimit 102400 # 默认每用户上限(示例:100 KB/s)
      • 如需按用户/组/目录细化,可结合 等配置块设置不同上限。
    • 使配置生效:
      • sudo systemctl restart proftpd
    • 说明:mod_bandwidth 提供用户/组/目录/速率/突发等多维控制,适合复杂场景。

三、系统级与接口限速

  • trickle(用户态,进程级)

    • 适用:临时限制某个命令/服务的带宽,或对不支持内置限速的进程做“外挂”限速。
    • 示例:
      • 限制客户端:trickle -u 100 -d 50 ftp(上传100 KB/s、下载50 KB/s
      • 限制服务器进程(需以普通用户运行服务,且服务不脱离控制终端):trickle -s -u 1024 -d 1024 vsftpd
    • 注意:trickle 对设置了 setuid/setgid 或已脱离终端的守护进程可能不生效;更适合客户端或测试。
  • tc + iptables(内核队列,按主机/接口/方向)

    • 适用:对出口/入口总带宽或特定来源做整形,稳定且系统级生效。
    • 示例(将主机 192.168.1.100 出站限速为 10 Mbit/s):
      • 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
    • 提示:上述规则重启后会丢失,建议写成脚本并加入开机自启(如 systemd unit 或 rc.local)。
  • wondershaper(简化接口限速)

    • 适用:快速为某网口设置“下载/上传”上限,适合整机上/下行总带宽控制。
    • 示例:
      • sudo apt install wondershaper
      • sudo wondershaper eth0 1024 1024 # 下载/上传各约1 Mbit/s
    • 说明:便捷但不如 tc 灵活,适合“一刀切”的出口策略。

四、验证与运维要点

  • 验证方法
    • 服务器端观察:sudo ss -tnp | grep vsftpd 或 sudo systemctl status vsftpd;必要时查看日志(journalctl -u vsftpd)。
    • 客户端测速:使用 ftp/ncftp/lftp 下载/上传大文件,观察速率是否接近设定值(注意区分 KB/sKbit/s:1 KB/s ≈ 8 Kbit/s)。
  • 运维建议
    • 单位换算:vsftpd/ProFTPD 限速参数为字节/秒;tc/wondershaper 多为Kbit/sMbit/s,配置时务必统一单位。
    • 并发影响:服务器内限速按“每连接”计算,N 个并发连接的理论总吞吐≈单连接限速×N(受协议开销与网络状况影响)。
    • 持久化:tc/wondershaper 规则需持久化;vsftpd/proftpd 修改配置后需重启服务生效。
    • 生效范围:trickle 影响“单个进程”;tc 影响“匹配规则的主机/接口/方向”;服务器内限速影响“该服务所有连接”。根据治理目标选择或叠加使用。

0