在CentOS系统中,使用iptables限制带宽可以通过tc(Traffic Control)工具来实现。以下是一个基本的步骤指南:
首先,确保你已经安装了iproute和iptables-services包。
sudo yum install iproute iptables-services -y
启动iptables服务并设置为开机自启。
sudo systemctl start iptables
sudo systemctl enable iptables
使用tc命令来创建带宽限制规则。以下是一个示例,限制某个IP地址的上传和下载速度。
# 创建一个htb队列
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 创建一个类,设置总带宽
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
# 创建一个子类,设置上传速度
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbps ceil 1mbit
# 创建一个过滤器,将特定IP的流量导向子类
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:10
# 创建一个htb队列
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 创建一个类,设置总带宽
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
# 创建一个子类,设置下载速度
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 512kbps ceil 1mbit
# 创建一个过滤器,将特定IP的流量导向子类
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.100 flowid 1:20
你可以使用以下命令查看当前的tc规则:
sudo tc -s qdisc ls dev eth0
sudo tc -s class ls dev eth0
sudo tc -s filter ls dev eth0
如果你需要删除某个tc规则,可以使用以下命令:
# 删除过滤器
sudo tc filter del dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:10
# 删除类
sudo tc class del dev eth0 parent 1: classid 1:10
# 删除队列
sudo tc qdisc del dev eth0 root
通过以上步骤,你可以在CentOS系统中使用iptables和tc工具来限制特定IP地址的带宽。