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?

1 ответ

Решение

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

Вместо этого используйте логику first-dispositive-match-wins 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 ]
Другие вопросы по тегам