Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-04-27 21:04:54

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Jak dokładnie działają --limit i --limit-burst w iptables?

Próbuje znaleźć jakieś sensowne info na temat --limit i --limit-burst ale coś mi ciągle umyka. Generalnie to jeśli się ustawi --limit-burst na 100 i --limit na 5/s , to po przekroczeniu progu połączeń 5/s zaczną być wybierane tokeny z --limit-burst , czyli jeśli by było połączeń 10/s, to po 20s tokeny z --limit-burst się wyczerpią i zadziała limit ograniczając ilość połączeń do 5/s. Pytanie jest jak się napełnia ten --limit-burst ? Jeśli ilość połączeń by została zredukowana do 3/s, to --limit-burst odzyska 100 tokenów w 50s czy w 20s?

Offline

 

#2  2014-04-27 21:37:54

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Jak dokładnie działają --limit i --limit-burst w iptables?

limit --oznacza limit, burst oznacza wartość początkową.
np w hashlimicie 5/h oznacza 5/godzinę, ale jak dodasz do tego burst 50, to zablokuje dopiero po 55 próbie.

burst w rożnych modułach ma wartości domyślne, w hashlimit to jest domyślnie 5.
Jak w limit, zobacz w dokumentacji modułu.

Z resztą, co tu jest do nierozumienia?

limit match options:
--limit avg            max average match rate: default 3/hour
                                [Packets per second unless followed by
                                /sec /minute /hour /day postfixes]
--limit-burst number        number to match in a burst, default 5[/quote]
i Haslimit:

hashlimit match options:
  --hashlimit-upto <avg>           max average match rate
                                   [Packets per second unless followed by
                                   /sec /minute /hour /day postfixes]
  --hashlimit-above <avg>          min average match rate
  --hashlimit-mode <mode>          mode is a comma-separated list of
                                   dstip,srcip,dstport,srcport (or none)
  --hashlimit-srcmask <length>     source address grouping prefix length
  --hashlimit-dstmask <length>     destination address grouping prefix length
  --hashlimit-name <name>          name for /proc/net/ipt_hashlimit
  --hashlimit-burst <num>        number to match in a burst, default 5
  --hashlimit-htable-size <num>    number of hashtable buckets
  --hashlimit-htable-max <num>     number of hashtable entries
  --hashlimit-htable-gcinterval    interval between garbage collection runs
  --hashlimit-htable-expire        after which time are idle entries expired?[/quote]
Pozdro
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2014-04-27 22:48:10

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Jak dokładnie działają --limit i --limit-burst w iptables?

limit --oznacza limit, burst oznacza wartość początkową.[/quote]
Jak wartość początkową? Pakiety sobie lecą poniżej limitu 5/s to nic się nie dzieje. Jak limit zostanie przekroczony, to wtedy są tokeny rozdawane z tego --limit-burst i jak jest 100, to liczba połączeń może skoczyć do 105/s po czym zostanie zredukowana do 5/s. Jeśli będzie 10/s, to po 20s limit zadziała, bo 5 nadmiarowych, a do wykorzystania 100 tokenów zostało. Czy ja coś tu źle rozumiem? W każdym razie nigdzie nie pisze jak te tokeny się uzupełniają, czyli po jakim czasie znów będzie do wykorzystania pełna stówa. Gdzieś mi tylko mignęło, że to zależy od ustawionego czasu czyli 5/s, to po tym jak liczba połączeń spadnie poniżej limitu, to tokeny się zaczną zbierać w tempie 5/s, chyba. Nie mogę tego znaleźć. :]

Offline

 

#4  2014-04-28 11:49:22

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Jak dokładnie działają --limit i --limit-burst w iptables?

limit 5 burst 50 -  wyczerpywanie limitu 5 zaczyna się od 51 próby.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2014-04-28 13:47:27

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Jak dokładnie działają --limit i --limit-burst w iptables?

To further explain the limit match, it is basically a token bucket filter. Consider having a leaky bucket where the bucket leaks X packets per time-unit. X is defined depending on how many matching packets we get, so if we get 3 packets, the bucket leaks 3 packets per that time-unit. The --limit option tells us how many packets to refill the bucket with per time-unit, while the --limit-burst option tells us how big the bucket is in the first place. So, setting --limit 3/minute --limit-burst 5, and then receiving 5 matches will empty the bucket. After 20 seconds, the bucket is refilled with another token, and so on until the --limit-burst is reached again or until they get used.

Consider the example below for further explanation of how this may look.

    We set a rule with -m limit --limit 5/second --limit-burst 10/second. The limit-burst token bucket is set to 10 initially. Each packet that matches the rule uses a token.

    We get packet that matches, 1-2-3-4-5-6-7-8-9-10, all within a 1/1000 of a second.

    The token bucket is now empty. Once the token bucket is empty, the packets that qualify for the rule otherwise no longer match the rule and proceed to the next rule if any, or hit the chain policy.

    For each 1/5 s without a matching packet, the token count goes up by 1, upto a maximum of 10. 1 second after receiving the 10 packets, we will once again have 5 tokens left.

    And of course, the bucket will be emptied by 1 token for each packet it receives.[/quote]
No teraz już łapie jak to działa — po ustawieniu --limit-burst na 100, będzie 100 tokenów do wykorzystania i ta liczba nie ulegnie zmniejszeniu do chwili przekroczenia --limit 10/s . Potem zacznie się wybieranie tokenów z --limit-burst w tempie nadmiarowym, czyli jeśli by było 20/s, to po 10s cześć pakietów zostanie zrzucona i będzie zrzucana cały czas do chwili gdy tokeny się odnowią, a zaczną się odnawiać w momencie gdy do tej reguły z limitem nie będzie żadnych dopasowań, czyli pakiety będą napływać rzadziej niż 1/10s , a same tokeny będą się odnawiać w tempie --limit.

I to chyba tyle jeśli chodzi o to zagadnienie.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.008 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00137 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='52.15.136.223' WHERE u.id=1
0.00070 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '52.15.136.223', 1733053183)
0.00044 SELECT * FROM punbb_online WHERE logged<1733052883
0.00047 SELECT topic_id FROM punbb_posts WHERE id=265001
0.00081 SELECT id FROM punbb_posts WHERE topic_id=25709 ORDER BY posted
0.00067 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25709 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00078 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25709 ORDER BY p.id LIMIT 0,25
0.00076 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25709
Total query time: 0.00621 s