#!/bin/bash DOWNLINK=6000 UPLINK=480 DEV=eth0 RATE_10="${UPLINK}kbit" RATE_20="$[8*$UPLINK/10]kbit" RATE_30="$[3*$UPLINK/10]kbit" RATE_40="$[9*$UPLINK/10]kbit" #patché pour gérer le HTB TC=/sbin/tc.patched echo "Clear disciplines" $TC qdisc del dev $DEV root 2> /dev/null > /dev/null $TC qdisc del dev $DEV ingress 2> /dev/null > /dev/null echo "Install root HTB" $TC qdisc add dev $DEV root handle 1: htb default 20 echo "Shape everything at $UPLINK speed" $TC class add dev $DEV parent 1: classid 1:1 htb rate $RATE_10 ceil $RATE_10 echo "High prio class 1:10 (100% uplink)" $TC class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE_10 ceil $RATE_10 echo "default class 1:20 (80% uplink)" $TC class add dev $DEV parent 1:1 classid 1:20 htb rate $RATE_20 ceil $RATE_10 echo "Low prio class 1:30 (30% uplink)" $TC class add dev $DEV parent 1:1 classid 1:30 htb rate $RATE_30 ceil $RATE_10 echo "garbage class 1:40 (60% uplink)" $TC class add dev $DEV parent 1:1 classid 1:40 htb rate $RATE_40 ceil $RATE_10 echo -n "High prio for:" $TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip sport 22 0xffff flowid 1:10 && echo -n " ssh" $TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip sport 23 0xffff flowid 1:10 && echo -n " telnet" $TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip sport 513 0xffff flowid 1:10 && echo -n " rlogin" #$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:10 && echo -n " webserver" $TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip protocol 17 0xff match ip sport 53 0xffff flowid 1:10 && echo -n " dns" #special cases $TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip protocol 1 0xff flowid 1:10 && echo -n " ICMP" $TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip protocol 41 0xff flowid 1:10 && echo -n " IPv6" $TC filter add dev $DEV 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:10 && echo -n " ACKs" echo echo -n "Low prio class for:" $TC filter add dev $DEV parent 1: protocol ip prio 4 u32 match ip sport 4688 0xffff flowid 1:30 $TC filter add dev $DEV parent 1: protocol ip prio 4 u32 match ip dport 4688 0xffff flowid 1:30 && echo -n " edonkey/emule (4688)" echo echo -n "Garbage class for:" #$TC filter add dev $DEV parent 1: protocol ip prio 4 u32 match ip sport 6699 0xffff flowid 1:40 && echo -n " lopster (6699)" echo echo "Anything else in 1:20" $TC filter add dev $DEV parent 1: protocol ip prio 13 u32 match ip dst 0.0.0.0/0 flowid 1:20