Jump to content
Калькуляторы

ipt_NETFLOW и ядро 2.4

Добрых суток.

 

Не могу понять где ошибка.

Есть машина с ядром 2.4.37. iptables 1.4.2. Скачиваю сабж, собираю его. Все проходит, без проблем и модуль собирается.

 

После сборки и установки пытаюсь загрузить модуль, оно говорит, что такого модуля нет.

При добавлении правила, говорит:

iptables v1.4.2: Couldn't load target `NETFLOW':/usr/local/libexec/xtables/libipt_NETFLOW.so: cannot open shared object file: No such file or directory

 

Если скопировать собранный модуль, туда, где ищет, то не может найти таргет, который этот модуль добавляет. Вообщем ерунда какая-то. Все делал по мануалу, гуглил, совал собранный файл в разные места, но это ничего не дает. Не могу понять в чем проблема. Может кто сталкивался, просветит.

 

Заранее спасибо.

Share this post


Link to post
Share on other sites

все-таки наверное с конфигом ядра что-то не так. я бы еще раз прошелся по menuconfig в поисках пропущенной опции и перекомпилил ядро

Share this post


Link to post
Share on other sites

Сложность в том, что не понятно в какую сторону копать-то.

Share this post


Link to post
Share on other sites
NETFLOW':/usr/local/libexec/xtables/libipt_NETFLOW.so

Собирал его где то пол года назад, и помню долго метерился заменяя в каких то файлах iptables на xtables.

 

Поищите в эту сторону.

 

 

Share this post


Link to post
Share on other sites

а оно вообще с 2.4 работает? совместимость вроде не заявлена.

да и не только iptables надо патчить,а и само ядро

 

Share this post


Link to post
Share on other sites

2Дегтярев Илья: Ну в инете я такого не нашел. Вы в исходниках меняли или собранные файлы как-то тусовали? Был бы Вам очень благодарен, если бы Вы все же вспомнили, как удалось это чудо завести.

 

2[anp/hsw]: Ну по крайней мере не написано что не поддерживает и собирается нормально.

Share this post


Link to post
Share on other sites

та же самая фигня была, токо ядро 2.6, нормально поднялось только с iptables-1.4.1.1 из последних

 

Share this post


Link to post
Share on other sites

Ну iptables 1.4.2, в том-то и проблема. С 1.3.5 вообще собираться не хотело.

Share this post


Link to post
Share on other sites

Приду на работу, сравню все. Этот менял точно.

 

# cat libipt_NETFLOW.c
// iptables helper for NETFLOW target
// <abc@telekom.ru>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <getopt.h>
#include <iptables.h>
#include <net/if.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <iptables.h>
//#include <linux/netfilter_ipv4/ip_tables.h>
//#include "ipt_NETFLOW.h"

static struct option opts[] = {
  {0}
};

static void NETF_help(void)
{
        printf( "NETFLOW target\n");
}

static int NETF_parse(int c, char **argv, int invert, unsigned int *flags,
      const void *entry,
      struct xt_entry_target **target)
{

        return 1;
}

static void NETF_final_check(unsigned int flags)
{
}

static void NETF_save(const void  *ip, const struct xt_entry_target *match)
{
}

static void NETF_print(const void  *ip,
      const struct xt_entry_target *target,
      int numeric)
{
        printf("NETFLOW ");
}

//static struct iptables_target netflow = {
static struct xtables_target netflow = {

        .next           = NULL,
        .name           = "NETFLOW",
        .version        = IPTABLES_VERSION,
        .size           = XT_ALIGN(0),
        .userspacesize  = XT_ALIGN(0),
//      .help           = &help,
        .help           = NETF_help,
        .parse          = NETF_parse,
//      .final_check    = &final_check,
        .final_check    = NETF_final_check,
        .print          = NETF_print,
        .save           = NETF_save,
        .extra_opts     = opts
};

void _init(void)
{
        xtables_register_target(&netflow);
}

 

И при компиляции в его папку кинул исходники iptables 1.4.1.1

 

 

Share this post


Link to post
Share on other sites

2Дегтярев Илья: Ну это хелпер для основного модуля, вполне вероятно что его корректировка поможет.

 

Судя по makefile при компиляции исходники iptables используются, поэтому смысла отдельно их перебрасывать нет. Я пробовал наоборот: раскидывать исходники этого модуля по исходникам iptables. Собрать это безобразие мне не удалось.

 

Буду благодарен, если вышлите изменный файл.

Share this post


Link to post
Share on other sites

Ничего не изменилось.

 

У меня такой вопрос: а почему после сборки, модуль собирается только для lib/iptables? Почему модуль не собирается для libexec/xtables где его по-умолчанию ищет iptables и не находит? Копирование собранного модуля дает только сообщение, что такого таргета нет. Кроме того, модули в папке /libexec/xtables явно отличаются по размеру, в то время, как модуль для lib/iptables соответствует среднему размеру модуля.

 

Можно ли как-то заставить iptables брать модули из /lib/iptables ?

Share this post


Link to post
Share on other sites

Пробовал собирать с разными версиями iptables. Начиная с 1.4.1.1 и вниз. 1.4.1.1 сказало, что модуль с нерешенным символом, с версией 1.3.8 вообще отказалось собираться мотивируя тем, что нет какого-то исходника в 1.3.8.

 

А те у кого собралось, собирали 1.2 или 1.4 версию?

Share this post


Link to post
Share on other sites
Можно ли как-то заставить iptables брать модули из /lib/iptables ?

Вашу ошибку можно легко сгенерировать:

root@alice:~$ iptables -A FORWARD -i eth0 -j HELLO
iptables v1.4.0: Couldn't load target `HELLO':/lib/iptables/libipt_HELLO.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.

 

Отсюда делаю вывод, что скорее всего с ядром всё нормально, но нет модуля для iptables.

 

Как компилировали iptables? Сталкивался с такой проблемой. Решилось сборкой самого iptables вот так:

./configure --sbindir=/sbin --libdir=/lib

Share this post


Link to post
Share on other sites

2alexmern: Вы правы, насчет того, что нет модуля. Это наблюдается для версии 1.4.2 iptables. Но к примеру для версии 1.4.1.1 модуль не подымается, хотя ложится в нужное место.

 

Ключи, которые Вы дали, являются путями для make install sbin и lib папок соответствено. Никакого влияния на саму сборку они не оказывают, поэтому не понятно как они влияют на сам ipt_NETFLOW, тогда как его сорщик корректно распознает где лежат модули и ложит его туда же.

 

Мне просто кажется, что на момент релиза версии 1.4 ipt_NETFLOW не было еще 1.4.2 iptables, поэтому они с ней не работают. Почему же оно не работает с версией 1.4.1.1 не ясно.

 

iptables -I INPUT -d x.x.x.x -j NETFLOW

iptables: target `[h@' vUЕSХ (I'm v1.4.1.1).

 

Вот что получаем с 1.4.1.1. Пробовал и с оригинальным файлом и с файлом из этого топика откорректированным. Раницы никакой.

 

Вы говорите Вы сталкивались с такой проблемой. Именно в разрезе ipt_NETFLOW и iptables или другие модули для iptables собирали? Если в разрезе ipt_NETFLOW, какие версии были ipt_NETFLOW, iptables, kernel?

Share this post


Link to post
Share on other sites

router ~ # iptables -nvL FORWARD | head -3

Chain FORWARD (policy ACCEPT 1191G packets, 1011T bytes)

pkts bytes target prot opt in out source destination

85G 71T NETFLOW all -- * * 0.0.0.0/0 0.0.0.0/0 NETFLOW

router ~ # uname -a

Linux router 2.6.27-gentoo-r7 #6 SMP Thu Jan 8 15:39:43 EET 2009 i686 Intel® Xeon® CPU E5420 @ 2.50GHz GenuineIntel GNU/Linux

router ~ # iptables --version

iptables v1.4.1.1

 

Share this post


Link to post
Share on other sites

А какая версия пакета ipt_NETFLOW?

 

Кроме того ядро 2.6, а сабж про 2.4. На 2.6 я верю, что собирали успешно.

Share this post


Link to post
Share on other sites

Господа, ну вы же собирали, поделитесь версиями пакетов ipt_NETFLOW?

 

Заранее спасибо.

Share this post


Link to post
Share on other sites

Не думаю, что оно будет работать под 2.4, всё-таки в README сказано, что модуль для ядра 2.6. Насколько я помню нижняя версия совместимого ядра, это что-то около 2.6.16.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this