转载出处

https://www.jianshu.com/p/4477c68c9ec4

踩坑实战

看完了这些,起初我只是想针对某个ip进行一下限速,这个过程中有几个小坑。

tc暂时只能在实体机上执行

tc命令需要root来执行

确认好默认队列,因为一旦限速规则和默认队列重复,现在的机器都是远程登录的,如果限速过大,将直接导致你无法再进行远程操作,只能重启机器了……

那么我要针对一个ip限速,可以执行下面这个脚本

#!/bin/bash
interface=eth0
ip=100.88.128.149
port=3306
delay=300ms
loss=5%

tc qdisc add dev $interface root handle 1: prio
# 这个命令会创建3个默认的class  1:1 1:2 1:3 PRIO 另一种意义的pfifo_fast 基于优先级的有类队列规则
tc filter add dev $interface protocol ip  parent 1: prio 1 u32 match ip dst $ip match ip dport $port 0xffff flowid 1:1 
tc filter add dev $interface protocol all parent 1: prio 2 u32 match ip dst 0.0.0.0/0 flowid 1:2
tc filter add dev $interface protocol all parent 1: prio 2 u32 match ip protocol 1 0xff flowid 1:2
# 将指定的ip和端口数据发送给 1:1 , 将其他流量指向1:2
tc qdisc add dev $interface parent 1:2 handle 20: sfq
tc qdisc add dev $interface parent 1:1 handle 10: netem delay $delay loss $loss
# 创建1:1队列,同时设置延迟和丢包率,创建1:2队列接受默认流量



版权声明:本文为photon222原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/photon222/article/details/129441174