В настоящее время у меня есть эта команда 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 ]