Скажем, кто-то хочет иметь список заблокированных IP-адресов.
Я видел следующий пример сценария:
BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP
iptables -A OUTPUT -d $i -j DROP
done
Является ли несколько тысяч строк, которые превращаются в несколько тысяч записей iptables, вменяемым?
Каков верхний предел, за пределами которого эффективность системы будет значительно затронута?
Ответы:
Я думаю, что нашел решение через эту статью, и IPSet, кажется, ответ
В сумме:
Если набор IP-адресов содержит тысячи элементов, производительность iptables снижается (на самом деле производительность netfilter, поскольку iptables становится просто инструментом для управления брандмауэром). Ваша загрузка процессора тоже может увеличиться. К счастью, есть идеальное решение - ипсец
IPSet является идеальным инструментом, если вы хотите:
Установка ipset проста
sudo apt-get install ipset
Затем запустите следующее
Добавьте его в свою цепочку iptables. Он может отличаться в зависимости от настроек вашего брандмауэра. Здесь мы используем этиновую цепь.
Теперь вы можете добавить все плохие IP к вашему ipset. Например, у вас есть текстовый файл с именем bots.txt, по одному IP на строку. Таким образом, вы можете добавить их в ipset с помощью простого скрипта bash:
Для проверки запуска:
источник