Jump to content

Recommended Posts

Posted

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

 

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

Есть машина с ядром 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

 

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

 

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

Posted

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

Posted

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

 

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

Posted

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

 

# 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

 

 

Posted

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

 

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

 

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

Posted

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

 

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

 

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

Posted

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

 

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

Posted
Можно ли как-то заставить 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

Posted

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?

Posted

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

 

  • 2 weeks later...
Posted

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.