Toto je jednoduchá kuchařka pro HTB. Neklade si za cíl ani nějak hluboce rozebírat problematiku, ani polemizovat nad dalšími možnými vzužitími HTB, ale velmi jednoduše nastavit důležité datové toky pro malou firmu připojenou přes 256kbit linku do Internetu.

Ke správnému fungování je třeba linux 2.4.20 a vyšší (nebo starší s patchnutou podporou HTB) a tomu odpovídající utilitu tc.

Dobré rady do začátku:

Doufám, že jsem zatím zájemce o HTB příliš neodradil, tady už následuje samotný script:
#!/bin/sh
#
# chkconfig: - 11 89
# description: Single -- purpose settings of tc to Orange & Green server

DEV=eth0


start () {
    echo -n "Starting QoS tc.init: "
    # Vytvorit hlavni disciplinu:
    tc qdisc add dev $DEV root handle 1: htb default 2

    # Internetovy provoz:
    tc class add dev $DEV parent 1: classid 1:1 htb rate 224kbit ceil 224kbit
    # Intranetovy traffic:
    tc class add dev $DEV parent 1: classid 1:2 htb rate 100Mbit ceil 100Mbit
    # Pro prodejce:
    tc class add dev $DEV parent 1:1 classid 1:10 htb rate 112kbit ceil 192kbit
    # Do Komarova:
    tc class add dev $DEV parent 1:1 classid 1:11 htb rate 96kbit ceil 192kbit
    # Zbytek:
    tc class add dev $DEV parent 1:1 classid 1:12 htb rate 16kbit ceil 192kbit

    # Vyberu a oznacim provoz
    # !!! Pozor, vicekrat oznaceny packet si pamatuje posledni cislo !!!
    # Vytvorime novou tabulku:
    iptables -t mangle -N internet
    # Cokoli z Internetu (tj. ne z adres 192.168.2.0/24) oznackujeme
    iptables -t mangle -A internet -s ! 192.168.2.0/24 -j MARK --set-mark 3
    # Tady se nenecte mast privatni adresou, 192.168.1.0/24 je pres
    # IPsec a prislo pres internet!
    iptables -t mangle -A internet -d 192.168.2.0/24 -s 192.168.1.1 -j MARK --set-mark 2
    iptables -t mangle -A internet -d 192.168.2.0/24 -s 192.168.1.88 -j MARK --set-mark 2
    # A toto jsou nasi dva prodejci, zdravime!
    iptables -t mangle -A internet -s ! 192.168.2.0/24 -d 192.168.2.103 -j MARK --set-mark 1
    iptables -t mangle -A internet -s ! 192.168.2.0/24 -d 192.168.2.102 -j MARK --set-mark 1

    # Toto nevim, co znamena :)
    iptables -t mangle -A POSTROUTING -o eth0 -j internet

    # No a tady si nastavim, ktere ze to toky maji kam tect:
    tc filter add dev $DEV parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
    tc filter add dev $DEV parent 1:0 protocol ip prio 3 handle 2 fw classid 1:11
    tc filter add dev $DEV parent 1:0 protocol ip prio 1 handle 3 fw classid 1:12
    echo Ok.
}




stop () {
    echo -n "Stopping QoS tc: "
    # Smazat vse:
    tc filter del dev $DEV prio 3
    tc filter del dev $DEV prio 1
    tc qdisc del dev $DEV root
    iptables -t mangle -F
    iptables -t mangle -X internet
    echo Ok.
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo "Usage: tc.init {start|stop}"
        RETVAL=1
esac

exit $RETVAL