23 Listopada 2024 03:06:35
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· [S] Asus RT-AC56U
· DIR868l OFW asus vs ...
· Szukam zaproszenia n...
· [MOD] FreshTomato-AR...
· Asus RT-AC5300 ,prob...
· archer c6 v3.20
· [S] Nighthawk R7000P...
· [S]Asus RT-AC5300 - ...
· Tanie N100 na promce...
· net z telefonu wifi+...
· Tomato - bugi/proble...
· HUAWEI z światłowodem
· Asus TUF-AX3000_V2 p...
· rt-ax88upro częste ...
· [Howto] Xpenology na...
· Jaki router pod Open...
· Ruter z tomato
· Czy to jeszcze NAS?
· RT AC66U B1
· Wireguard na FreshTo...
Najpopularniejsze obecnie wątki
· Szukam zaproszeni... [19]
· DIR868l OFW asus ... [8]
· [S] Asus RT-AC56U [0]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [151 głosów]

Broadcom ARM
Broadcom ARM
52% [219 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 419
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
3.17.155.142
Zobacz wątek
OpenLinksys » :: POZOSTAŁE :: » Free zone
 Drukuj wątek
Skrypt HTB
punkl
Witam. Natknalem sie na taki skrypt. Czy moglby ktos rzucic na niego okiem ? Czy ruszy on na Tomato ? Jezeli tak, to co musialbym zrobic ? Na dole sa wartosci, ktore musialbym pozmieniac, ale gdzie powrzucac pliki tzn ten ze skryptem, htb.conf czy ?


#!/bin/bash
#
# shape         program for performing traffic shaping
#
# chkconfig: 2345 80 30
# description: shape is a script which sets the HTB traffic shaping \
#              parameters and uses simple text configuration file. \
#              htb stands for Hierarchical Token Bucket
#
# processname: shape
# config: /etc/sysconfig/htb.conf
#
# 17/08/11: first version xxxxxxxxxxxxxx{}fsit.cz

# Source function library.
. /etc/rc.d/init.d/functions

CONFIG="/etc/sysconfig/htb.conf"

if [ ! -f $CONFIG ] then
        echo "No config in $CONFIG"
        echo "Sample config is included at end of this script. See $0"
        exit 1
fi

start() {
        echo -n $"Starting $prog: "
        init
        #check13 || exit 1
        #RETVAL=$?
        #echo
        #[ $RETVAL = 0 ] && touch ${lockfile}
        #return $RETVAL
}

init() {
        echo
        echo "# setup parent 1:0 for upload"

        count=0
        for foo in $( seq $( cat $CONFIG | grep WAN_NAME | wc -l ) )
        do
                WAN_NAME=$( cat $CONFIG | grep WAN_NAME_${count} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                WAN_IFACE=$( cat $CONFIG | grep WAN_IFACE_${count} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                WAN_SPEED=$( cat $CONFIG | grep WAN_SPEED_${count} | sed -n 's/.*="\([^"]*\).*/\1/p' )

                echo "tc qdisc add dev $WAN_IFACE root handle 1:0 htb default 1"
                tc qdisc add dev $WAN_IFACE root handle 1:0 htb default 1

                echo "tc class add dev $WAN_IFACE parent 1:0 classid 1:1 htb rate $WAN_SPEED burst 512k"
                tc class add dev $WAN_IFACE parent 1:0 classid 1:1 htb rate $WAN_SPEED burst 512k

                count=$(( $count + 1 ))

                count2=0
                htb_class=2

                echo "# now setup all the local networks for upload"

                for foo2 in $( seq $( cat $CONFIG | grep LAN_NAME | wc -l ) )
                do
                        LAN_NAME=$( cat $CONFIG | grep LAN_NAME_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                        LAN_IFACE=$( cat $CONFIG | grep LAN_IFACE_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                        LAN_RATE=$( cat $CONFIG | grep LAN_RATE_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                        LAN_CEIL=$( cat $CONFIG | grep LAN_CEIL_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                        LAN_IP_ORIG=$( cat $CONFIG | grep LAN_IP_ORIG_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                        LAN_IP_MASQ=$( cat $CONFIG | grep LAN_IP_MASQ_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )

                        echo "# setup network/host $LAN_NAME ($LAN_IP_ORIG) for upload, rate is $LAN_RATE, ceil is $LAN_CEIL"

                        echo "   tc class add dev $WAN_IFACE parent 1:1 classid 1:${htb_class} htb rate $LAN_RATE ceil $LAN_C
EIL"
                        tc class add dev $WAN_IFACE parent 1:1 classid 1:${htb_class} htb rate $LAN_RATE ceil $LAN_CEIL

                        echo "   tc filter add dev $WAN_IFACE protocol ip parent 1:0 handle ::$(( ${count2} + 100 )) prio 1 u
32 match ip src $LAN_IP_MASQ flowid 1:${htb_class}"
                        tc filter add dev $WAN_IFACE protocol ip parent 1:0 handle ::$(( ${count2} + 100 )) prio 1 u32 match
ip src $LAN_IP_MASQ flowid 1:${htb_class}
                        echo

                        count2=$(( $count2 + 1 ))
                        htb_class=$(( $htb_class + 1 ))
                done
        done

        echo "# setup parent 1:0 for download"

        for foo in $( cat $CONFIG | grep LAN_IFACE | sed -n 's/.*="\([^"]*\).*/\1/p' | sort | uniq )
        do
                WAN_SPEED=$( cat $CONFIG | grep WAN_SPEED_0 | sed -n 's/.*="\([^"]*\).*/\1/p' )

                echo "tc qdisc add dev ${foo} root handle 1:0 htb default 1"
                tc qdisc add dev ${foo} root handle 1:0 htb default 1

                echo "tc class add dev ${foo} parent 1:0 classid 1:1 htb rate $WAN_SPEED ceil $WAN_SPEED"
                tc class add dev ${foo} parent 1:0 classid 1:1 htb rate $WAN_SPEED ceil $WAN_SPEED
        done
        echo


        htb_class=2
        count2=0
        for foo in  $( seq $( cat $CONFIG | grep LAN_NAME | wc -l ) )
        do
                LAN_NAME=$( cat $CONFIG | grep LAN_NAME_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                LAN_IFACE=$( cat $CONFIG | grep LAN_IFACE_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                LAN_RATE=$( cat $CONFIG | grep LAN_RATE_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                LAN_CEIL=$( cat $CONFIG | grep LAN_CEIL_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )

                echo "# setup network/host $LAN_NAME ($LAN_IP_ORIG) for download, rate is $LAN_RATE, ceil is $LAN_CEIL"

                echo "   tc class add dev $LAN_IFACE parent 1:1 classid 1:${htb_class} htb rate $LAN_RATE ceil $LAN_CEIL"
                tc class add dev $LAN_IFACE parent 1:1 classid 1:${htb_class} htb rate $LAN_RATE ceil $LAN_CEIL

                echo "   tc filter add dev $LAN_IFACE protocol ip parent 1:0 handle ::$(( ${count2} + 100 )) prio 1 u32 match
 ip dst $LAN_IP_ORIG flowid 1:${htb_class}"
                tc filter add dev $LAN_IFACE protocol ip parent 1:0 handle ::$(( ${count2} + 100 )) prio 1 u32 match ip dst $
LAN_IP_ORIG flowid 1:${htb_class}
                echo

                count2=$(( $count2 + 1 ))
                htb_class=$(( $htb_class + 1 ))
        done

        exit
}

stop() {
        delete_filters
        delete_qdiscs
}

delete_qdiscs() {
        # delete Qdisc WAN
        for foo in  $( cat $CONFIG | grep WAN_IFACE | sed -n 's/.*="\([^"]*\).*/\1/p' | sort | uniq )
        do
                echo "Stopping shaping on interface $foo"
                echo "tc qdisc del dev $foo root"
                tc qdisc del dev $foo root
        done


        # delete Qdisc LAN
        for foo in  $( cat $CONFIG | grep LAN_IFACE | sed -n 's/.*="\([^"]*\).*/\1/p' | sort | uniq )
        do
                echo "Stopping shaping on interface $foo"
                echo "tc qdisc del dev $foo root"
                tc qdisc del dev $foo root
        done
}

delete_filters() {
        # delete all the upload filters for network on WAN_IFACE(s)
        for foo in  $( cat $CONFIG | grep WAN_IFACE | sed -n 's/.*="\([^"]*\).*/\1/p' | sort | uniq )
        do

                count2=0
                for foo2 in $( seq $( cat $CONFIG | grep LAN_NAME | wc -l ) )
                do
                        echo "tc filter del dev $foo parent 1: protocol ip prio 1 handle 800::$(( ${count2} + 100 )) u32"   -
                        tc filter del dev $foo parent 1: protocol ip prio 1 handle 800::$(( ${count2} + 100 )) u32
                        count2=$(( $count2 + 1 ))
                done
        done

        # delete all the download filters for LAN interfaces
        count2=0
        for foo in  $( seq $( cat $CONFIG | grep LAN_NAME | wc -l ) )
        do
                LAN_IFACE=$( cat $CONFIG | grep LAN_IFACE_${count2} | sed -n 's/.*="\([^"]*\).*/\1/p' )
                echo "tc filter del dev $LAN_IFACE parent 1: protocol ip prio 1 handle 800::$(( ${count2} + 100 )) u32"
                tc filter del dev $LAN_IFACE parent 1: protocol ip prio 1 handle 800::$(( ${count2} + 100 )) u32
                count2=$(( $count2 + 1 ))
        done
}


status() {
        echo ": upload --------------------------------------------"
        for foo in  $( cat $CONFIG | grep WAN_IFACE | sed -n 's/.*="\([^"]*\).*/\1/p' | sort | uniq )
        do
                echo
                echo "Queing discipline for $foo"
                tc qdisc show dev $foo
                echo "Classes for device $foo"
                #tc -s class show dev $foo
                tc -s class show dev $foo
                echo "Filter for device $foo"
                tc filter show dev $foo
                echo
        done

        echo ": download ------------------------------------------"
        for foo in  $( cat $CONFIG | grep LAN_IFACE | sed -n 's/.*="\([^"]*\).*/\1/p' | sort | uniq )
        do
                echo
                echo "Queing discipline for $foo"
                tc qdisc show dev $foo
                echo "Classes for device $foo"
                #tc -s class show dev $foo
                tc -s class show dev $foo
                echo "Filter for device $foo"
                tc filter show dev $foo
                echo
        done
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        #status -p ${pidfile} $httpd
        #RETVAL=$?
        status
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|status}
"
        exit 1
esac

exit $RETVAL

------------------ sample config file ----------------------
/etc/sysconfig/htb.conf
------------------------------------------------------------
WAN_NAME_0="Internet"
WAN_IFACE_0="eth0"
WAN_SPEED_0="8192Kbit"

LAN_NAME_0="wifi1"
LAN_IFACE_0="eth1"
LAN_IP_ORIG_0="192.168.1.0/24"
LAN_IP_MASQ_0="30.20.40.100/32"
LAN_RATE_0="1024Kbit"
LAN_CEIL_0="2048Kbit"

LAN_NAME_1="wifi2"
LAN_IFACE_1="eth2"
LAN_IP_ORIG_1="192.168.2.0/24"
LAN_IP_MASQ_1="30.20.40.101/32"
LAN_RATE_1="2048Kbit"
LAN_CEIL_1="4092Kbit"
------------------------ end -------------------------------


Połączony z 04 wrzesień 2011 08:58:20:
nikt nie rzuci okiem ?
Edytowany przez punkl dnia 04-09-2011 08:58
 
PeterW
po co ci ten skrypt HTB,
skoro już jest lepszy wbudowany w tomato?
Motorola WR850G v2 DD-WRT 24 (generic), Linksys WRT54GL DD-WRT 24.sp2 (VPN)
 
shibby
jw. Bardziej rozbudowany od powyższego skryptu jest BW Limiter w tomato.

Powyższy skrypt nie ma prawa działać z paru powodów:
- wymaga basha którego nie ma w tomato. Nie wiadomo czy /bin/sh wystarczy, ew instalacja pelnego basha z optware
- szuka plikow konfiguracyjnych w /etc a system plikow w tomato jest tylko do odczytu a wiec nie mozesz w /etc nic umiescic na stałe.
- ogólnie jakby się uparł to by można było go przerobić tylko po co jak są prostrze i lepsze rozwiązania Smile
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM Router: OpenWRT 22.03.4
VM NAS: Synology SA6400
VM VPS: Debian, WWW, Home Assistant
Switch: Netgear MS510TXPP
Switch: Ubiquiti USW-Flex-mini - szt. 2
Wi-Fi: Ubiquiti U6-Lite - szt. 2
 
punkl
ok, dzieki Wink
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 103

· Użytkowników online: 0

· Łącznie użytkowników: 24,115
· Najnowszy użytkownik: Ja
Czat
Musisz się zalogować, aby opublikować wiadomość.

Maniek91PL
06-11-2024 22:37
dzięki !Grin

maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia

Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa

overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.

maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.

overflow2
30-09-2024 20:53
Jaki aktualnie najtańszy router do tomato do openvpn?

maxikaaz
27-07-2024 15:07
@servee - na początek router do rozebrania i obejrzenia, ciężko wróżyć tak tylko po objawach

maxikaaz
27-07-2024 14:55
@servee - cały kontroler nie pada tak sobie z powodu "zbiegu okoliczności",
więc prawdopodobnie gdzieś przepięcie.

servee
25-07-2024 13:33
@maxikaaz: działało, aż pewnego pięknego dnia przestało działać. W tym dniu była też burza, ale to raczej zbieg okoliczności.

maxikaaz
25-07-2024 11:38
@servee - o ile problem jest w obrębie samych wyjść (dławiki, warystory), to naprawialne, ale jeśli w samym SoC - to nienaprawialne ze względu na koszta. A co było przyczyną?

95,329,972 unikalnych wizyt