hello ![]()
le titre est peut être pas assez explicite si quelqu’un une idée ?
désoler pour les acent je sais pas pourquoi sa me plante des ? a la places ??
Explication:
j’ai un problème trikle ne limite pas mumble comme il ce doit 
donc je voudrai passer par iptables et limiter la bande passante de muble en me basent sur le port.
le down est limiter automatiquement puisque c’est le upload qui prime .
le principe:
Le souci ici c’est que c’est configurer de manière a ce que les application puisse avoir aux moins leur bande passante. Et si le reste de la bande passante n’est pas utilisée par une autre application (donc 2 appli), L’application (donc 1 seul) peux donc utiliser toutes la bande passante.
donc ici je voudrai que mumble puisse avoir 15 kbit aux minimum et 20kbit aux maximum
function quos {
#bp max 50kbit en up
#eth = votre interface eth0 ?
RATEUP1="15kbit" #mumble
RATEUP2="500kbit" #taill des paquet
RATEUP3="100mbit" #http ftp
RATEUP4="30kbit" #spring
RATUOLAN="100mbit" #lan samba
affectemark ()
# affecte [nom] [sens] [port] [protocole] [categorie]
# sens = s ou d, protocole = udp ou tcp categorie = 0->?
{
#echo [$1 : $5]
if [ $1 == "spring" ] ;then
iptables -t mangle -A MONLIMITEUR-OUT -p $4 --$2port $3 -j ULOG --ulog-prefix="SpringQos"
fi
iptables -t mangle -A MONLIMITEUR-OUT -p $4 --$2port $3 -j MARK --set-mark 2$5
iptables -t mangle -A MONLIMITEUR-OUT -p $4 --$2port $3 -j RETURN
}
affecthandle ()
{
tc qdisc add dev $1 parent $2:$3 handle $4: sfq perturb $5
}
affectprio ()
{
tc filter add dev $1 parent 1:0 prio 0 protocol ip handle $2 fw flowid $3:$4
}
ip link set dev $eth qlen 40
# ajout de la strategie HTB
# les noms des queues sont de 20 a 2?, je les conserve
#
tc qdisc add dev $eth root handle 1: htb default 28
# 4 classes meres differentes
tc class add dev $eth parent 1: classid 1:1 htb rate $RATEUP1
tc class add dev $eth parent 1: classid 1:2 htb rate $RATEUP2
tc class add dev $eth parent 1: classid 1:3 htb rate $RATUOLAN
tc class add dev $eth parent 1: classid 1:4 htb rate $RATEUP3
tc class add dev $eth parent 1: classid 1:5 htb rate $RATEUP4
# ajout des classes filles:
# chaque classe dispose AU MOINS de son quota de bande passante. Aucune
# classe n'est donc étouffée par les autres. Chaque classe peut également
# consommer toute la bande passante si aucune autre classe ne l'emploie.
# C'est l'intérêt des classes filles si j'ai bien compris, les classes mères
# ne partage pas leur part de bande passante donc on leur atribue
# ce qu'il faut dans les variables globale en debut du script sans dépasser
# la bande passante total
#
#ceil * est le délai avant la reprise d'un transfère après avoir epuiser le seau de jeton
#la durée est l'équivalent aux nombre de jeton nombre de jeton
# ratup donne le debit avec un seau plein si vide ceil defini le temp du drop puis le
#ratup est a nouveau plein
tc class add dev $eth parent 1:1 classid 1:20 htb rate $RATEUP1 ceil $RATEUP1 prio 0
# Les autres classes
tc class add dev $eth parent 1:2 classid 1:21 htb rate $RATEUP2 ceil $RATEUP2 prio 0
# telnet, ssh,X
tc class add dev $eth parent 1:2 classid 1:22 htb rate $RATEUP2 ceil $RATEUP2 prio 1
# ports bas, messagerie AOL, MSN
tc class add dev $eth parent 1:2 classid 1:23 htb rate $RATEUP2 ceil $RATEUP2 prio 2
# WWW
tc class add dev $eth parent 1:2 classid 1:24 htb rate $RATEUP2 ceil $RATEUP2 prio 3
# Edonkey (� l'origine)
tc class add dev $eth parent 1:2 classid 1:25 htb rate $RATEUP2 ceil $RATEUP2 prio 4
#lan
tc class add dev $eth parent 1:3 classid 1:26 htb rate $RATUOLAN ceil $RATUOLAN prio 5
#http 21
tc class add dev $eth parent 1:4 classid 1:27 htb rate $RATEUP3 ceil $RATEUP3 prio 5
#spring
tc class add dev $eth parent 1:5 classid 1:28 htb rate $RATEUP4 ceil $RATEUP4 prio 6
# ajout de la stratégie aux classes filles
# - SFQ offre un traitement sensiblement équitable de chaque classe.
#bouclage possible possible de 9 table
maxtable="8" # max 9 , pour en avoir plus il faut crée une 2 eme boucle(ou modifier celle-ci
boucle="true"
while $boucle
do
I=$(($I+1))
affecthandle "$eth" 1 2$I 2$I 2$I
# répartition du trafic en classe via fwmark
# - le trafic est reparti en classes de priorite suivant l'indicateur
# fwmark des paquets (ceux-ci sont positionnes avec iptables un peu plus
# loin). La classe de priorite par defaut a ete mise a 1:2? de telle sorte
# que les paquets qui ne sont pas marques se retrouvent dans la classe de
# priorit� la plus faible.
affectprio "$eth" 2$I 1 2$I
if [ $I == $maxtable ] ;then
boucle="false"
fi
done
#
# ajout de MONLIMITEUR-OUT � la table de modification des paquets d'iptables
# ceci d�clare la table employ�e pour filtrer et classer les paquets
iptables -t mangle -N MONLIMITEUR-OUT
iptables -t mangle -I POSTROUTING -o $eth -j MONLIMITEUR-OUT
# ajout de fwmark pour classer les diff�rents types de trafic
# - fwmark est positionn� de 20 � 25 suivant la classe. 20 correspond � la
# priorit� la plus forte.
#special ne passe pas dans la fonction (la ca son rare)
iptables -t mangle -A MONLIMITEUR-OUT -p icmp -j MARK --set-mark 24
#passage en paramettre a la fonction
# function commentaire por de destination (s ou d ) protocole prioriter de 0 a 8 (28)
affectemark "mumble" d 64738 udp 5
affectemark "DNS" d 53 udp 0
affectemark "spring" d 8452:8460 tcp 8
affectemark "spring" d 8452:8460 udp 8
affectemark "spring" d 8469 tcp 8
affectemark "spring" d 8469 udp 8
affectemark "spring" d 9999 tcp 8
affectemark "spring" d 9999 udp 8
affectemark "Http" d 80:82 udp 7
affectemark "Http2" d 80:82 tcp 7
affectemark "ftp" d 21 udp 7
affectemark "ftp" d 21 tcp 7
#affecte "exemple plage port" d 6112:6119 tcp 1
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 0:32 -j MARK --set-mark 20
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 0:32 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 0:32 -j MARK --set-mark 20
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 0:32 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 33:60 -j MARK --set-mark 21
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 33:60 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 33:50 -j MARK --set-mark 21
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 33:50 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 51:100 -j MARK --set-mark 25
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 51:100 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 51:100 -j MARK --set-mark 25
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 51:100 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 101:1200 -j MARK --set-mark 24
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 101:1200 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 101:1200 -j MARK --set-mark 24
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 101:1200 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 1200:1501 -j MARK --set-mark 22
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 1200:1501 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 1200:1501 -j MARK --set-mark 22
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 1200:1501 -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m iprange --src-range $pcip_reseaux --dst-range $pcip_me -j MARK --set-mark 26
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m iprange --src-range $pcip_reseaux --dst-range $pcip_me -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m iprange --dst-range $pcip_reseaux --src-range $pcip_me -j MARK --set-mark 26
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m iprange --dst-range $pcip_reseaux --src-range $pcip_me -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m iprange --src-range $pcip_reseaux --dst-range $pcip_me -j MARK --set-mark 26
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m iprange --src-range $pcip_reseaux --dst-range $pcip_me -j RETURN
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m iprange --dst-range $pcip_reseaux --src-range $pcip_me -j MARK --set-mark 26
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m iprange --dst-range $pcip_reseaux --src-range $pcip_me -j RETURN
# les paquets udp sont des paquets de jeu
#iptables -t mangle -A MONLIMITEUR-OUT -p udp -j MARK --set-mark 21
# Petits paquets (des ACK probablement)
#echo [petits paquets: 1]
#iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length :64 -j MARK --set-mark 21
#iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 65:128 -j MARK --set-mark 22
# on marque les paquets restants 29 (faible priorité)
iptables -t mangle -A MONLIMITEUR-OUT -m mark --mark 0 -j MARK --set-mark 29
}
quos
echo "fin pour quos"
Merci d’avance

