TC命令可以限制端口速度,可以通过以下命令完成:
- 安装tc工具(如果未安装):
sudo apt-get install tc
- 创建一个名为“tc_rules”的文件夹,用来存储限速规则:
sudo mkdir /etc/tc_rules
- 创建一个名为“eth0”(也可以是其他网卡)的限速规则:
sudo tc qdisc add dev eth0 root handle 1: htb default 10
- 增加限速规则:
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
上面的命令将网卡eth0的速度限制为1 mbps。
- 将其他流量分类到默认类别:
bash复制代码sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit prio 0
- 可以对特定的IP地址或端口实施不同的限速策略。
例如,可以将IP地址为192.168.1.2的设备限制为500 kbps:
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2 flowid 1:10
sudo tc class add dev eth0 parent 1:1 classid 1:2 htb rate 500kbit ceil 500kbit prio 1
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2 flowid 1:2
类似的,可以将端口为80的流量限制为2 Mbps:
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:10
sudo tc class add dev eth0 parent 1:1 classid 1:3 htb rate 2mbit ceil 2mbit prio 2
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:3
这两个规则可编译成一个实例。其中:
- parent 1:0 指定规则的父类别。
- u32 指定过滤器使用的匹配类型。
- match ip dst 192.168.1.2 匹配目标IP地址等于192.168.1.2。
- match ip sport 80 0xffff 匹配源端口为80。
完整的命令如下:
sudo tc qdisc add dev eth0 root handle 1: htb default 10
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 1mbit ceil 1mbit prio 0
sudo tc class add dev eth0 parent 1:1 classid 1:2 htb rate 500kbit ceil 500kbit prio 1
sudo tc class add dev eth0 parent 1:1 classid 1:3 htb rate 2mbit ceil 2mbit prio 2
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2 flowid 1:2
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:3
要删除限速规则,使用以下命令之一:
sudo tc qdisc del dev eth0 root
sudo tc qdisc del dev eth0 ingress