Pourquoi si j'utilise la table mangle pour "marquer" des packets, HTB refuse (ou tc) de filtrer ces packets ???
Ca commence à me courrir drolement cette histoire, sutout que je ne vois pas d'ou provient l'erreur.
Donc mon script à la tête suivante :
Code :
- UPLINK=120
- UPLINK_OTHER=70
- LAN_IFACE=eth1
- EXT_IFACE=ppp0
- # Je marque les packets suivant leur taille
- $IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -m length --length 0:200 -j MARK --set-mark 10
- $IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -m length --length 200:400 -j MARK --set-mark 15
- $IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -m length --length 400:800 -j MARK --set-mark 40
- $IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -m length --length 800:1500 -j MARK --set-mark 45
- #Nettoie les gestionnaires de sortie et d'entrés, cache les erreurs
- $TC qdisc del dev $EXT_IFACE root 2> /dev/null > /dev/null
- $TC qdisc del dev $EXT_IFACE ingress 2> /dev/null > /dev/null
- # installe HTB à la racine, le trafic ira par défaut vers 1:20 :
- $TC qdisc add dev $EXT_IFACE root handle 1: htb default 20
- # Le trafic est mis en forme à une vitesse de $UPLINK. Ceci évite
- # d'énormes files d'attente dans votre modem DSL qui pénalisent le temps de
- # latence.
- $TC class add dev $EXT_IFACE parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k
- # la classe de haute priorité 1:10 :
- $TC class add dev $EXT_IFACE parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
- burst 6k prio 1 quantum 1587
- # bulk & default class 1:20 - gets slightly less traffic,
- # and a lower priority:
- $TC class add dev $EXT_IFACE parent 1:1 classid 1:20 htb rate ${UPLINK_OTHER}kbit \
- burst 6k prio 2 quantum 1587
- # Les deux sont gérées par SFQ :
- $TC qdisc add dev $EXT_IFACE parent 1:10 handle 10: sfq perturb 10
- $TC qdisc add dev $EXT_IFACE parent 1:20 handle 20: sfq perturb 10
- # Les packets de taille raisonnables (de 0 à 400) sont aussi considérés comme interactifs
- # Ils utilisent donc aussi cette classe
- $TC filter add dev $EXT_IFACE parent 1: protocol ip prio 15 \
- handle 10 fw classid 1:10
- $TC filter add dev $EXT_IFACE parent 1: protocol ip prio 20 \
- handle 15 fw classid 1:10
- # Les autres packets sont à ralentir (de 400 à 1500)
- # Ils doivents donc passer par la classe 1:20
- $TC filter add dev $EXT_IFACE parent 1: protocol ip prio 45 \
- handle 40 fw classid 1:20
- $TC filter add dev $EXT_IFACE parent 1: protocol ip prio 50 \
- handle 45 fw classid 1:20
|
Moralité, tout passe pr la deuxième classe, même les petits packets (de 0 à 400).
Si je vire le chemin pa défaut, rien ne ce passe, c'est donc bien un problème avec filter, pourtant un "tc filter show" me donne :
Code :
- filter parent 1: protocol ip pref 15 fw
- filter parent 1: protocol ip pref 15 fw handle 0xa classid 1:10
- filter parent 1: protocol ip pref 20 fw
- filter parent 1: protocol ip pref 20 fw handle 0xf classid 1:10
- filter parent 1: protocol ip pref 35 fw
- filter parent 1: protocol ip pref 35 fw handle 0x1e classid 1:20
- filter parent 1: protocol ip pref 40 fw
- filter parent 1: protocol ip pref 40 fw handle 0x23 classid 1:20
|
Donc les filtres sont à priori bien installer, mais ils ne semblent pas fonctionnner.
Quand je regarde l'état de la table Mangle, le traffic est à 90% de 0 à 400, sauf quand mon pater DL, ou la proportion passe pour lui, or c'est toujours la class 1:20 qui est utilisé à 100%.
Help, je craque...
C'est que je veux jouer avec un ping correct moi !
Le passant.
Message édité par le passant le 07-01-2003 à 19:31:07