QoS:ajustements mineurs
[ongolaboy.git] / scripts / qos / regles.bacgl
1 #!/bin/sh
2
3 IF_INTERNET=eth0.2
4 NET_BACGL=195.24.196.112/28
5 NET_BACGL2=195.24.195.224/29
6 NET_DMZ_Priv=192.168.10.0/24
7 NET_DMZ_Partenaire_Priv=192.168.11.0/24
8 IP_VISIO_Dir=195.24.196.124
9 IP_VISIO_Reu=195.24.196.125
10 IP_VISIO_Form=195.24.196.126
11 IP_Pub_SOGo=195.24.196.116
12 IP_Pub_VOIP=195.24.196.117
13
14
15 modprobe ifb numifbs=1
16
17 ip link set up ifb0
18
19 #pour tout supprimer
20 # tc qdisc dev $IF_INTERNET ingress
21 # tc qdisc del dev ifb0 root handle 1:
22
23 tc qdisc add dev  $IF_INTERNET ingress
24
25 #la version IPv6 ??
26 #tc filter add dev $IF_INTERNET parent ffff: protocol ip prio 1 u32 \
27 #       match ip6 dst $NET6_BACGL \
28 #       flowid 1:1 action mirred egress redirect dev ifb0
29
30 tc filter add dev $IF_INTERNET parent ffff: protocol ip prio 1 u32 \
31         match ip dst $NET_BACGL \
32         flowid 1:1 action mirred egress redirect dev ifb0
33
34 tc filter add dev $IF_INTERNET parent ffff: protocol ip prio 1 u32 \
35         match ip dst $NET_BACGL2 \
36         flowid 1:1 action mirred egress redirect dev ifb0
37
38 echo "Création de classes"
39 echo "Création de la racine"
40
41 tc qdisc add dev ifb0 root handle 1: htb default 190
42
43 # premiere classe fille qui agrège tout le traffic
44 tc class add dev ifb0 parent 1: classid 1:1 htb rate 9882kbit ceil 10000kbit
45
46 # creation des classes enfants
47 # classe VOIP
48 tc class add dev ifb0 parent 1:1 classid 1:11 htb rate 128kbit \
49         ceil 256kbit prio 1
50
51 #groupe des visios
52 tc class add dev ifb0 parent 1:1 classid 1:12 htb rate 3000kbit \
53         ceil 3500kbit prio 3
54
55 # groupe DMZ Pub
56 tc class add dev ifb0 parent 1:1 classid 1:13 htb rate 150kbit \
57         ceil 1000kbit prio 2
58
59 # groupe DMZ Priv
60 tc class add dev ifb0 parent 1:1 classid 1:14 htb rate 1000kbit \
61         ceil 2000kbit prio 2
62
63 # groupe DMZ Partenaire Priv
64 tc class add dev ifb0 parent 1:1 classid 1:15 htb rate 100kbit \
65         ceil 512kbit prio 4
66
67 # groupe DMZ Partenaire Pub
68 tc class add dev ifb0 parent 1:1 classid 1:16 htb rate 100kbit \
69         ceil 512kbit prio 4
70
71 # sonde RIPE
72 tc class add dev ifb0 parent 1:1 classid 1:17 htb rate 100kbit \
73         ceil 512kbit prio 1
74
75 # groupe PC
76 tc class add dev ifb0 parent 1:1 classid 1:20 htb rate 5304kbit \
77         ceil 9000kbit prio 4
78
79 #A l'interieur des PC on a les sous-classes suivantes
80 # groupe prof
81 tc class add dev ifb0 parent 1:20 classid 1:132 htb rate 768kbit \
82         ceil 1500kbit prio 8
83
84 # groupe foad
85 tc class add dev ifb0 parent 1:20 classid 1:133 htb rate 768kbit \
86         ceil 1500kbit prio 7
87
88 # groupe cai
89 tc class add dev ifb0 parent 1:20 classid 1:131 htb rate 1000kbit \
90         ceil 4000kbit prio 7
91
92 # groupe formation
93 tc class add dev ifb0 parent 1:20 classid 1:130 htb rate 1000kbit \
94         ceil 5000kbit prio 6
95
96 # groupe nomade
97 tc class add dev ifb0 parent 1:20 classid 1:125 htb rate 768kbit \
98         ceil 3500kbit prio 8
99
100 # groupe personnel
101 tc class add dev ifb0 parent 1:20 classid 1:120 htb rate 100kbit \
102         ceil 256kbit prio 5
103
104 # groupe le reste
105 tc class add dev ifb0 parent 1:14 classid 1:190 htb rate 10kbit \
106         ceil 64kbit prio 9
107
108
109 # ordonnanceurs par classe
110 for id in 120 {130..133} 190
111 do
112         tc qdisc add dev ifb0 parent 1:$id handle $id: sfq perturb 10
113 done
114 #tc qdisc add dev ifb0 parent 1:11 handle 11: sfq perturb 10
115 #tc qdisc add dev ifb0 parent 1:12 handle 12: sfq perturb 10
116
117 # mise en place des filtres
118 # VOIP
119 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
120         match ip protocol 17 0xff \
121         match ip sport 4569 0xffff flowid 1:11
122
123 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
124         match ip protocol 17 0xff \
125         match ip dport 4569 0xffff flowid 1:11
126
127 # Visio
128 #mettre le masque IPvisio/28
129 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
130         match ip src $IP_VISIO_Dir/28 flowid 1:12
131 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
132         match ip src $IP_VISIO_Reu/28 flowid 1:12
133 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
134         match ip src $IP_VISIO_Form/28 flowid 1:12
135
136 # specifique à la DMZ
137 # DMZ Pub
138 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
139         match ip src $IP_Pub_SOGo/28 flowid 1:13
140
141 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
142         match ip src $IP_Pub_VOIP/28 flowid 1:13
143
144 # DMZ Priv
145 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
146         match ip src $NET_DMZ_Priv flowid 1:14
147
148 #DMZ partenaire priv
149 tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 \
150         match ip src $NET_DMZ_Partenaire_Priv flowid 1:15
151
152 #DMZ partenaire pub .. Est-ce que ça vaut vraiment la peine ?
153
154 #sonde RIPE
155 tc filter add ifb0 parent 1:0 protocol ip  prio 1 handle 35 fw classid 1:16
156
157 # salle prof
158 tc filter add dev ifb0 protocol ip parent 1: prio 1 handle 32 fw classid 1:132
159
160 # salle foad
161 tc filter add dev ifb0 protocol ip parent 1: prio 1 handle 33 fw classid 1:133
162
163 # salle cai
164 tc filter add dev ifb0 protocol ip parent 1: prio 1 handle 31 fw classid 1:131
165
166 # salle formation
167 tc filter add dev ifb0 protocol ip parent 1: prio 1 handle 20 fw classid 1:120
168
169 # réseau nomade
170 tc filter add dev ifb0 protocol ip parent 1: prio 1 handle 25 fw classid 1:125
171
172 # réseau personnel AUF
173 tc filter add dev ifb0 protocol ip parent 1: prio 1 handle 20 fw classid 1:120
174
175 # le reste ... bah par défaut tout ira dans la classe 1:190
176
177 #les règles iptables à mettre en place sur fw
178 # un exemple avec la sonde
179 # iptables -t mangle -A PREROUTING -s 192.168.35.0/24 -j MARK --set-mark 0x35
180 #iptables -t mangle -A PREROUTING -s 192.168.35.0/24 -j RETURN
181 #
182 # et ainsi de suite