"Oskar Andreasson. Iptables Tutorial 1.1.19 " - читать интересную книгу автораДолжен подгружаться явно ключом -m limit. Прекрасно подходит для правил, производящих запись в системный журнал (logging) и т.п. Добавляя этот критерий, мы тем самым устанавливаем предельное число пакетов в единицу времени, которое способно пропустить правило. Можно использовать символ ! для инверсии, например -m limit ! -limit 5/s. В этом случае подразумевается, что пакеты будут проходить правило только после превышения ограничения. Более наглядно этот критерий можно представить себе как некоторую емкость с выпускным отверстием, через которое проходит определенное число пакетов за единицу времени (т.е. скорость "вытекания"). Скорость "вытекания" как раз и определяет величина -limit. Величина -limit-burst задает общий "объем емкости". А теперь представим себе правило -limit 3/minute -limit-burst 5, тогда после поступления 5 пакетов (за очень короткий промежуток времени), емкость "наполнится" и каждый последующий пакет будет вызывать "переполнение" емкости, т.е. "срабатывание" критерия. Через 20 секунд "уровень" в емкости будет понижен (в соответствии с величиной -limit), таким образом она готова будет принять еще один пакет, не вызывая "переполнения" емкости, т.е. срабатывания критерия. Рассмотрим еще подробнее. 1. Предположим наличие правила, содержащего критерий -m limit -limit 5/second -limit-burst 10. Ключ limit-burst установил объем "емкости" равный 10-ти. Каждый пакет, который подпадает под указанное правило, направляется в эту емкость. 2. Допустим, в течение 1/1000 секунды, мы получили 10 пакетов, тогда с получением каждого пакета "уровень" в "емкости" будет возрастать: 3. Емкость наполнилась. Теперь пакеты, подпадающие под наше ограничительное правило, больше не смогут попасть в эту "емкость" (там просто нет места), поэтому они (пакеты) пойдут дальше по набору правил, пока не будут явно восприняты одним из них, либо подвергнутся политике по-умолчанию. 4. Каждые 1/5 секунды "уровень" в воображаемой емкости снижается на 1, и так до тех пор, пока "емкость" не будет опустошена. Через секунду, после приема 10-ти пакетов "емкость" готова будет принять еще 5 пакетов. 5. Само собой разумеется, что "уровень" в "емкости" возрастает на 1 с каждым вновь пришедшим пакетом. От переводчика: Очень долгое время мое понимание критериев limit находилось на интуитивном уровне, пока Владимир Холманов (снимаю шляпу в глубочайшем поклоне) не объяснил мне просто и понятно его суть. Постараюсь передать его пояснения: 1. Расширение -m limit подразумевает наличие ключей -limit и -limit-burst. Если вы не указываете эти ключи, то они принимают значение по-умолчанию. 2. Ключ -limit-burst - это максимальное значение счетчика пакетов, при котором срабатывает ограничение. 3. Ключ -limit - это скорость, с которой счетчик burst limit "откручивается назад". Принцип, который просто реализуется на C и широко используется во многих алгоритмах-ограничителях. Таблица 6-8. Ключи критерия limit |
|
|