温馨提示×

如何限制CentOS SFTP用户的带宽

小樊
50
2025-09-15 20:23:00
栏目: 智能运维

要限制CentOS SFTP用户的带宽,您可以使用tc(流量控制)工具和cgroups(控制组)来实现。以下是使用这两种方法的步骤:

方法1:使用tc工具

  1. 首先,确保您已经安装了iproute软件包,它包含了tc工具。如果没有,请使用以下命令安装:
sudo yum install iproute
  1. 为SFTP用户创建一个新的队列规则。以下命令将创建一个名为1:1的队列,并设置带宽限制:
sudo tc qdisc add dev eth0 root handle 1: htb default 30

这里,eth0是您要限制带宽的网络接口。请根据您的实际情况替换。

  1. 为新用户创建一个类,以限制其带宽。以下命令将创建一个名为30:1的类,并设置带宽限制为1Mbps:
sudo tc class add dev eth0 parent 1: classid 1:30 htb rate 1mbit ceil 1mbit
  1. 使用tc filter命令将SFTP用户流量分配到新创建的类中。首先,找到SFTP用户的UID。然后,使用以下命令:
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src <SFTP_USER_IP> flowid 1:30

<SFTP_USER_IP>替换为SFTP用户的IP地址。

  1. 重复步骤3和4,为其他SFTP用户创建类和过滤器。

方法2:使用cgroups

  1. 安装cgroup-tools软件包,它包含了cgcreatecgexec等工具:
sudo yum install cgroup-tools
  1. 创建一个新的cgroup,用于限制SFTP用户的带宽。以下命令将创建一个名为limited_bandwidth的cgroup,并设置带宽限制为1Mbps:
sudo cgcreate -g net_cls:/limited_bandwidth
echo "1:1024" | sudo tee /sys/fs/cgroup/net_cls/limited_bandwidth/net_cls.classid
  1. 为SFTP用户分配一个唯一的classid。您可以在/etc/cgconfig.conf文件中添加以下内容:
group limited_bandwidth {
    net_cls {
        net_cls.classid = 1:1024;
    }
}
  1. 重启cgconfig服务以应用更改:
sudo systemctl restart cgconfig
  1. 使用cgexec命令以受限的cgroup运行SFTP用户的shell。首先,找到SFTP用户的UID。然后,使用以下命令:
sudo cgexec -g net_cls:limited_bandwidth /bin/bash -l

现在,该用户将以受限的带宽运行SFTP会话。

注意:这些方法可能需要根据您的具体需求进行调整。在生产环境中使用之前,请确保充分测试。

0