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