[routeur] QOS, firewall etc...

QOS, firewall etc... [routeur] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-10-2002 à 18:21:02    

J'utilise actuellement un script qui a l'air pas mal, MonMotha's firewall, et tout marche tres bien mais je voudrais aussi pouvoir controler la BP car je vais partager ma connexion (cable 1024/256 a 3). J'ai trouvé un script qui a l'air pas mal aussi pour le QOS, Wonder Shaper, mais je ne sais pas trop comment combiner le firewall + QOS et surtout allouer la BP correctement (genre je DL mais les 2 autres peuvent jouer sur BattleNet avec un bon ping ;)).
 
Un peu d'aide siouplait... :D

Reply

Marsh Posté le 01-10-2002 à 18:21:02   

Reply

Marsh Posté le 01-10-2002 à 18:36:17    

Qu'est ce que c'est le CBQ ? J'ai mis toutes les options de routage + toutes celles de QOS en recompilant le noyau, ça devrait etre bon non ?
 
EDIT : il me dit > tc : command not found. Il me manque quelque chose je crois ;)
Je suis con... j'etais pas en root :sarcastic:


Message édité par impulse le 01-10-2002 à 19:02:28
Reply

Marsh Posté le 01-10-2002 à 19:31:03    

impulse a écrit a écrit :

Qu'est ce que c'est le CBQ ? J'ai mis toutes les options de routage + toutes celles de QOS en recompilant le noyau, ça devrait etre bon non ?
 
EDIT : il me dit > tc : command not found. Il me manque quelque chose je crois ;)
Je suis con... j'etais pas en root :sarcastic:




CBQ cé ce qu'on appelle du "Class Based Queuing" ...
Si tout ce qui est QoS et utilisation de files d'attentes pour améliorer les temps de latences (voir même dans certains cas faire du traffic shaping) dans les routeurs (linux) t'intéresse, va voir ici et


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 01-10-2002 à 19:42:39    

hum, pas top ce script... (Wondershaper)
 
explication :
 
j'ai fait des tests en DL sur des NG (a fond donc, 120-130ko/s) puis en coupant le DL en faisant des pings sur yahoo >
 
sans qos / pas de DL => ping = 20-25 ms
avec qos / pas de DL => ping = 20-25 ms
sans qos / DL a 120ko/s => ping = 100-150 ms
avec qos / DL a 60ko/s => ping = 20-25
 
ça semble donc pas mal MAIS c'est impossible de surfer avec le script lancé, avec ou sans DL qui plus est, on dirait qu'on est en 56k tellement c'est lent :(
 
quelqu'un a la solution pour  
- DL avec une vitesse acceptable ( au moins 60ko/s)
- surfer rapidement
- jouer sur Battlenet
tout ça en meme temps ?

Reply

Marsh Posté le 01-10-2002 à 19:58:40    

impulse a écrit a écrit :

hum, pas top ce script... (Wondershaper)
 
explication :
 
j'ai fait des tests en DL sur des NG (a fond donc, 120-130ko/s) puis en coupant le DL en faisant des pings sur yahoo >
 
sans qos / pas de DL => ping = 20-25 ms
avec qos / pas de DL => ping = 20-25 ms
sans qos / DL a 120ko/s => ping = 100-150 ms
avec qos / DL a 60ko/s => ping = 20-25
 
ça semble donc pas mal MAIS c'est impossible de surfer avec le script lancé, avec ou sans DL qui plus est, on dirait qu'on est en 56k tellement c'est lent :(
 
quelqu'un a la solution pour  
- DL avec une vitesse acceptable ( au moins 60ko/s)
- surfer rapidement
- jouer sur Battlenet
tout ça en meme temps ?
 




Eu si je me souviens bien de ce script, tu dois changer certaines valeurs dans le script avant de l'utiliser, tu as pensé à le faire avant de l'utiliser ?


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 01-10-2002 à 20:14:50    

Citation :

Eu si je me souviens bien de ce script, tu dois changer certaines valeurs dans le script avant de l'utiliser, tu as pensé à le faire avant de l'utiliser ?

 
 
Oui oui, je sais lire un README quand meme ;)
Les valeurs par defaut vont bien car c'est pour une connexion ADSL 1024/256 a la base. La je DL a 80ko/s et mon colloc joue sur Battlenet => aucun probleme... par contre c'est hyper lent pour surfer sur le net.

Reply

Marsh Posté le 01-10-2002 à 20:16:04    

impulse a écrit a écrit :

 

Citation :

Eu si je me souviens bien de ce script, tu dois changer certaines valeurs dans le script avant de l'utiliser, tu as pensé à le faire avant de l'utiliser ?

 
 
Oui oui, je sais lire un README quand meme ;)
Les valeurs par defaut vont bien car c'est pour une connexion ADSL 1024/256 a la base. La je DL a 80ko/s et mon colloc joue sur Battlenet => aucun probleme... par contre c'est hyper lent pour surfer sur le net.




Attends je vais jeter un coup d'oeil sur ce script ... je crois savoir ce qui se passe ...


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 01-10-2002 à 20:31:59    

impulse a écrit a écrit :

 

Citation :

Eu si je me souviens bien de ce script, tu dois changer certaines valeurs dans le script avant de l'utiliser, tu as pensé à le faire avant de l'utiliser ?

 
 
Oui oui, je sais lire un README quand meme ;)
Les valeurs par defaut vont bien car c'est pour une connexion ADSL 1024/256 a la base. La je DL a 80ko/s et mon colloc joue sur Battlenet => aucun probleme... par contre c'est hyper lent pour surfer sur le net.




Tu peux me mettre à dispo ton script stp ? (ou en MP si tu préfères bien sur)


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 01-10-2002 à 20:34:08    

ben moi bizarrement le script marche pas (sous gentoo) alors que quand j'étais sous debian ça marchait au poil
 
et pourtant il est bien actif (je peux lancer la command status sur  le script...)

Reply

Marsh Posté le 01-10-2002 à 20:43:38    

mhh, tu aurais pas une seule carte réseau sur ta gateway?
 
C'est un défaut de CBQ, il utilise le temps d'activité/inactivité de l'interface réseau, donc il faut éviter de faire passer un autre traffic dessus, et c'est pas très précis.
 
Le moyen d'éviter ca c'est utiliser HBT, mais on le trouve que dans les noyaux récents.


---------------
Kiss the boot of shiny, shiny leather...
Reply

Marsh Posté le 01-10-2002 à 20:43:38   

Reply

Marsh Posté le 01-10-2002 à 20:57:53    

ben j'ai une carte connectée au modem adsl, et une carte qui me relie au reste du rezo pour faire passerelle pour mes autres pc
 
sous debian ça marchait nickel
mais sous gentoo, ben ça veut pas :/
 
par contre c vrai que je n'ai pas essayé avec htb...
hop je teste!

Reply

Marsh Posté le 01-10-2002 à 21:00:04    

sh-2.05a$ ping www.presencepc.com
PING www.presencepc.com (212.43.196.105): 56 octets data
64 octets from 212.43.196.105: icmp_seq=0 ttl=244 time=1050.0 ms
wrong data byte #0 should be 0x30 but was 0x2f2f 20 9d 3d dc f3 a 0  
        8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27  
        28 29 2a 2b 2c 2d 2e 2f  
 
 
 
avec le wondershaper basé sur cbq :sweat:

Reply

Marsh Posté le 01-10-2002 à 21:05:40    

kernel 2.4.19 (gentoo-sources) iptbles 1.7a patch-o-matic  
htb, imq, recent


#!/bin/bash
 
# curio QoS script 0.31
# par François Simond
# script pour htb et imq iproute2 et bien sur iptables
# iptables : www.netfilter.org
# htb : luxik.cdi.cz/~devik/qos/htb/
# imq : luxik.cdi.cz/~patrick/imq/
# iproute2 : defiant.coinet.com/iproute2/
# pour d'autres détails consultrez le howto: lartc.org
# ce script vous donnera de très hautes performances
# réseau à la maison ou au travail. il est prévu pour
# utiliser la connection internet dans tous les sens
# sans que les applications importantes ne soient ralenties
# 09.04.2002: pre release pour tests
# 01.05.2002: tests et ajustements..
# 03.05.2002: fonctionne efficacement, à voir dans la durée
# dimanche 5 mai: posté chez linuxfr.org
# sous licence GPL
 
# usage ./qos
# usage ./qos stop
# usage ./qos clear
 
# ici, le script est finement ajusté pour 512kbit de download  
# et 128kbit d'upload en ADSL pppoe
# merci d'avance pour le retour sur curio@free.fr
# les versions futures de ce script seront dispos a:
# http://www.hq-studio.net/linux/qos/current-qos
# .. quand je suis pas en train de tester des trucs
# dangereux sur le serveur :)
 
# vous pouvez surveiller ce qui se passe en tapant:
# # tc -s class show dev interface_qui_vous_interesse
# # tc -s qdisc show dev interface_qui_vous_interesse
 
IPTABLES="/usr/local/sbin/iptables"
TC="/sbin/tc"
LOGGER="/usr/bin/logger"
IP="/sbin/ip"
MODPROBE="/sbin/modprobe"
 
# définition des UID des users sous lesquels tournent edonkey
# audiogalaxy (ne jamais les lancer en root !)
UIDDONKEY=1002
 
 
# si vous n'avez pas installé imq ( parcque beta ),
# mettez cette variable à 1
NOINGRESS="0"
 
IFINPUT="ppp0"
IFINGRESS="imq0"
IFOUTPUT="ppp0"
 
 
$IP link | grep $IFINPUT > /dev/null 2>&1
if [ "$?" != 0 ]; then
 echo "probleme: $IFINPUT n'existe pas !"
 exit 1
fi
 
case "$1" in
'stop')
        echo Stopping QoS on $IFINGRESS and $IFOUTPUT...
 $TC qdisc del dev $IFINGRESS root
 $IP link set $IFINGRESS down
 $TC qdisc del dev $IFOUTPUT root
 $LOGGER "QoS disabled"
        ;;
 
'clear')
        echo Stopping QoS on $IFINPUT and $IFOUTPUT...
        $TC qdisc del dev $IFOUTPUT root
 $IPTABLES -F
        $IP link set $IFINGRESS down
 $IPTABLES -t mangle -F
        $TC qdisc del dev $IFINGRESS root
        echo Done !
 $LOGGER "QoS disabled & iptable rules cleared"
        ;;
*)
 
# iptables clean
$IPTABLES -t nat -F
$IPTABLES -F
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X
if [ "$NOINGRESS" == "0" ]; then  
 
 # mise en place de l'interface imq
 $MODPROBE imq numdevs=1
 $IPTABLES -t mangle -A PREROUTING -i $IFINPUT -j IMQ
fi
 
 
 
# mettez vos rêgles de firewall ici  
# j'ai mis le firewall de MonMotha  http://www.mplug.org/phpwiki/index.php?MonMothaReferenceGuide
 
 
# marques pour le traffic icmp ( pour benchmark uniquement )
$IPTABLES -t mangle -A INPUT -i $IFINPUT -p icmp -j MARK --set-mark 11
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
if [ "$NOINGRESS" == "0" ]; then  
###########################   INPUT RULES (INGRESS)   ############################
 
# par défaut on met tout dans la classe par défaut
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -m length --length 0:1500 -j MARK --set-mark 13
 
#marques du traffic entrant vers le LAN
$IPTABLES -t mangle -A FORWARD -j MARK --set-mark 50
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -d 192.168.1.5 -j MARK --set-mark 50
$IPTABLES -t mangle -A PREROUTING -i eth1 -d 192.168.1.5 -j MARK --set-mark 50
$IPTABLES -t mangle -A PREROUTING -i eth0 -d 192.168.1.5 -j MARK --set-mark 50
 
# marques du traffic interactif (telnet & ssh)
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 22:23 -j MARK --set-mark 11
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --dport 22:23 -j MARK --set-mark 11
 
# marques du traffic edonkey
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 4662 -j MARK --set-mark 15
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --dport 4662 -j MARK --set-mark 15
 
# Shoutcast et radio
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 8000:8600 -j MARK --set-mark 16
 
# marques du traffic web , http et https
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 80 -j MARK --set-mark 17
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 443 -j MARK --set-mark 17
 
# classement des longs downloads http au même niveau que le traffic ftp - en test -
# utilise le match recent, qui est dans le patch-o-matic d'iptables
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 80 -m recent --name web ! --rcheck -j MARK --set-mark 200  
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 80 -m mark --mark 200 -m recent --name web --set  
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 80 -j MARK --set-mark 17  
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 80 -m recent --name web ! --rcheck --seconds 45 -j MARK --set-mark 18  
 
# marques du traffic ftp
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 20 -j MARK --set-mark 18  
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j MARK --set-mark 18
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --dport 20 -j MARK --set-mark 15
$IPTABLES -t mangle -A PREROUTING -i $IFINPUT -p tcp --dport 1024: --sport 1024: -m state --state ESTABLISHED,RELATED -j MARK --set-mark 18
 
 
fi
 
#########################   OUTPUT RULES (EGRESS)   #############################
 
# marquage et classement par taille de paquets sortants ( methode d'Emmanuel Roger - www.prout.be )
# remarque: cette méthode réordonne les paquets d'une même connection tcp et peut la ralentir
# dans des cas particuliers ( ici j'ai pas remarqué :), donc si ce script vous ralenti,
# modifiez cette partie ou bien faites une classe pour le traffic qui vous intéresse
$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -m length --length 0:75 -j MARK --set-mark 22
$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -m length --length 76:444 -j MARK --set-mark 23
$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -m length --length 445:1500 -j MARK --set-mark 24
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -m length --length 0:75 -j MARK --set-mark 22
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -m length --length 76:520 -j MARK --set-mark 23
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -m length --length 521:1500 -j MARK --set-mark 24
 
 
#marques du traffic  vers le LAN et en provenance
$IPTABLES -t mangle -A OUTPUT -o eth1 -m length --length 0:1500 -j MARK --set-mark 51
$IPTABLES -t mangle -A POSTROUTING -o  $IFINPUT -s 192.168.1.5  -j MARK --set-mark 51
$IPTABLES -t mangle -A POSTROUTING -o  eth0 -s 192.168.1.5  -j MARK --set-mark 51
 
# marquage du traffic interactif sortant
 
 
$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -p tcp --sport 22:23 -j MARK --set-mark 21
$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -p tcp --dport 22:23 -j MARK --set-mark 21
 
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p tcp --sport 22:23 -j MARK --set-mark 21
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p tcp --dport 22:23 -j MARK --set-mark 21
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p udp --dport 27015:27015 -j MARK --set-mark 21
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p udp --sport 27015:27015 -j MARK --set-mark 21
 
# marquage du traffic edonkey sortant
#$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -p tcp ! --syn --sport 4662 -j MARK --set-mark 25
#$IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -p tcp ! --syn --dport 4662 -j MARK --set-mark 25
 
#Création nouvelles chaînes SERVER's pour les  
#serveurs donkey
$IPTABLES -t mangle -N SERVERTCP
$IPTABLES -t mangle -N SERVERUDP
 
$IPTABLES -t mangle -A OUTPUT  -o $IFINPUT -p tcp --dport 4662 -j MARK --set-mark 25
$IPTABLES -t mangle -A OUTPUT  -o $IFINPUT -p tcp  --sport 4662 -j MARK --set-mark 25
 
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p tcp -m owner --uid-owner $UIDDONKEY  -j SERVERTCP
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p udp -m owner --uid-owner $UIDDONKEY  -j SERVERUDP
 
$IPTABLES -t mangle -A SERVERTCP -o $IFOUTPUT -p tcp  --dport 4661  -j MARK --set-mark 20
$IPTABLES -t mangle -A SERVERUDP -o $IFOUTPUT -p udp  --dport 4660:4670  -j MARK --set-mark 20
$IPTABLES -t mangle -A SERVERTCP -o $IFOUTPUT -p tcp ! --dport 4661  -j MARK --set-mark 25
$IPTABLES -t mangle -A SERVERUDP -o $IFOUTPUT -p udp ! --dport 4660:4670  -j MARK --set-mark 25
 
 
# pour garder un ping très bas, on peut forcer une taille plus petite des paquets au traffic edonkey (facultatif)
 $IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -p tcp --sport 4662 --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1000
 $IPTABLES -t mangle -A PREROUTING ! -i $IFINPUT -p tcp --dport 4662 --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1000
 
$IPTABLES -A OUTPUT -m owner --uid-owner $UIDDONKEY -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 100
 $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN --sport 4662 --dport 4662 -j TCPMSS --set-mss 1000
 
# marquage du traffic du serveur web local
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p tcp --sport 80 -j MARK --set-mark 27
$IPTABLES -t mangle -A OUTPUT -o $IFOUTPUT -p tcp --sport 443 -j MARK --set-mark 27
 
# declaration des fonctions utilisées pour ajouter des qdisc ou des filtres
 function addqdisc {
  $TC qdisc add dev $1 parent $2 handle $3 $4 $5 $6 $7 $8
 }
 function addfilter {
  $TC filter add dev $1 parent $2 protocol ip handle $3 fw flowid $4
 }
 
 
# cleaning
$TC qdisc del dev $IFINGRESS root 2> /dev/null > /dev/null
 
if [ "$NOINGRESS" == "0" ]; then  
 
# règles tc / htb pour le traffic entrant ( ingress )
 
$TC qdisc add dev $IFINGRESS handle 1:0 root htb default 1
 $TC class add dev $IFINGRESS parent 1:0 classid 1:1 htb rate 512kbit ceil 512kbit burst 100k
 
  $TC qdisc add dev $IFINGRESS parent 1:1 handle 10: htb default 203
    $TC class add dev $IFINGRESS parent 10:1 classid 10:201 htb rate 500kbit ceil 512kbit burst 90k prio 0  # Traffic du LAN
    $TC class add dev $IFINGRESS parent 10:1 classid 10:202 htb rate 384kbit ceil 480kbit burst 67k           #small size packets
    $TC class add dev $IFINGRESS parent 10:2 classid 10:203 htb rate 48kbit ceil 480kbit burst 2k prio 0   # medium size packets or generic
    $TC class add dev $IFINGRESS parent 10:2 classid 10:205 htb rate 260kbit ceil 480kbit burst 80k prio 1   # edonkey speed limitation
    $TC class add dev $IFINGRESS parent 10:2 classid 10:207 htb rate 280kbit ceil 400kbit burst 50k prio 0  # www client
    $TC class add dev $IFINGRESS parent 10:2 classid 10:208 htb rate 200kbit ceil 450kbit burst 30k prio 1    # ftp data, less important than web surf
    $TC class add dev $IFINGRESS parent 10:2 classid 10:209 htb rate 260kbit ceil 480kbit burst 50k prio 0 # guaranted bandwidth, sound must be never cut:)
 
     addqdisc $IFINGRESS 10:201 61:0 pfifo limit 20
     addqdisc $IFINGRESS 10:202 62:0 sfq quantum 1492 perturb 70
     addqdisc $IFINGRESS 10:203 63:0 sfq quantum 1492 perturb 120
     addqdisc $IFINGRESS 10:205 65:0 sfq quantum 1492 perturb 120
     addqdisc $IFINGRESS 10:207 67:0 sfq quantum 1492 perturb 120
     addqdisc $IFINGRESS 10:208 68:0 sfq quantum 1492 perturb 120
     addqdisc $IFINGRESS 10:209 69:0 sfq quantum 1492 perturb 120
     
addfilter $IFINGRESS 10: 50 10:201
addfilter $IFINGRESS 10: 11 10:202
addfilter $IFINGRESS 10: 13 10:203
addfilter $IFINGRESS 10: 15 10:205
addfilter $IFINGRESS 10: 17 10:207
addfilter $IFINGRESS 10: 18 10:208
addfilter $IFINGRESS 10: 16 10:209
 
$IP link set $IFINGRESS up
 
$LOGGER QoS on $IFINPUT for 512k download
echo QoS on $IFINPUT for 512k download
 
fi
 
# cleaning
 
 
$TC qdisc del dev $IFOUTPUT root >/dev/null 2> /dev/null  
 
# règles tc / htb pour le traffic sortant ( egress )
 
$TC qdisc add dev $IFOUTPUT root handle 1: htb default 102
 $TC class add dev $IFOUTPUT parent 1: classid 1:1 htb rate 124kbit ceil 124kbit burst 120k
  $TC class add dev $IFOUTPUT parent 1:1 classid 1:100 htb rate 120kbit ceil 124kbit prio 0 burst 100k # LAN
  $TC class add dev $IFOUTPUT parent 1:1 classid 1:101 htb rate 26kbit ceil 124kbit prio 1 burst 15k # petits paquets
  $TC class add dev $IFOUTPUT parent 1:1 classid 1:102 htb rate 16kbit ceil 124kbit prio 1 burst 10k # paquets moyens
  $TC class add dev $IFOUTPUT parent 1:1 classid 1:103 htb rate 13kbit ceil 124kbit prio 1 burst 120 # gros paquets
  $TC class add dev $IFOUTPUT parent 1:2 classid 1:104 htb rate 15kbit ceil 60kbit prio 2 burst 120  # edonkey
  $TC class add dev $IFOUTPUT parent 1:1 classid 1:106 htb rate 100kbit ceil 120kbit prio 0 burst 3k # webserver
 
   addqdisc $IFOUTPUT 1:100 20:0 pfifo limit 50
   addqdisc $IFOUTPUT 1:101 21:0 sfq perturb 3
   addqdisc $IFOUTPUT 1:102 22:0 sfq perturb 5
   addqdisc $IFOUTPUT 1:103 23:0 sfq perturb 180
   addqdisc $IFOUTPUT 1:104 24:0 sfq perturb 180
   addqdisc $IFOUTPUT 1:106 26:0 sfq perturb 10
 
# en premier, on met les ack au haute priorité (ceci peut aussi se faire avec iptables)
$TC filter add dev $IFOUTPUT parent 1: protocol ip prio 1 u32 \
   match ip protocol 6 0xff \
  match u8 0x05 0x0f at 0 \
   match u16 0x0000 0xffc0 at 2 \
   match u8 0x10 0xff at 33 \
   flowid 1:100
addfilter $IFOUTPUT 1: 51 1:100
addfilter $IFOUTPUT 1: 21 1:101
addfilter $IFOUTPUT 1: 22 1:102
addfilter $IFOUTPUT 1: 23 1:102
addfilter $IFOUTPUT 1: 24 1:103
addfilter $IFOUTPUT 1: 25 1:104
addfilter $IFOUTPUT 1: 27 1:106
 
 
 
$LOGGER QoS on $IFOUTPUT for 128k upload
echo QoS on $IFOUTPUT for 128k upload
 
# règles reaim pour MSN file transfers
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5190 -j REDIRECT --to-ports 5190
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1863 -j REDIRECT --to-ports 1863
 
 
        # ippersonnality rules ;)
 
#        $IPTABLES -t mangle -A PREROUTING -i ppp0 -j PERS --tweak dst --local --conf /etc/dreamcast.conf
#        $IPTABLES -t mangle -A OUTPUT -o ppp0 -j PERS --tweak src --local --conf /etc/dreamcast.conf
#/usr/local/donitor/sbin/update_rrd.pl > /dev/null &
 
#route add -net 239.0.0.0 netmask 255.0.0.0 eth1
;;
esac
exit
 
 


 
même mldonkey ne resiste pas


Message édité par xtress le 10-11-2002 à 14:53:28
Reply

Marsh Posté le 01-10-2002 à 21:21:14    

ah ben je v le tester alors :)
 
le wondershaper basé sur htb change rien en tt cas pour moi :/

Reply

Marsh Posté le 01-10-2002 à 21:28:07    

xtress a écrit a écrit :

kernel 2.4.18 iptbles1.6a patch-o-matic  
htb, imq, script MonMotha+ un autre
 
 
 
même mldonkey ne resiste pas



bash-2.05a# ./qos  
./qos: /sbin/ip: Aucun fichier ou répertoire de ce type
probleme: ppp0 n'existe pas !
 
 
[:kalisto]

Reply

Marsh Posté le 01-10-2002 à 21:30:54    

merde quel con g pas imq...
 
par contre ppp0 existe... :/
 
et le /sbin/ip il vient de quoi?

Reply

Marsh Posté le 01-10-2002 à 21:54:08    

Code :
  1. #!/bin/bash
  2. # Wonder Shaper
  3. # please read the README before filling out these values
  4. #
  5. # Set the following values to somewhat less than your actual download
  6. # and uplink speed. In kilobits. Also set the device that is to be shaped.
  7. DOWNLINK=800
  8. UPLINK=220
  9. DEV=eth1
  10. # low priority OUTGOING traffic - you can leave this blank if you want
  11. # low priority source netmasks
  12. NOPRIOHOSTSRC=80
  13. # low priority destination netmasks
  14. NOPRIOHOSTDST=
  15. # low priority source ports
  16. NOPRIOPORTSRC=
  17. # low priority destination ports
  18. NOPRIOPORTDST=
  19. #########################################################
  20. if [ "$1" = "status" ]
  21. then
  22. tc -s qdisc ls dev $DEV
  23. tc -s class ls dev $DEV
  24. exit
  25. fi
  26. # clean existing down- and uplink qdiscs, hide errors
  27. tc qdisc del dev $DEV root    2> /dev/null > /dev/null
  28. tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
  29. if [ "$1" = "stop" ]
  30. then
  31. exit
  32. fi
  33. ###### uplink
  34. # install root CBQ
  35. tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit
  36. # shape everything at $UPLINK speed - this prevents huge queues in your
  37. # DSL modem which destroy latency:
  38. # main class
  39. tc class add dev $DEV parent 1: classid 1:1 cbq rate ${UPLINK}kbit \
  40. allot 1500 prio 5 bounded isolated
  41. # high prio class 1:10:
  42. tc class add dev $DEV parent 1:1 classid 1:10 cbq rate ${UPLINK}kbit \
  43.    allot 1600 prio 1 avpkt 1000
  44. # bulk and default class 1:20 - gets slightly less traffic,
  45. #  and a lower priority:
  46. tc class add dev $DEV parent 1:1 classid 1:20 cbq rate $[9*$UPLINK/10]kbit \
  47.    allot 1600 prio 2 avpkt 1000
  48. # 'traffic we hate'
  49. tc class add dev $DEV parent 1:1 classid 1:30 cbq rate $[8*$UPLINK/10]kbit \
  50.    allot 1600 prio 2 avpkt 1000
  51. # all get Stochastic Fairness:
  52. tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
  53. tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
  54. tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
  55. # start filters
  56. # TOS Minimum Delay (ssh, NOT scp) in 1:10:
  57. tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
  58.       match ip tos 0x10 0xff  flowid 1:10
  59. # ICMP (ip protocol 1) in the interactive class 1:10 so we
  60. # can do measurements & impress our friends:
  61. tc filter add dev $DEV parent 1:0 protocol ip prio 11 u32 \
  62.         match ip protocol 1 0xff flowid 1:10
  63. # prioritize small packets (<64 bytes)
  64. tc filter add dev $DEV parent 1: protocol ip prio 12 u32 \
  65.    match ip protocol 6 0xff \
  66.    match u8 0x05 0x0f at 0 \
  67.    match u16 0x0000 0xffc0 at 2 \
  68.    flowid 1:10
  69. # some traffic however suffers a worse fate
  70. for a in $NOPRIOPORTDST
  71. do
  72. tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \
  73.    match ip dport $a 0xffff flowid 1:30
  74. done
  75. for a in $NOPRIOPORTSRC
  76. do
  77.  tc filter add dev $DEV parent 1: protocol ip prio 15 u32 \
  78.    match ip sport $a 0xffff flowid 1:30
  79. done
  80. for a in $NOPRIOHOSTSRC
  81. do
  82.  tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
  83.    match ip src $a flowid 1:30
  84. done
  85. for a in $NOPRIOHOSTDST
  86. do
  87.  tc filter add dev $DEV parent 1: protocol ip prio 17 u32 \
  88.    match ip dst $a flowid 1:30
  89. done
  90. # rest is 'non-interactive' ie 'bulk' and ends up in 1:20
  91. tc filter add dev $DEV parent 1: protocol ip prio 18 u32 \
  92.    match ip dst 0.0.0.0/0 flowid 1:20
  93. ########## downlink #############
  94. # slow downloads down to somewhat less than the real speed  to prevent
  95. # queuing at our ISP. Tune to see how high you can set it.
  96. # ISPs tend to have *huge* queues to make sure big downloads are fast
  97. #
  98. # attach ingress policer:
  99. tc qdisc add dev $DEV handle ffff: ingress
  100. # filter *everything* to it (0.0.0.0/0), drop everything that's
  101. # coming in too fast:
  102. tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
  103.    0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1


 
voila pour wonder shaper (reglé pour ADSL 1024/256).

Reply

Marsh Posté le 01-10-2002 à 21:57:47    

Citation :

merde quel con g pas imq...
 
par contre ppp0 existe... :/
 
et le /sbin/ip il vient de quoi?

 
 
ip = iptables ou iproute, non ?

Reply

Marsh Posté le 01-10-2002 à 22:04:23    

mince alors le /usr/sbin/ip je l'ai aussi pourtant...
 
c koi sbordel? :/

Reply

Marsh Posté le 11-10-2002 à 21:37:05    

impulse a écrit a écrit :

Code :
  1. # all get Stochastic Fairness:
  2. tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
  3. tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
  4. tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10






 
Ca ne marche pas à partir de là :/
ça me renvoie ça :
RTNETLINK answers: Invalid argument
 
qqn peut m'aider ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed