[ SlackList ] [ WkikiSlack ]



Re: HTB

From: S³awomir Jach <cobico@wp.pl>
Date: Thu Jul 03 2003 - 21:01:13 CEST
[slacklist] Re: HTB

Dnia czw 3. of July 2003 14:54, napisa³e¶:
> Oto moj skrypcik:(sklecilem cos takiego na = podstawie 2 innych opisow).
>
> #!/bin/sh
> = #------------------------------------------------------------------
> # Konfiguracja dla poâaczenia internetowego w domu
> #- = ----------------------------------------------------------------
> # usage: rc.htb start|stop|restart
> #
> # Ustaw poniâsze wartosci = trochÅ = poniâej = faktycznych prÅdkosci
> # sciagania i wysyâania = (w kilobitach)
>
> #Lacze do internetu:
> DOWNLINK=115
> UPLINK=115
> LINKDEV=ppp0
> LINKIP=213.25.228.224
>
> #Lacze lokalne LAN:
> LANSPEED=10000
> LANDEV=eth0
>
> #Konfiguracja uzytkownikow
>
> # all names must be taken from /etc/hosts
>
> # machine which shares the link (this =
> SERVER="router"
>
> # which machines are using the link:
> USERS="kadzbi mirek siara rysiek baniak = laptop"
> ENABLE="YES"
>
> # ADVANCED AND IMPORTANT: Changing field =
> # If you use TABs in your /etc/host to divide IP = from host just go further.
> # If you use space as delimeter, uncomment the = line below:
> # DELIM="-d ' '"
>
> = #------------------------------------------------------------------
> #KONIEC CZESCI KONFIGURACYJNEJ
> = #------------------------------------------------------------------
>
> SPEED=$[$LANSPEED-$DOWNLINK]
> # wyczysÅ  kolejki dla = wysyâania i sciagania danych, nie =
> # o bâÅdach
> IP=""
> getip()
> {
>  IP=`grep -v ".*#.*\b$1\b" = /etc/hosts | grep "\b$1\b" | cut -f 1 $DELIM`
> }
>
> USERCOUNT=0
> USERSPEED=$DOWNLINK
> calculate()
> {
> USERCOUNT=$#
> USERSPEED=$[$DOWNLINK/$USERCOUNT]
> echo "Setting up for $USERCOUNT users = (${USERSPEED}kbits for each):"
> }
>
> delroot()
> {
>  tc qdisc del root dev $LANDEV 2> = /dev/null
>  tc qdisc del root dev $LINKDEV 2> = /dev/null
>  tc qdisc del dev $LINKDEV = root    2> /dev/null > /dev/null
>  tc qdisc del dev $LINKDEV ingress 2> = /dev/null > /dev/null
> }
>
> stop()
> {
> echo -n "rc.htb: Disabling = queuing..."
> delroot
> echo " done."
> }
> start()
> {
> check()
> {
> if [ $ENABLE != "YES" ]; then
> echo "rc.htb is not yet configured, please =
> exit 1
> fi
> }
>
> instream()
> {
> tc qdisc add dev $LANDEV root handle 1:0 = htb
> tc class add dev $LANDEV parent 1:0 classid 1:1 = htb rate ${LANSPEED}kbit
> ceil ${LANSPEED}kbit
> }
>
> linklocal()
> {
> tc class add dev $LANDEV parent 1:1 classid 1:2 = htb rate ${DOWNLINK}kbit
> ceil ${DOWNLINK}kbit
> tc class add dev $LANDEV parent 1:1 classid 1:3 = htb rate ${SPEED}kbit ceil
> ${SPEED}kbit
> }
>
> userdiv()
> {
> for i in `seq 1 $USERCOUNT`;
> do
>  tc class add dev $LANDEV parent 1:2 =
> ${USERSPEED}kbit ceil ${DOWNLINK}kbit
> done
> }
>
> userfilter()
> {
> NUM=4
> for i in $USERS;
> do
>  getip $i
>  echo " - $i ($IP)"
>  tc filter add dev $LANDEV protocol ip = parent 1:0 u32 match ip dst $IP
> flowid 1:${NUM}
>  NUM=$(($NUM+1))
> done
> getip $SERVER
> tc filter add dev $LANDEV protocol ip parent 1:0 = u32 match ip src $IP
> flowid 1:3
> tc filter add dev $LANDEV protocol ip parent 1:0 = u32 match ip src $LINKIP
> flowid 1:3
> tc filter add dev $LANDEV protocol ip parent 1:0 = u32 match ip sport 80
> 0xffff flowid 1:3
> NUM=4
> for i in $USERS;
> do
>  getip $i
>  tc filter add dev $LANDEV protocol ip = parent 1:0 u32 match ip dst $IP
> match ip sport 80 0xffff match ip tos 8 0xff = flowid 1:${NUM}
>  NUM=$(($NUM+1))
> done
> tc filter add dev $LANDEV protocol ip parent 1:0 = u32 match ip src $LINKIP
> match ip sport 80 0xffff flowid 1:3
>
> }
>
> sfqin()
> {
> tc qdisc add dev $LANDEV parent 1:3 handle 3:0 = sfq perturb 10
> for i in `seq 1 $USERCOUNT`;
> do
>  tc qdisc add dev $LANDEV parent 1:$[$i+3] = handle $[$i+3]:0 sfq perturb 10
> done
> }
>
> outstream()
> {
> tc qdisc add dev $LINKDEV root handle 1: htb =
> tc class add dev $LINKDEV parent 1: classid 1:1 = htb rate ${UPLINK}kbit
> burst 6k
> }
>
> servdiv()
> {
> # klasa z duâym priorytetem 1:10:
>
> tc class add dev $LINKDEV parent 1:1 classid = 1:10 htb rate ${UPLINK}kbit
> burst 6k prio 1
> # klasa domyslna dla ruchu `masowego' 1:20 - = otrzymuje trochÅ = mniej
> # ruchu i ma mniejszy priorytet
> tc class add dev $LINKDEV parent 1:1 classid = 1:20 htb rate
> $[9*$UPLINK/10]kbit burst 6k prio 2
> #klasa edonkey i all ssawki
> tc class add dev $LINKDEV parent 1:1 classid = 1:30 htb rate
> $[$UPLINK/11]kbit burst 6k prio 3
> #Spowalniamy ruch przychodzacy zeby nie tworzyla = sie kolejka na modemie
> tc qdisc add dev $LINKDEV handle ffff: =
> tc filter add dev $LINKDEV parent ffff: protocol =
> src \
>    0.0.0.0/0 police rate = ${DOWNLINK}kbit burst 10k drop flowid :1
> }
>
> servfilter()
> {
> # wâaczamy filtry
> # Minimalna zwâoka w = polu ToS (ssh, NIE scp) dla 1:10:
> tc filter add dev $LINKDEV parent 1:0 protocol =
>       match ip tos = 0x10 0xff  flowid 1:10
> # ICMP (protokËâ ip = numer 1) w klasie interaktywnej 1:10 tak bysmy
> # mogli wykonywaÅ  pomiary i = pochwaliÅ  siÅ naszym przyjacioâom
> tc filter add dev $LINKDEV parent 1:0 protocol =
>         = match ip protocol 1 0xff flowid 1:10
> # By zwiÅkszyÅ  prÅdkosÅ  sciagania danych w = trakcie wysyâania, pakiety
> # ACK wsadzamy do klasy interaktywnej
> tc filter add dev $LINKDEV parent 1: protocol ip = prio 12 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
> # caâa `nie-interaktywna' reszta trafia =
> tc filter add dev $LINKDEV parent 1: protocol ip = prio 14 u32 \
>    match ip dst 0.0.0.0/0 flowid = 1:20
> #edonkey
> tc filter add dev $LINKDEV parent 1: protocol ip = prio 13 handle 99 fw
> flowid 1:30
> }
> sfqout()
> {
> # obie klasy kontrolowane sa przez Sprawiedliwy = podziaâ stochastyczny:
> tc qdisc add dev $LINKDEV parent 1:10 handle 10: = sfq perturb 10
> tc qdisc add dev $LINKDEV parent 1:20 handle 20: = sfq perturb 10
> tc qdisc add dev $LINKDEV parent 1:30 handle 30: = sfq perturb 10
> }
> echo "HTB script completed"
> # starting...
> echo "rc.htb: Starting..."
> check
> echo "Performing root =
> delroot
> echo "OK, now let's get to = work..."
> echo "Assuming link-in/link-out/LAN speed: = $DOWNLINK/$UPLINK/$LANSPEED
> kbits."
> calculate $USERS
> instream
> linklocal
> userdiv
> userfilter
> sfqin
> outstream
> servdiv
> servfilter
> sfqout
> echo "rc.htb: Finished starting up, have = fun... :)"
> }
> # = ========================== ========================== ===
> echo "htb.script, by Kadzbi based on = (c)PriSM 2oo3 rc.htb, version 0.22,
> (c)PriSM 2oo3 - under GNU general public = license"
> case "$1" in
> 'start')
> start
> ;;
> 'stop')
> stop
> ;;
> 'restart')
> stop
> start
> ;;
> *)
> echo "Usage: $0 = start|stop|restart"
> ;;
> esac


A jakie pakiety musz± byc zainstalowane aby to =
zmodyfikowaæ do w³asnych potrzeb? czy pakowaæ = go tak jak jest?


Received on Sat Feb 21 03:41:16 2004
This archive was generated by hypermail 2.1.8. Wyprawa Shackleton 2014