vbalykin Опубликовано 14 марта, 2015 · Жалоба Пытаюсь сделать зеркалирование трафика с помощью xtables-addons. На СеntOS 6 данная процедура прошла без проблем. А вот на CentOS 5.5 возникли проблемы. Что имеем: # cat /etc/issue CentOS release 5.5 (Final) Kernel \r on an \m # uname -a Linux localhost.localdomain 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44 EDT 2010 i686 i686 i386 GNU/Linux Подготовка к сборке. Все необходимое для сборки установил, дополнительно доставил пакет perl-Text-CSV_XS-0.80-1.el5.rf.i386.rpm из rpm-forge. Почему-то в CentOS 5.5 отсутствует файл /usr/include/linux/netfilter/xtables.h, поэтому сделал симлинк на /usr/include/linux/netfilter/x_tables.h Дополнительно сделал симлинк 2.6.18-194.el5-PAE-i686 на /usr/src/kernels/2.6.18-194.el5-i686. Версии xtables-addons-1.47.1 и xtables-addons-1.20 при configure сразу ругаются на ... checking for linux/netfilter/x_tables.h... yes WARNING: This distribution's shipped kernel is not supported. make: *** /lib/modules/2.6.18-194.el5PAE/build: No such file or directory. Stop. Found kernel version ...0 in /lib/modules/2.6.18-194.el5PAE/build ./configure: line 11710: test: : integer expression expected ./configure: line 11712: test: : integer expression expected Поэтому пробую более древние версии, а именно xtables-addons-1.10 и xtables-addons-1.5.7, которые вроде бы должны работать с ядром 2.6.18. Файл mconfig обрезал до минимально возможного состояния: # -*- Makefile -*- # build_CHAOS= build_DELUDE= build_DHCPADDR= build_ECHO= build_IPMARK= build_LOGMARK= build_SYSRQ= build_TARPIT= build_TEE=m build_condition= build_fuzzy= build_geoip= build_ipp2p= build_ipset= build_portscan= build_quota2= configure отрабатывает без видимых проблем: #./configure --with-xtables=/usr/include/linux/netfilter ... checking for g++ option to produce PIC... -fPIC checking if g++ PIC flag -fPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate appending configuration tag "F77" to libtool checking xtables.h presence... /usr/include/linux/netfilter/xtables.h configure: creating ./config.status config.status: creating Makefile config.status: creating extensions/GNUmakefile config.status: creating extensions/ipset/GNUmakefile config.status: WARNING: extensions/ipset/GNUmakefile.in seems to ignore the --datarootdir setting config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands А вот при сборке получаем ошибку: # make make all-recursive make[1]: Entering directory `/root/test/xtables-addons-1.5.7' Making all in extensions make[2]: Entering directory `/root/test/xtables-addons-1.5.7/extensions' make -C /lib/modules/2.6.18-194.el5PAE/build M=/root/test/xtables-addons-1.5.7/extensions XA_TOPSRCDIR=/root/test/xtables-addons-1.5.7 modules; make[3]: Entering directory `/usr/src/kernels/2.6.18-194.el5-i686' CC [M] /root/test/xtables-addons-1.5.7/extensions/compat_xtables.o In file included from /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:20: /root/test/xtables-addons-1.5.7/extensions/compat_skbuff.h:26: ошибка: redefinition of ‘skb_reset_network_header’ include/linux/skbuff.h:1122: ошибка: previous definition of ‘skb_reset_network_header’ was here /root/test/xtables-addons-1.5.7/extensions/compat_skbuff.h:30: ошибка: redefinition of ‘tcp_hdr’ include/linux/tcp.h:169: ошибка: previous definition of ‘tcp_hdr’ was here /root/test/xtables-addons-1.5.7/extensions/compat_skbuff.h:34: ошибка: redefinition of ‘udp_hdr’ include/linux/udp.h:33: ошибка: previous definition of ‘udp_hdr’ was here In file included from /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:21: /root/test/xtables-addons-1.5.7/extensions/compat_xtnu.h:9: ошибка: redefinition of typedef ‘bool’ include/linux/types.h:36: ошибка: previous declaration of ‘bool’ was here /root/test/xtables-addons-1.5.7/extensions/compat_xtnu.h:10: ошибка: redeclaration of enumerator ‘false’ include/linux/stddef.h:16: ошибка: previous definition of ‘false’ was here /root/test/xtables-addons-1.5.7/extensions/compat_xtnu.h:10: ошибка: redeclaration of enumerator ‘true’ include/linux/stddef.h:18: ошибка: previous definition of ‘true’ was here /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c: In function ‘xtnu_ip_route_me_harder’: /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:302: ошибка: слишком много аргументов в вызове функции ‘ip_route_me_harder’ /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c: На верхнем уровне: /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:387: ошибка: expected ‘)’ before ‘*’ token /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:394: ошибка: expected ‘)’ before ‘*’ token /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:398: ошибка: ‘xtnu_csum_replace2’ undeclared here (not in a function) /root/test/xtables-addons-1.5.7/extensions/compat_xtables.c:398: предупреждение: в декларации ‘xtnu_csum_replace2’ по умолчанию установлен тип ‘int’ make[4]: *** [/root/test/xtables-addons-1.5.7/extensions/compat_xtables.o] Ошибка 1 make[3]: *** [_module_/root/test/xtables-addons-1.5.7/extensions] Ошибка 2 make[3]: Leaving directory `/usr/src/kernels/2.6.18-194.el5-i686' make[2]: *** [modules] Ошибка 2 make[2]: Leaving directory `/root/test/xtables-addons-1.5.7/extensions' make[1]: *** [all-recursive] Ошибка 1 make[1]: Leaving directory `/root/test/xtables-addons-1.5.7' make: *** [all] Ошибка 2 Гуглением нашёл только одну тему с данной проблемой, в которой рекомендовали бросить проблемное ядро от RedHat и перебраться на "ванильное" ядро, но данный "совет" в моём случае не подходит. С чем может быть связана данная ошибка? Кто-нибудь может поделиться опытом сборки модуля TEE для xtables-addons на CentOS 5? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 14 марта, 2015 · Жалоба Оно же пишет, что у тебя несколько раз объявлены структуры, или что там. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DVM-Avgoor Опубликовано 14 марта, 2015 · Жалоба А если поставить ядро 2.2.17 все будет еще круче. Ядру 2.6.18 скоро 10 лет стукнет, если хочется собрать на нем что-то относительно свежее, нужно переписать интерфейсы ядра в старом, которые появились/изменились в новых. Разве это не понятно? :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vbalykin Опубликовано 14 марта, 2015 · Жалоба По наводке местных знатоков и совету товарища из вот этой темы всё-таки получилось поправить исходники и собрать нужные модули: # make make all-recursive make[1]: Entering directory `/root/test/xtables-addons-1.15' Making all in extensions make[2]: Entering directory `/root/test/xtables-addons-1.15/extensions' GEN modules make[3]: Entering directory `/usr/src/kernels/2.6.18-194.el5-i686' CC [M] /root/test/xtables-addons-1.15/extensions/compat_xtables.o CC [M] /root/test/xtables-addons-1.15/extensions/xt_TEE.o Building modules, stage 2. MODPOST CC /root/test/xtables-addons-1.15/extensions/compat_xtables.mod.o LD [M] /root/test/xtables-addons-1.15/extensions/compat_xtables.ko CC /root/test/xtables-addons-1.15/extensions/xt_TEE.mod.o LD [M] /root/test/xtables-addons-1.15/extensions/xt_TEE.ko make[3]: Leaving directory `/usr/src/kernels/2.6.18-194.el5-i686' CC libxt_TEE.oo CCLD libxt_TEE.so make[2]: Leaving directory `/root/test/xtables-addons-1.15/extensions' make[2]: Entering directory `/root/test/xtables-addons-1.15' sed -e '/@MATCHES@/ r extensions/matches.man' -e '/@TARGET@/ r extensions/targets.man' xtables-addons.8.in >xtables-addons.8; make[2]: Leaving directory `/root/test/xtables-addons-1.15' make[1]: Leaving directory `/root/test/xtables-addons-1.15' Но при попытке их загрузить получаю: # modprobe xt_TEE FATAL: Error inserting xt_TEE (/lib/modules/2.6.18-194.el5PAE/extra/xt_TEE.ko): Unknown symbol in module, or unknown parameter (see dmesg) Отыскал репозиторий OpenFusion, где имеются собранные модули для CentOS 5 (пакеты kernel-module-xtables-addons-2.6.18-128.1.6.el5-1.15-1.of.el5.i386.rpm, iptables-1.4.3.2-2.of.el5.i386.rpm, iptables-devel-1.4.3.2-2.of.el5.i386.rpm, iptables-ipv6-1.4.3.2-2.of.el5.i386.rpm), то есть сборка в принципе возможна. Но там они для другой версии ядра и при загрузке на моём ядре получаю точно такую же ошибку Unknown symbol in module, or unknown parameter. SRC.RPM файлов к пакету kernel-module-xtables-addons-2.6.18-128.1.6.el5-1.15-1.of.el5.i386.rpm, чтобы пересобрать его, отыскать не удалось. Буду рад любым советам. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 14 марта, 2015 · Жалоба Не мучать ж... и обновить ядро. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
^rage^ Опубликовано 15 марта, 2015 · Жалоба какой смысл пользоваться копролитами? 2.6.18 и bkl, и куча других проблем. зачем? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vbalykin Опубликовано 16 марта, 2015 · Жалоба Проблема решена. Алгоритм такой: 1. Проверяем сборочную среду: если ядро PAE, то нужно ставить kernel-PAE-devel, иначе после сборки будет ругань Unknown symbol in module, or unknown parameter. 2. Обновляем iptables пакетами из OpenFusion: # rpm -Uvh iptables-1.4.3.2-2.of.el5.i386.rpm iptables-ipv6-1.4.3.2-2.of.el5.i386.rpm iptables-devel-1.4.3.2-2.of.el5.i386.rpm 3. Качаем xtables-addons-1.15-1.of.src.rpm из http://www.openfusion.com.au/labs/srpms/ и устанавливаем. # rpm -ivh xtables-addons-1.15-1.of.src.rpm 4. Распаковываем исходные тексты программы с наложением патчей (фаза %prep): # cd /usr/src/redhat/SPECS # rpmbuild -bp xtables-addons.spec При этом в каталоге /usr/src/redhat/BUILD/xtables-addons-1.15 находятся 2 каталога: оригинальный (extensions.dist) и патченный (extensions). 5. Комментируем объявление функции функции csum_unfold в файле compat_xtnu.h патченного каталога extensions: #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 19) /* static inline __wsum csum_unfold(__sum16 n) { return (__force __wsum)n; } */ #endif 6. Готовим новый diff-файл файл: # cd /usr/src/redhat/BUILD/xtables-addons-1.15 # diff -Npru extensions.dist extensions > /usr/src/redhat/SOURCES/new.patch 7. Правим spec-файл xtables-addons.spec, изменив в нём номер релиза, версию ядра и имя патча: #%define kern_version 2.6.18-128.1.6.el5 %define kern_version 2.6.18-194.el5PAE #Release: 1%{org_tag}%{dist} Release: 1new #Patch0: %{name}-1.15-el5-tweakage.patch Patch0: new.patch 8. Можно производить сборку: # rpmbuild -bb --target=i686 xtables-addons.spec Модули, собранные для одного из ядер серии PAE подходят для ЛЮБЫХ ядер PAE из CentOS 5. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 16 марта, 2015 · Жалоба ..а в свежих ядрах xtables и все таргеты для iptables(тот же xt_TEE) идут уже изначально. Категорически непонятны ваши беды и избранный для их решения тернистый путь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
^rage^ Опубликовано 16 марта, 2015 · Жалоба ..а в свежих ядрах xtables и все таргеты для iptables(тот же xt_TEE) идут уже изначально. Категорически непонятны ваши беды и избранный для их решения тернистый путь. отдельный момент - 32битные ядра в современном мире. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morfair Опубликовано 22 декабря, 2015 (изменено) · Жалоба vbalykin А как вы сделали зеркалирование трафика в CentOS 6, если там 2.6.32-573.12.1.el6.x86_64 с iptables v1.4.7 и отсутствует xt_TEE? Изменено 22 декабря, 2015 пользователем morfair Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...