Dobrodošli, Gost. Molim vas prijavite se ili se registrujte.
Da niste izgubili svoj aktivacioni e-mail?
Oreska - Užice
Prijavite se sa korisničkim imenom, lozinkom i dužinom sesije
 
ARHIVA
   Početna   Pomoć Pravila Pretraga Gallery Prijavljivanje Registracija  
IZBORI: NAJFORUMAŠ I NAJFORUMAŠICA GODINE
AKCIJA: SVI UŽIČANI NA JEDNOM MESTU!
Za užičke nekomercijalne organizacije i ustanove besplatno...
Stranice: [1]
  Štampaj  
This topic has not yet been rated!
You have not rated this topic. Select a rating:
Autor Tema: Mikrotik - Ogranicenje protoka po korisnickim nivoima  (Pročitano 31862 puta)
Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« poslato: 19.10.2007. 22:08:43 »

Za potrebe nase vreme, napravio sam skript koji omogucava da se korisnicima ogranici internet protok, ali tako da su korisnici podeljeni po unapred definisanim nivoima. Isti skript se moze koristiti i za podesavanje drugih privilegija (recimo dozvole odredjene vrste saobracaja i slicno)

Uputstvo i sam skript mozete videti na http://wireless.uzice.net/uputstva/mikrotik-ogranicenjeprotokaponivoima, a ovde mozete komentarisati skript ili postavljati pitanja u vezi njega.

Sačuvana

Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« Odgovor #1 poslato: 19.10.2007. 22:15:10 »

Citat

vezano za dodavanje imena u queue simple, ako ispred imena usera dodam npr [Level A] tj. [LevelA] ime_usera da li ce obuhvatiti obracunavanje prometa ili u imenu samo treba da stoji naziv grupe kojoj pripada [LevelA] i da li svakom navedenom useru u simple queue dodajem manuelno max limit i ostale podatke osim ip adrese ?


Svakom pravilu koje sadrzi oznaku grupe skript ce automatski podesiti sve paramere za ogranicenje brzine. Sve sto je potrebno to je da se u komentar doda oznaka grupe i da se pokrene skript. Sve ostalo ce on da obavi.
Sačuvana

mvasiljevic
provereni korisnici
početnik
*
Ime i prezime:
Mic
Mesto: kosjeric
Država: srbija
Poruke: 10


« Odgovor #2 poslato: 18.08.2009. 06:12:49 »

Sve sam radio po navedenom uputsvu, i naravno uspeo sam da ogranicim protok na zeljenu vrednost.

Ali problem se javlja kada tu zeljenu vrednost zelim da promenim.

Primer

Ukoliko je prva zadata vrednost bila 1mb,a ja ne zelim vise da bude 1mb vec 2mb.Kada ucukam sve zadate komande i stavim 2mb on to sve prihvati ali nece da realizuje,ogrnaci ga na neki cudan nacin nekad 10kb nekad 6kb,ali nikad vise od dvadeset.I onda moram da ukinem pravilo i idem bez ogranicenja da bi neko mogao da funkcionise.

Zakljucak
Kada jednu mac adresu ogranicim prvi put posle tu vrednost ne mogu da promenim na onu koju ja zelim, vec samo da ukinem to pravilo.

Nadam se da ste me razumeli
Sačuvana
Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« Odgovor #3 poslato: 18.08.2009. 15:24:36 »

Nisam nailazio na takav problem. Moze da bude da je neki bug ako imas stariju verziu posto je jedno vreme bilo problema sa simple queues. Nisu bas uvek prvila radila kako treba.
Sačuvana

mvasiljevic
provereni korisnici
početnik
*
Ime i prezime:
Mic
Mesto: kosjeric
Država: srbija
Poruke: 10


« Odgovor #4 poslato: 19.08.2009. 04:16:47 »

Ploca je 433ah mikrotik, licenciran softver.Ja sam licno smatrao da se brzina menja drukcije,ali izgleda da se menja isto, kao i prvi put kada se ogranicava.


Sad vidim da sam pobrkao temu.Ja sam protok ogranicaovao po osnovnom upustvu ne po skripti.Da li to ima nekakve veze?
Sačuvana
Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« Odgovor #5 poslato: 19.08.2009. 06:22:00 »

Jedini razlog da ogranicenje brzine ne radi kako treba za koji znam je taj da svi korisnici zajedno pokusavaju da povuku vise nego sto link moze da pruzi, to jest da je link preopterecen.
Sačuvana

mvasiljevic
provereni korisnici
početnik
*
Ime i prezime:
Mic
Mesto: kosjeric
Država: srbija
Poruke: 10


« Odgovor #6 poslato: 13.09.2009. 00:01:24 »

Nije to preoblem posto je link stvarno veliki jer i sam koristim isti.

Problem je bio u tome xaxa jos uvek mi je smesno, sto sam pobrkao upload umesto downloada pa je zato download nikad i nije bio veci od 10kb.Nikad tome nisam posvetio malo vise vremena da bih primetio to je bio glavni problem, hvala na pomoci u svakom slucaju.
Sačuvana
kiza
početnik
*
Pol: Muškarac
Ime i prezime:
Zoran Maricic
Mesto: Smederevska Palanka
Država: Srbija
Poruke: 7


« Odgovor #7 poslato: 19.03.2010. 16:24:41 »

Na pocetku pozdrav svim forumasima.

Skrip je sjajan i radi odlicno na 2.9.43 verziji, kako smo odradili upgrade na 3.13 i na 4.x skript ne funkcionise. Na sajtu mikrotika postoji prepravljena verzija skripte sa novim kodom, ali radi polovicno. Prvi deo skripte koji se odnosi na pravila funkcionise i u simple queues dodje do svih prvobitnih podesavanja, medjutim kada je neophodno da skript proveri kolicinu prenetih podataka i da smanji brzinu svima koji su zadatu vrednost prekoracili ne desi se nista. Svim korisnicima bez obzira na grupu ostaju prvobitna podesavanja kao i bez provere protoka. Ukoliko neko ima resenje bilo bi sjajno da ga postuje. Skript je testiran na 3.13, 3.15, 3.22 i 4.5 verzijama.

pozdrav
Sačuvana
Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« Odgovor #8 poslato: 19.03.2010. 17:25:39 »

Da, u međuvremenu je na Mikrotiku izmenjen skript sistem tako da skript više ne radi.

Ja sam u medjuvremenu sredio skript kod nas ali nikako da uhvatim vremena da napravim iisprobam veryiju koja je za objavljivanje, posto je ovaj nas dosta prilagodjen nasim potrebama.

Videću da uhvatim vremena za to.
Sačuvana

kiza
početnik
*
Pol: Muškarac
Ime i prezime:
Zoran Maricic
Mesto: Smederevska Palanka
Država: Srbija
Poruke: 7


« Odgovor #9 poslato: 19.03.2010. 17:34:42 »

Evo trenutnog izgleda skripta, zvezidicama sam obelezio deo skripte koji ne radi. Mozda ce ti ovo ustedeti nesto vremena.

/queue simple;
:foreach i in=[find] \
do={  \
     :local sqName [get $i name]; \
     :local sqTotalBytes [get $i total-bytes]; \

     :local sqLevel [:find $sqName "[LevelA]"]; \
     :if ($sqLevel >= 0)  do={ \
        set $i limit-at=32000/32000 max-limit=64000/64000 burst-threshold=48000/48000 burst-limit=128000/128000 burst-time=30/30; \
 ***        :if ($sqTotalBytes  > (100 * 1048576))  do={ \
 ***         set $i limit-at=24000/24000 max-limit=32000/32000 burst-threshold=0/0 burst-limit=0/0 burst-time=0/0; \
        }; \
     } else {

       :set sqLevel [:find $sqName "[LevelB]"]; \
       :if ($sqLevel >= 0)  do={ \
           set $i limit-at=64000/64000 max-limit=128000/128000 burst-threshold=78000/78000 burst-limit=256000/256000 burst-time=30/30; \
  ***         :if ($sqTotalBytes  > (200 * 1048576))  do={ \
  ***          set $i limit-at=64000/64000 max-limit=64000/64000 burst-threshold=0/0 burst-limit=0/0 burst-time=0/0; \
           }; \

       } else { \

           :set sqLevel [:find $sqName "[LevelC]"]; \
           :if ($sqLevel >= 0)  do={ \
               set $i limit-at=72000/72000 max-limit=256000/256000 burst-threshold=96000/96000 burst-limit=1000000/1000000 burst-time=30/30; \
   ***            :if ($sqTotalBytes  > (300 * 1048576))  do={ \
   ***               set $i limit-at=72000/72000 max-limit=72000/72000 burst-threshold=0/0 burst-limit=0/0 burst-time=0/0; \
                }; \
            }; \

        }; \
     }; \

     :if ($sqLevel >= 0) do { \
        :put ([get $i name] . " : " . [get $i limit-at] . " : " . [get $i max-limit]  . " : " . [get $i burst-limit]   . " : " . [get $i burst-threshold]  . " : " . [get $i burst-time]) ; \
     }; \

}

Samo da dodam...potpuno sam raspolozen da radim testiranje ukoliko ti bude potrebna pomoc.
Sačuvana
Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« Odgovor #10 poslato: 19.03.2010. 19:27:55 »

Evo nove verzije skripte koja radi na MT 3.xx i Mt 4.xx


{

:log info ("Setting user levels - started");

/queue simple

:foreach i in=[find] do={  \

 :local sqName [get $i name]
   :local sqDstAddress [get $i dst-address]
   :local sqTotalBytes [get $i total-bytes]

 :log info ("Setting user level for: " . $sqName)
 

# LevelA
   :local sqLevel [:find $sqName "[LevelA]"]

 :if ($sqLevel >= 0)  do={
   :put ($sqName . " > LevelA <")
   /ip firewall address-list add list=LevelA address=$sqDstAddress
   set $i limit-at=64k/64k max-limit=128k/128k \
   burst-threshold=32k/32k burst-limit=512k/512k \
   burst-time=30/30 priority=8
   }

 
   # LevelB
   :local sqLevel [:find $sqName "[LevelB]"]

 :if ($sqLevel >= 0)  do={
   :put ($sqName . " > LevelB <")
   /ip firewall address-list add list=LevelB address=$sqDstAddress
   set $i limit-at=64k/64k max-limit=256k/256k \
   burst-threshold=32k/32k burst-limit=512k/512k \
   burst-time=30/30 priority=8
   }
 

# LevelC
   :local sqLevel [:find $sqName "[LevelC]"]

 :if ($sqLevel >= 0)  do={
   :put ($sqName . " > LevelC <")
   /ip firewall address-list add list=LevelC address=$sqDstAddress
   set $i limit-at=128k/128k max-limit=512k/512k \
   burst-threshold=64k/64k burst-limit=1024k/1024k \
   burst-time=30/30 priority=8
   }

}
 

:log info ("Setting user levels - finished")

}
 





Ova verzija je stavljena i na nas sajt.
Sačuvana

kiza
početnik
*
Pol: Muškarac
Ime i prezime:
Zoran Maricic
Mesto: Smederevska Palanka
Država: Srbija
Poruke: 7


« Odgovor #11 poslato: 19.03.2010. 21:21:15 »

Svaka cast na brzom odgovoru...testiram sutra i javljam rezultate. Mada ne sumnjam u tacnost uopste.
Sačuvana
kiza
početnik
*
Pol: Muškarac
Ime i prezime:
Zoran Maricic
Mesto: Smederevska Palanka
Država: Srbija
Poruke: 7


« Odgovor #12 poslato: 20.03.2010. 19:39:16 »

Test odradjen i na zalost nista ne radi....zatim sam malo pogledao kod skripte i video da nigde ne postoji deo koji izracunava kolicinu prenetih podataka(100 * 1048576) i sl. Ovaj skript meni nece ni pocetne vrednosti da podesi, a promenu brzine ne moze ni da radi jer i ne proverava kolicinu prenetih podataka. Verujem da nemas vremena na pretek, ali bi bilo sjajno kad bi sredio skript.
Ja sam radio klasican copy/paste skripte odavde sa sajta u MT, nadam se da nisam povukao neki neodgovarajuci format.
Sačuvana
kiza
početnik
*
Pol: Muškarac
Ime i prezime:
Zoran Maricic
Mesto: Smederevska Palanka
Država: Srbija
Poruke: 7


« Odgovor #13 poslato: 22.03.2010. 06:05:02 »

Bilo je gresaka u formatu nakon kopiranja, ali i nakon sredjivanja skript i dalje ne radi. Verzije na kojima sam testirao 3.13, 3.15, 3.22, 3.24, 4.5 !
Sačuvana
kiza
početnik
*
Pol: Muškarac
Ime i prezime:
Zoran Maricic
Mesto: Smederevska Palanka
Država: Srbija
Poruke: 7


« Odgovor #14 poslato: 22.03.2010. 09:00:54 »

Kad sam vec ugusio sa skriptom da kazem i resenje problema. . . . . dole navedeni skript radi. . . skinut sa sajta.  hxxp: wiki. mikrotik. com/wiki/Limiting_a_user_to_a_given_amount_of_traffic_with_user_levels
Problem je bio u tome sto sve nove verzije MT ne mere totalbytes ukoliko u queues stoji queue type default-small. . . stavite default i sve ce biti uredu.
Pozdrav za Pedju i hvala na trudu.

/queue simple;
:foreach i in=[find] \
do={  \
     :local sqName [get $i name]; \
     :local sqTotalBytes [get $i total-bytes]; \

     :local sqLevel [:find $sqName "[LevelA]"]; \
     :if ($sqLevel >= 0)  do={ \
        set $i limit-at=32000/32000 max-limit=64000/64000 burst-threshold=48000/48000 burst-limit=128000/128000 burst-time=30/30; \
         :if ($sqTotalBytes  > (100 * 1048576))  do={ \
          set $i limit-at=24000/24000 max-limit=32000/32000 burst-threshold=0/0 burst-limit=0/0 burst-time=0/0; \
        }; \
     } else {

       :set sqLevel [:find $sqName "[LevelB]"]; \
       :if ($sqLevel >= 0)  do={ \
           set $i limit-at=64000/64000 max-limit=128000/128000 burst-threshold=78000/78000 burst-limit=256000/256000 burst-time=30/30; \
           :if ($sqTotalBytes  > (200 * 1048576))  do={ \
            set $i limit-at=64000/64000 max-limit=64000/64000 burst-threshold=0/0 burst-limit=0/0 burst-time=0/0; \
           }; \

       } else { \

           :set sqLevel [:find $sqName "[LevelC]"]; \
           :if ($sqLevel >= 0)  do={ \
               set $i limit-at=72000/72000 max-limit=256000/256000 burst-threshold=96000/96000 burst-limit=1000000/1000000 burst-time=30/30; \
               :if ($sqTotalBytes  > (300 * 1048576))  do={ \
                  set $i limit-at=72000/72000 max-limit=72000/72000 burst-threshold=0/0 burst-limit=0/0 burst-time=0/0; \
                }; \
            }; \

        }; \
     }; \

     :if ($sqLevel >= 0) do { \
        :put ([get $i name] .  " : " .  [get $i limit-at] .  " : " .  [get $i max-limit]  .  " : " .  [get $i burst-limit]   .  " : " .  [get $i burst-threshold]  .  " : " .  [get $i burst-time]) ; \
     }; \
     }

Sačuvana
Pedja
urednik
stara kajla
*****
Pol: Muškarac
Ime i prezime:
Peđa Supurović
Mesto: Užice
Lokacija: Crna dama
Država: Srbija
FaceBook: ima
Blog: ima
Horoskop: Strelac
Poruke: 12963



WWW
« Odgovor #15 poslato: 22.03.2010. 20:53:23 »

Zaboravio sam da treba da se ogranicava i ukupan protok.

Evo ispravljen skript:


{

:log info ("Setting user levels - started");

/ip firewall address-list;

:local list [find list=LevelA]
 :if ([:len $list] > 0) do={remove $list}

:local list [find list=LevelB]
 :if ([:len $list] > 0) do={remove $list}

:local list [find list=LevelC]
 :if ([:len $list] > 0) do={remove $list}

:log info ("- user level lists deleted")

/queue simple

:foreach i in=[find] do={  \

     :local sqName [get $i name]
     :local sqDstAddress [get $i dst-address]
     :local sqTotalBytes [get $i total-bytes]

     :log info ("Setting user level for: " . $sqName)


# LevelA
     :local sqLevel [:find $sqName "[LevelA]"]

     :if ($sqLevel >= 0)  do={
       :put ($sqName . " > LevelA <")
       /ip firewall address-list add list=LevelA address=$sqDstAddress
        set $i limit-at=64k/64k max-limit=128k/128k \
                 burst-threshold=32k/32k burst-limit=512k/512k \
                 burst-time=30/30 priority=8

        :if ($sqTotalBytes  > (10 * 1048576))  do={ \
           set $i limit-at=12k/12k max-limit=32k/32k \
                     burst-threshold=10k/10k burst-limit=15k/15k burst-time=30/30 \
                     priority=8
   
          :log info ("Limit-exceeded on simple queue " . $sqName)

        }


     }

   
# LevelB
     :local sqLevel [:find $sqName "[LevelB]"]

     :if ($sqLevel >= 0)  do={
       :put ($sqName . " > LevelB <")
       /ip firewall address-list add list=LevelB address=$sqDstAddress
        set $i limit-at=64k/64k max-limit=256k/256k \
                 burst-threshold=32k/32k burst-limit=512k/512k \
                 burst-time=30/30 priority=8


        :if ($sqTotalBytes  > (20 * 1048576))  do={ \
           set $i limit-at=12k/12k max-limit=32k/32k \
                     burst-threshold=10k/10k burst-limit=15k/15k burst-time=30/30 \
                     priority=8
   
          :log info ("Limit-exceeded on simple queue " . $sqName)

        }

     }
   

# LevelC
     :local sqLevel [:find $sqName "[LevelC]"]

     :if ($sqLevel >= 0)  do={
       :put ($sqName . " > LevelC <")
       /ip firewall address-list add list=LevelC address=$sqDstAddress
        set $i limit-at=128k/128k max-limit=512k/512k \
                 burst-threshold=64k/64k burst-limit=1024k/1024k \
                 burst-time=30/30 priority=8

        :if ($sqTotalBytes  > (30 * 1048576))  do={ \
           set $i limit-at=12k/12k max-limit=32k/32k \
                     burst-threshold=10k/10k burst-limit=15k/15k burst-time=30/30 \
                     priority=8
   
          :log info ("Limit-exceeded on simple queue " . $sqName)

        }


     }

}


:log info ("Setting user levels - finished")

}

Sačuvana

Stranice: [1]
  Štampaj  
 
Prebaci se na:  


Pokreće MySQL Pokreće PHP Powered by SMF 1.1 RC3 | SMF © 2001-2006, Lewis Media | Imprint Ispravan XHTML 1.0! Ispravan CSS!
Stranica je napravljena za 2.069 sekundi sa 36 upita.