Назад | Перейти на главную страницу

iptables connlimit: исключить несколько IP-адресов

В настоящее время у меня есть эта команда IPTABLES:

iptables -A INPUT -s ! 192.168.0.2 -p tcp --syn -m connlimit [...] -j DROP

Насколько мне известно, такое правило ограничивает некоторое количество соединений по разным параметрам, за исключением 192.168.0.2, который позволяет открывать неограниченное количество TCP-соединений.

Меня беспокоит исключение дополнительных / 32 IP-адресов (без определенного шаблона диапазона), например:

iptables -A INPUT -s ! IP1 IP2 ... IPN -p tcp --syn -m connlimit [...] -j DROP

Как это возможно с iptables?

Не делай этого так. Люди связывают себя всякими узлами, пытаясь настроить iptables исключения, но это неправильный способ решения проблемы.

Вместо этого используйте логику первого диспозитивного совпадения-выигрыша iptables работать на вас. Сначала перечислите исключения:

iptables -A INPUT -s 192.168.1.1 -p tcp [...] -j ACCEPT
iptables -A INPUT -s 192.168.2.2 -p tcp [...] -j ACCEPT
iptables -A INPUT -s 192.168.3.3 -p tcp [...] -j ACCEPT

а затем правило:

iptables -A INPUT -p tcp --syn -m connlimit [...] -j DROP

Если ты не хочешь слепо ACCEPT пакетов с этих привилегированных исходных IP-адресов, но просто освобождая их от дополнительных элементов управления, ограничивающих скорость, вы можете переместить логику ограничения скорости в цепочку самостоятельно и RETURN На главную INPUT цепочка (для дальнейшей обработки) пакетов из источников, которые вы хотите исключить из-под контроля ограничения скорости:

iptables -N ratelimiter
iptables -A ratelimiter -s 192.168.1.1 -j RETURN
iptables -A ratelimiter -s 192.168.2.2 -j RETURN
iptables -A ratelimiter -s 192.168.3.3 -j RETURN
iptables -A ratelimiter --syn -m connlimit [...] -j DROP
#
iptables -A INPUT -p tcp [...] -j ratelimiter
iptables -A INPUT [ further business-appropriate checks ]