debian

如何用Debian iptables限制带宽

小樊
42
2025-04-09 20:31:43
栏目: 智能运维

在Debian系统中,使用iptables限制带宽可以通过tc(traffic control)工具来实现。以下是一个基本的步骤指南,帮助你设置带宽限制:

安装必要的软件包

首先,确保你已经安装了iproute2包,它包含了tc工具。

sudo apt update
sudo apt install iproute2

创建带宽限制规则

假设你想限制某个IP地址的上传和下载速度,可以使用以下步骤:

  1. 创建一个htb(Hierarchical Token Bucket)队列

    sudo tc qdisc add dev eth0 root handle 1: htb default 30
    

    这里,eth0是你的网络接口名称,1:是主队列的句柄,default 30是默认类。

  2. 创建一个类并设置带宽限制

    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
    

    这里,1:1是类的句柄,rate是保证的带宽,ceil是最大带宽。

  3. 为特定IP地址创建子类并设置带宽限制

    sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:1
    sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbps ceil 1mbit
    

    这里,192.168.1.100是你想要限制的IP地址,1:10是子类的句柄,rate是保证的带宽,ceil是最大带宽。

  4. 重复上述步骤为其他IP地址或接口设置带宽限制

查看和删除规则

你可以使用以下命令查看当前的tc规则:

sudo tc -s qdisc ls dev eth0
sudo tc -s class ls dev eth0
sudo tc -s filter ls dev eth0

如果你需要删除某个规则,可以使用以下命令:

sudo tc qdisc del dev eth0 root

持久化规则

默认情况下,这些规则在系统重启后会丢失。为了持久化这些规则,你可以将它们添加到系统的启动脚本中,例如/etc/rc.local文件中。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:1
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbps ceil 1mbit

exit 0

确保/etc/rc.local文件是可执行的:

sudo chmod +x /etc/rc.local

通过以上步骤,你可以在Debian系统中使用iptables和tc工具来限制带宽。请根据你的具体需求调整IP地址、接口名称和带宽限制值。

0
看了该问题的人还看了