Сonnlimit без переустановки ядра HOW-TO. Скачиваем rpm с иходниками ядра и iptables Создаём временны каталог с правами 777 kernelsrcrpm/ Временный каталог для работы # cd ~/kernelsrcrpm # wget http://download.opensuse.org/distribution/SL-10.0-OSS/inst-source/suse/src/kernel-source-2.6.13-15.src.rpm # wget http://download.opensuse.org/distribution/SL-10.0-OSS/inst-source/suse/src/iptables-1.3.3-3.src.rpm Устанавливаем их # rpm -Uhv kernel-source-2.6.13-15.src.rpm # rpm -Uhv iptables-1.3.3-3.src.rpm Проверяем зависимости для сборки, распаковываем исходники, накладываем патчи # cd /usr/src/packages/SPECS/ # rpmbuild -bp --target $(uname -m) kernel-source.spec Если на этом этапе и далее будет сообщение о установке необходимых пакетов, то соответственно их ставим. Например, изначально у Вас нехватало такого набора для успешной компиляции: # //sbin/yast --install bison cvs flex gdbm-devel gettext-devel m4 ncurses-devel rcs strace texinfo zlib-devel autoconf automake # rpmbuild -bp --target $(uname -m) iptables.spec Здесь мне нехватало пакета с имходниками ядра kernel-source (получилось некоторое дублирование со скачанным пакетом с исходниками и kernel-source, но в случае скачанного src.rpm легче отследить зависимости компиляции). Экономить дисковое пространство я не стал, ведь потом все исходики можно спокойно удалить. # yast --install kernel-source Теперь нам нужно наложить патч connlimit на исходники ядра. . # cd ~/kernelsrcrpm/ Набор патчей для расширения функциональности iptalbes называются patch-o-matic-ng # wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070221.tar.bz2 # tar xfj patch-o-matic-ng-20070221.tar.bz2 # cd patch-o-matic-ng-20070221/ Делаем символическую ссылку на исходники iptables # ln -s /usr/src/packages/BUILD/iptables-1.3.3/ /usr/src/iptables # ./runme --download connlimit Здесь жмем ентер, принимая варианты по умолчанию (мы уже специально соблюли дефолт для удобства) и "y" на вопрос о применении патча. Приступаем непосредственно к компиляции модуля ядра. # cd /usr/src/linux Нужно не забыть тот факт, что ядро у нас крутое - bigsmp и нужно сохранить его особенности и при компиляции модуля. Для этого используем опции уже откомпилированного ядра и потом включим туда поддержку connlimit # cp /boot/config-2.6.13-15.13-bigsmp ./.config # make menuconfig Идем в Networking >> Networking options >> Network packet filtering (replaces ipchains) >> IP: Netfilter Configuration Жмем "М" возле пункта "Connections/IP limit match support" (внизу страницы) Выходим из меню конфигурирования, не забыв при этом сохранить новую конфигурацию ядра # make Ждать , пока ядро откомпилируется целиком совершенно необязательно, ведь нам нужен лишь модуль. CHK include/linux/version.h CHK include/linux/utsrelease.h CC init/main.o CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o CC init/do_mounts.o CC init/do_mounts_rd.o CC init/do_mounts_initrd.o CC init/do_mounts_md.o LD init/mounts.o CC init/initramfs.o CC init/calibrate.o LD init/built-in.o HOSTCC usr/gen_init_cpio GEN usr/initramfs_data.cpio.gz AS usr/initramfs_data.o LD usr/built-in.o После этого можно смело давить Ctrl+C Теперь компилируем модули netfilter : # make M=net/ipv4/netfilter/ Копируем свежескомпиленный connlimit в каталог с модулями # cp net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.13-15.13-bigsmp/kernel/net/ipv4/netfilter/ Обновляем дерево зависимости модулей # depmod -a Подключаем модуль # modprobe ipt_connlimit Тестируем работу # iptables -A INPUT -p tcp -m connlimit --connlimit-above 10 -j REJECT