2

По какой-то причине я не могу понять концепцию предела и предельного пакета в IPTABLES. Может ли кто-нибудь помочь мне здесь!

Спасибо!

2 ответа2

3

Модуль limit устанавливает таймер того, как часто присоединенному правилу iptables разрешается совпадать с пакетом.

Параметр limit-burst устанавливает, сколько пакетов разрешено сопоставлять. Лимит времени устанавливает частоту восстановления предела.

Чтобы свести его, давайте сначала предположим, что пакетный бит не существует (или установлен в 1, равносильно тому же). Указанный фактический параметр предела просто устанавливает таймер как для правила, так и для пакета предела. Таким образом, установка его на 5/ секунду сделает таймер на 1/5 секунды, а установка на 4/ час сделает таймер на 15 минут. Ни один пакет не будет соответствовать правилу во время работы таймера (поэтому, если это целевое правило ПРИНЯТЬ, пакет не будет принят в течение 1/5 секунды или 15 минут, в зависимости от).

Так что усложнить это ... Параметр limit-burst действует как счетчик пакетов. Для каждого соответствующего пакета счетчик уменьшается на единицу, и таймер запускается (или перезапускается, если он уже запущен). Правило по- прежнему соответствует всему, что приходит. Когда таймер заканчивается, счет увеличивается на единицу. Если счетчик достигает 0, правило прекращает сопоставление до тех пор, пока не закончится таймер и счет снова не вернется к 1, и не продолжит отсчет по таймеру, пока не вернется к установленному пакету.

Таким образом, установка пакета в 1 означает, что вы в буквальном смысле соответствует 1 и только 1 пакету за интервал таймера, а установка его выше означает, что вы создаете буфер для этого таймера, прежде чем он будет строго задействован.

В качестве грубого примера, допустим, у вас есть порция 10 и таймер 1/ секунда по правилу ПРИНЯТЬ. Допустим, вы получите 20 подходящих пакетов всего за секунду. Первые десять совпадают и принимаются, остальные нет. Через десять секунд после этого счетчик всплесков вернется к максимальному значению 10. Теперь приходит 5 матчей (в течение секунды), все они совпадают без проблем, счетчик теперь будет на 5. 2 секунды проходят без матчей, ставя счетчик на 7. Еще 20 матчей приходят; первая 7 будет соответствовать и принимать, остальные нет.

Перефразируя в основном этот документ, в котором есть дополнительные примеры в разделе, где описывается модуль лимита.

1

--limit: Определяет скорость, с которой токены добавляются в корзину . 4/hour означает 4 токена в час (1 токен каждые 15 минут).

--limit-burst: Определяет максимальное количество токенов, которые могут быть заполнены в ведре. (Это также количество токенов, с которых начинается ведро).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .