Openwrt配置QOS流量带宽限制

Openwrt配置QOS流量带宽限制
Openwrt配置QOS流量带宽限制

Openwrt配置QOS流量带宽限制

针对特定服务做优先级设定,提高带宽使用质量,也可针对特定IP进行限速。

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36 #加载模块:

insmod xt_IPID

insmod cls_u32

insmod cls_fw

insmod sch_htb

insmod sch_sfq

insmod sch_prio

#启用IMQ虚拟网卡

ip link set imq0 up

ip link set imq1 up

#删除旧队列

tc qdisc del dev imq0 root

tc qdisc del dev imq1 root

#上传设置

#增加根队列,未标记数据默认走26

tc qdisc add dev imq0 root handle 1: htb default 26

#增加总流量规则

tc class add dev imq0 parent 1: classid 1:1 htb rate 350kbit #增加子类

tc class add dev imq0 parent 1:1 classid 1:20 htb rate 80kbit ceil 250kbit prio 0

tc class add dev imq0 parent 1:1 classid 1:21 htb rate 80kbit ceil 250kbit prio 1

tc class add dev imq0 parent 1:1 classid 1:22 htb rate 80kbit ceil 250kbit prio 2

tc class add dev imq0 parent 1:1 classid 1:23 htb rate 80kbit ceil 250kbit prio 3

tc class add dev imq0 parent 1:1 classid 1:24 htb rate 80kbit ceil 250kbit prio 4

tc class add dev imq0 parent 1:1 classid 1:25 htb rate

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76 50kbit ceil 250kbit prio 5

tc class add dev imq0 parent 1:1 classid 1:26 htb rate 50kbit ceil 150kbit prio 6

tc class add dev imq0 parent 1:1 classid 1:27 htb rate 50kbit ceil 100kbit prio 7

#为子类添加SFQ公平队列,每10秒重置

tc qdisc add dev imq0 parent 1:20 handle 20: sfq perturb 10

tc qdisc add dev imq0 parent 1:21 handle 21: sfq perturb 10

tc qdisc add dev imq0 parent 1:22 handle 22: sfq perturb 10

tc qdisc add dev imq0 parent 1:23 handle 23: sfq perturb 10

tc qdisc add dev imq0 parent 1:24 handle 24: sfq perturb 10

tc qdisc add dev imq0 parent 1:25 handle 25: sfq perturb 10

tc qdisc add dev imq0 parent 1:26 handle 26: sfq perturb 10

tc qdisc add dev imq0 parent 1:27 handle 27: sfq perturb 10

#添加过滤规则配合Iptables Mark标记

#tc filter add dev imq0 parent 1:0 protocol ip u32 match ip sport 22 0xffff flowid 1:10

#使用U32标记数据,下面使用Iptables mark,容易。

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle 25 fw flowid 1:25

tc filter add dev imq0 parent 1:0 prio 0 protocol ip handle

77 78 79 80

81 82 83 84 85 86 87

88

89 90 91 92 93

94 95 96 97 98

99 100

101

102

103 104

105 106

107 108

109

110 111 112

113 114 115 116

26 fw flowid 1:26

tc

filter add dev imq0 parent 1:0 prio 0 protocol ip handle 27 fw flowid 1:27

#上传数据转入特定链

iptables -t mangle -N MYSHAPER-OUT

iptables -t mangle -A POSTROUTING -o pppoe-wan -j MYSHAPER-OUT

iptables -t mangle -A MYSHAPER-OUT -j IMQ --todev 0 #为特定数据打上标记配合之前过滤规则

#iptables -t mangle -I MYSHAPER-OUT -s 192.168.1.16 -j MARK --set-mark 27 #限制特定IP 上传速度 #iptables -t mangle -I MYSHAPER-OUT -s 192.168.1.16 -j RETURN iptables -t mangle -A MYSHAPER-OUT -p tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 20 #提高HTTP 连接速度 iptables -t mangle -A MYSHAPER-OUT -p tcp --tcp-flags SYN,RST,ACK SYN -j RETURN

iptables -t mangle -A MYSHAPER-OUT -p udp --dport 53 -j MARK --set-mark 20 #DNS 查询

iptables -t mangle -A MYSHAPER-OUT -p udp --dport 53 -j RETURN iptables -t mangle -A MYSHAPER-OUT -p icmp -j MARK --set-mark 21 #ICMP 数据

iptables -t mangle -A MYSHAPER-OUT -p icmp -j RETURN

iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j MARK --set-mark 21 #小数据包

iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j RETURN iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 22 -j

MARK --set-mark 22 #SSH 连接 iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 22 -j RETURN

iptables -t mangle -A MYSHAPER-OUT -p udp --dport 1194 -j

MARK --set-mark 22 #VPN连接

iptables -t mangle -A MYSHAPER-OUT -p udp --dport 1194 -j RETURN

iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 80 -j MARK --set-mark 23 #HTTP连接

iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 80 -j RETURN

iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 443 -j MARK --set-mark 24 #HTTPS连接

iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 443 -j RETURN

#上传设置完成

#下载设置

#增加根队列,未标记数据默认走24

tc qdisc add dev imq1 handle 1: root htb default 24

tc class add dev imq1 parent 1: classid 1:1 htb rate 3500kbit

#添加子类

tc class add dev imq1 parent 1:1 classid 1:20 htb rate 1000kbit ceil 1500kbit prio 0

tc class add dev imq1 parent 1:1 classid 1:21 htb rate 1500kbit ceil 2500kbit prio 1

tc class add dev imq1 parent 1:1 classid 1:22 htb rate 2000kbit ceil 3500kbit prio 2

tc class add dev imq1 parent 1:1 classid 1:23 htb rate 1000kbit ceil 1500kbit prio 3

tc class add dev imq1 parent 1:1 classid 1:24 htb rate 1000kbit ceil 1500kbit prio 4

#为子类添加SFQ公平队列

tc qdisc add dev imq1 parent 1:20 handle 20: sfq perturb 10

tc qdisc add dev imq1 parent 1:21 handle 21: sfq perturb 10

tc qdisc add dev imq1 parent 1:22 handle 22: sfq perturb

10

tc qdisc add dev imq1 parent 1:23 handle 23: sfq perturb 10

tc qdisc add dev imq1 parent 1:24 handle 24: sfq perturb 10

#过滤规则

tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20

tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21

tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22

tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23

tc filter add dev imq1 parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24

#下载数据转入特定链

iptables -t mangle -N MYSHAPER-IN

iptables -t mangle -A PREROUTING -i pppoe-wan -j MYSHAPER-IN

iptables -t mangle -A MYSHAPER-IN -j IMQ --todev 1

#分类标记数据

#iptables -t mangle -A MYSHAPER-IN -d 192.168.1.16 -j MARK --set-mark 23 #限制特定IP下载速度

#iptables -t mangle -A MYSHAPER-IN -d 192.168.1.16 -j RETURN

iptables -t mangle -A MYSHAPER-IN -p tcp -m length

--length :64 -j MARK --set-mark 20 #小数据优先

iptables -t mangle -A MYSHAPER-IN -p tcp -m length

--length :64 -j RETURN

iptables -t mangle -A MYSHAPER-IN -p icmp -j MARK

--set-mark 20 #ICMP数据

iptables -t mangle -A MYSHAPER-IN -p icmp -j RETURN iptables -t mangle -A MYSHAPER-IN -p tcp --sport 22 -j MARK

--set-mark 21 #SSH连接

相关文档
最新文档