The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Эффективное блокирование тысяч IP в Linux"
Отправлено nuclight, 05-Июл-07 11:17 
Аналогично, с вызовом программы на каждое правило и еще и печатью на stdout (которое мы отправим в /dev/null), чтоб замедлить насколько можно, запустим простое добавление в ipfw семидесяти тысяч правил, прямой аналог того, что делали с iptables в статье:

# ./genips.pl > rules.sh; chmod +x rules.sh # в genips строки сменены с таблицы на обычное add all from, см. комментарии в скрипте
# time ./rules.sh > /dev/null
./rules.sh > /dev/null  116,97s user 519,57s system 100% cpu 10:33,90 total

Десять с половиной минут.
Измерения проводились на ненагруженном в этот момент сервере:
FreeBSD 6.2-STABLE #0: Sat Apr 28 23:26:52 NOVST 2007
    vadim@hostel.avtf.net:/usr/obj/usr/src/sys/HOSTEL
acpi_alloc_wakeup_handler: can't alloc wake memory
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (2992.52-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf34  Stepping = 4
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x441d<SSE3,RSVD2,MON,DS_CPL,CNTX-ID,<b14>>
  Logical CPUs per core: 2

Повторим добавление в таблицу в "боевых" условиях, наиболее быстрым способом (подгружая из файла без печати на stdout):

# ./genips.pl > table
# time ipfw -q /home/vadim/work/table
ipfw -q /home/vadim/work/table  0,67s user 0,19s system 93% cpu 0,910 total

То есть практически мгновенно. Строки в скрипте генерации были изменены на:
my $prefix = "table 111 add ";
my $suffix = "\n";

Изменим их на:
my $prefix = "add 777 deny all from ";
my $suffix = " to any\n";

И проверим добавление 70000 правил снова:
# ./genips.pl > rules
# time ipfw -q /home/vadim/work/rules
ipfw -q /home/vadim/work/rules  85,85s user 315,14s system 98% cpu 6:46,03 total

В полтора раза быстрее, чем в предыдущий раз, как видим.

Ну и в дополнение по нагрузке. Если запустить на этот сервер ping -f с соседнего, то есть каждый пакет проходит через все 70000 правил и ответ на него - тоже, при примерно 300-400 pps (фря ограничивает количество icmp-ответов в секунду) нагрузка по прерываниям составляет около 50% CPU.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру