>>>-A PREROUTING -p tcp -m tcp -m state -i eth0 --tcp-flags SYN,ACK SYN ! --state NEW -j DROP
> Ну идёт первый SYN пакет, но state ещё не NEW и дропается.
> Эти соединение вообще никогда не установятся. Чего Вы добиваетесь этим правилом? Извиняюсь. Здесь я пытался сам составить правило и немного напортачил.
В оригинале было следующее:
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Не там знак отрицания поставил и цепочку видимо не ту взял так как в PREROUTING данные манипуляции над пакетами будут считаться фильтрацией что уже не допустимо.
Примерно так должно было быть:
-A INPUT -p tcp -m tcp -m state -i eth0 ! --tcp-flags SYN,ACK SYN --state NEW -j DROP
>ну используйте -m connlimit
Буду благодарен если кинете ссылкой с параметрами этого ключа и примерами его использования. C --limit тоже как то всё туманно...
iptables -A INPUT -p icmp --icmp-type echo-reply -m limit --limit \
3/minute --limit-burst 5 -j DROP
Вот это объяснение меня в конец запутало "А теперь представим себе правило --limit 3/minute --limit-burst 5, тогда после поступления 5 пакетов (за очень короткий промежуток времени), емкость "наполнится" и каждый последующий пакет будет вызывать "переполнение" емкости, т.е. "срабатывание" критерия. Через 20 секунд "уровень" в емкости будет понижен (в соответствии с величиной --limit), таким образом она готова будет принять еще один пакет, не вызывая "переполнения" емкости, т.е. срабатывания критерия."
Где указываются эти 20 секунд? И значит ли это что лимитом пропускания станет 1 пакет в 20 секунд если будет постоянная нагрузка на канал?