### OS
Используемая ОС: centos 5.8 x32 на виртуальной машине.
Система обновлена до последней версии. Стоит отметить, что когда я было начинал настройку на x64 то пакет ipset был в стандартном репозитории. А в x32 в стандартном репозитории ipset нет. По этому пришлось установить репозиторий centalt. В силу обстоятельств мне нужно было именно заставить работать ipset на x32.
### INSTALL AND RUN
Все манипуляции проводились от пользователя root.
В файле /etc/sysconfig/iptables-config в параметр IPTABLES_MODULES надо добавить ip_set.
### UPDATE IPTABLES
После установки ipset сам по себе он и iptables друг с дружкой работать не будут. То что у iptables нет библиотеки для работы с ipset можно убедится так:
Проблема в том что в стандартном репозитории лежит более новая версия. А в репозиторий centalt версия старая версия пакета iptables (с поддержкой ipset). Через yum не поставить, будет предложена последняя версия. Можно конечно отключить стандартные репозитории. Но мне не хотелось ставить старую версию iptables. Тем более после обновления нужная библиотека будет утеряна. Но нам нужна всего одна библиотека libipt_set.so. Потому надо вытащить из rpm из репозитория centalt нужный нам файл.
Видим что ipset теперь работает без проблем. Судя по исходникам там уже давно ничего не менялось. Думаю должно работать как надо.
### TEST/USAGE
Ключик -N создает новую таблицу, далее указываем как эта таблица будет называться и способ хеширования. Далее добавляем ip. С ключом -L можно посмотреть какие в памяти есть таблицы. В правиле iptables указано, что те ip которые в таблице test, являются источниками и все что с этих адресов поступает надо блокировать.
### END
После успешного тестирования библиотека была скопирована на действующий шлюз. По понятным причинам мне совершенно не хотелось экспериментировать на рабочей машине. И по тем же причинам мне не хотелось устанавливать из исходников одну из последних версий iptables.
Вот сама библиотека: libipt_set.so.
В очередной раз задумался о переходе на centos 6.3. Уже не первый раз когда нужных, новых пакетов нет под 5.8.
Используемая ОС: centos 5.8 x32 на виртуальной машине.
shell> uname -a Linux localhost.localdomain 2.6.18-308.el5 #1 SMP Tue Feb 21 20:05:41 EST 2012 i686 i686 i386 GNU/Linux
Система обновлена до последней версии. Стоит отметить, что когда я было начинал настройку на x64 то пакет ipset был в стандартном репозитории. А в x32 в стандартном репозитории ipset нет. По этому пришлось установить репозиторий centalt. В силу обстоятельств мне нужно было именно заставить работать ipset на x32.
### INSTALL AND RUN
Все манипуляции проводились от пользователя root.
shell> yum install ipset kmod-ipset shell> modprobe ip_set
В файле /etc/sysconfig/iptables-config в параметр IPTABLES_MODULES надо добавить ip_set.
### UPDATE IPTABLES
После установки ipset сам по себе он и iptables друг с дружкой работать не будут. То что у iptables нет библиотеки для работы с ipset можно убедится так:
shell> iptables -m set iptables v1.3.5: Couldn't load match `set':/lib/iptables/libipt_set.so: cannot open shared object file: No such file or directory
Проблема в том что в стандартном репозитории лежит более новая версия. А в репозиторий centalt версия старая версия пакета iptables (с поддержкой ipset). Через yum не поставить, будет предложена последняя версия. Можно конечно отключить стандартные репозитории. Но мне не хотелось ставить старую версию iptables. Тем более после обновления нужная библиотека будет утеряна. Но нам нужна всего одна библиотека libipt_set.so. Потому надо вытащить из rpm из репозитория centalt нужный нам файл.
shell> cd /tmp/ shell> wget http://centos.alt.ru/repository/centos/5/i386/iptables-1.3.5-5.6.1.el5.i386.rpm shell> rpm2cpio iptables-1.3.5-5.6.1.el5.i386.rpm |cpio -idmv shell> cp /tmp/lib/iptables/libipt_set.so /lib/iptables/ shell> iptables -m set iptables v1.3.5: You must specify `--set' with proper arguments Try `iptables -h' or 'iptables --help' for more information.
Видим что ipset теперь работает без проблем. Судя по исходникам там уже давно ничего не менялось. Думаю должно работать как надо.
### TEST/USAGE
shell> ipset -N test iphash shell> ipset -A test 192.168.40.153 shell> ipset -A test 192.168.42.4 shell> ipset -L Name: test Type: iphash References: 0 Header: hashsize: 1024 probes: 8 resize: 50 Members: 192.168.42.4 192.168.40.153 shell> iptables -A INPUT -m set --set test src -j DROP
Ключик -N создает новую таблицу, далее указываем как эта таблица будет называться и способ хеширования. Далее добавляем ip. С ключом -L можно посмотреть какие в памяти есть таблицы. В правиле iptables указано, что те ip которые в таблице test, являются источниками и все что с этих адресов поступает надо блокировать.
### END
После успешного тестирования библиотека была скопирована на действующий шлюз. По понятным причинам мне совершенно не хотелось экспериментировать на рабочей машине. И по тем же причинам мне не хотелось устанавливать из исходников одну из последних версий iptables.
Вот сама библиотека: libipt_set.so.
В очередной раз задумался о переходе на centos 6.3. Уже не первый раз когда нужных, новых пакетов нет под 5.8.