Ошибка сборки xtables_addons на CentOS
13 Март 2014, 10:26
Если вы пытаетесь поставить xtables_addons в вашу систему Centos, например, для подключения к iptables модуля geoip, а у вас не получается скомпилировать пакет, то здесь я опишу один из путей решения.
Сам процесс установки я описывать не буду. Их можно прочесть здесь:
http://andrey.org/iptables-geoip-centos/
http://blogs.hub21.ru/blog/sysadmins/310.html
Так вот, с надеждой вы делаете ./configure && make и у вас вываливается следующая ошибка:
make all-recursive
make[1]: Entering directory `/root/xtables-addons-1.47'
Making all in extensions
make[2]: Entering directory `/root/xtables-addons-1.47/extensions'
Xtables-addons 1.47 - Linux 2.6.32-431.5.1.el6.x86_64
if [ -n "/lib/modules/2.6.32-431.5.1.el6.x86_64/build" ]; then make -C /lib/modules/2.6.32-431.5.1.el6.x86_64/build M=/root/xtables-addons-1.47/extensions modules; fi;
make[3]: Entering directory `/usr/src/kernels/2.6.32-431.5.1.el6.x86_64'
CC [M] /root/xtables-addons-1.47/extensions/compat_xtables.o
/root/xtables-addons-1.47/extensions/compat_xtables.c: In function ‘xtnu_ipv6_find_hdr’:
/root/xtables-addons-1.47/extensions/compat_xtables.c:633: error: too few arguments to function ‘ipv6_find_hdr’
make[4]: *** [/root/xtables-addons-1.47/extensions/compat_xtables.o] Error 1
make[3]: *** [_module_/root/xtables-addons-1.47/extensions] Error 2
make[3]: Leaving directory `/usr/src/kernels/2.6.32-431.5.1.el6.x86_64'
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/root/xtables-addons-1.47/extensions'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/xtables-addons-1.47'
make: *** [all] Error 2
Это значит в вашей версии ядра нет функции ipv6_find_hdr. Судя по описаниям, она была удалена начиная с версии 2.6.32-384. Решение просто:
Открываем файл ./extensions/compat_xtables.c и удаляем строки между EXPORT_SYMBOL_GPL(HX_memmem); и MODULE_LICENSE("GPL");
Они примерно, в зависимости от версии xtables_addons, могут выглядеть так:
После того, как вы их удалили, пробуем скомпилировать опять. И, о чудо! Все завелось =) И это все даже будет работать, но только с IPv4, для iptables IPv6, увы, нет.
Надеюсь, помог кому-либо.