Перейти к содержимому
Калькуляторы
В 11.02.2020 в 19:05, junjunk2 сказал:

Репозиторий

Поддерживаются версии ядра до 5.2 включительно (скорее всего и все более новые, просто не проверял)

Восстановил либу для матчера - ее не было в репозитории предыдущего поста

Планирую провести серьезную оптимизацию кода - если кому-то будет интересно.

Простите, а на Debian 10 не работает ?

Попробовал, пишет это: 

gcc -O2 -Wall -Wunused -I/include -DIPTABLES_VERSION=\"1.8.2 (nf_tables)\"  -fPIC -o libipt_ISG_sh.o -c libipt_isg.c
/bin/sh: 1: Syntax error: "(" unexpected
make: *** [Makefile:17: all] Error 2
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

В 02.02.2021 в 20:13, vahe-91 сказал:

Простите, а на Debian 10 не работает ?

Попробовал, пишет это: 

gcc -O2 -Wall -Wunused -I/include -DIPTABLES_VERSION=\"1.8.2 (nf_tables)\"  -fPIC -o libipt_ISG_sh.o -c libipt_isg.c
/bin/sh: 1: Syntax error: "(" unexpected
make: *** [Makefile:17: all] Error 2
 

Нужно править файл Makeconfig после операции ./configure ). Там надо убрать слеши. Мне помогло.

Было так:

IPTABLES_CFLAGS = -I/include -DIPTABLES_VERSION=\"1.8.2 (nf_tables)\"

Должно быть так:

IPTABLES_CFLAGS = -I/include -DIPTABLES_VERSION="1.8.2 (nf_tables)"
Изменено пользователем Jack77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 25.02.2021 в 13:18, Jack77 сказал:

 

Нужно править файл Makeconfig после операции ./configure ). Там надо убрать слеши. Мне помогло.

Было так:


IPTABLES_CFLAGS = -I/include -DIPTABLES_VERSION=\"1.8.2 (nf_tables)\"

Должно быть так:


IPTABLES_CFLAGS = -I/include -DIPTABLES_VERSION="1.8.2 (nf_tables)"
 

Спасибо, помогло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть оригинал, только под ядра по старше правил...  https://github.com/atarget/lisg-original

 

Версии, что выше у меня на генте работают не корректно почемуто - чистиш сессию одну и все - новые не создаются - по этому использую то что есть - хотя я на одной сессии проверял - может если сделать больше и почистить то будет ок....

Изменено пользователем atarget

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По какому идентификатору чистили сессию?

Я проверял функционал чистки сессии - у нас было всё ок.

Ну и было бы неплохо версию ядра указать, на которой воспроизводится

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@junjunk2  Подскажите, не могу собрать на debian 9, вывод по ошибкам такой:

 

Скрытый текст
root@lisg:/usr/src/lisg/kernel# make
echo "" > build.h
printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h
make -C /lib/modules/4.9.0-17-amd64/build M=/usr/src/lisg/kernel modules
make[1]: Entering directory '/usr/src/linux-headers-4.9.0-17-amd64'
  CC [M]  /usr/src/lisg/kernel/isg_main.o
/usr/src/lisg/kernel/isg_main.c: In function ‘isg_find_session’:
/usr/src/lisg/kernel/isg_main.c:771:8: error: implicit declaration of function ‘__test_bit’ [-Werror=implicit-function-declaration]
    if (__test_bit(ISG_IS_SERVICE, &ev->si.sinfo.flags) {
        ^~~~~~~~~~
/usr/src/lisg/kernel/isg_main.c:771:56: error: expected ‘)’ before ‘{’ token
    if (__test_bit(ISG_IS_SERVICE, &ev->si.sinfo.flags) {
                                                        ^
/usr/src/lisg/kernel/isg_main.c:788:3: error: expected expression before ‘}’ token
   }
   ^
cc1: some warnings being treated as errors
/usr/src/linux-headers-4.9.0-17-common/scripts/Makefile.build:312: recipe for target '/usr/src/lisg/kernel/isg_main.o' failed
make[4]: *** [/usr/src/lisg/kernel/isg_main.o] Error 1
/usr/src/linux-headers-4.9.0-17-common/Makefile:1560: recipe for target '_module_/usr/src/lisg/kernel' failed
make[3]: *** [_module_/usr/src/lisg/kernel] Error 2
Makefile:152: recipe for target 'sub-make' failed
make[2]: *** [sub-make] Error 2
Makefile:8: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.9.0-17-amd64'
Makefile:14: recipe for target 'all' failed
make: *** [all] Error 2

 

 

самое интересное, что версия @atarget, тоже не собирается, там немного другие ошибки. 

 

Скрытый текст
root@lisg:/usr/src/lisg-original/kernel# make
echo "" > build.h
printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h
make -C /lib/modules/4.9.0-17-amd64/build M=/usr/src/lisg-original/kernel modules
make[1]: Entering directory '/usr/src/linux-headers-4.9.0-17-amd64'
  CC [M]  /usr/src/lisg-original/kernel/isg_main.o
/usr/src/lisg-original/kernel/isg_main.c: In function ‘isg_send_event’:
/usr/src/lisg-original/kernel/isg_main.c:275:7: error: used union type value where scalar is required
   if (is->start_ktime) {
       ^~
/usr/src/lisg-original/kernel/isg_main.c:276:39: error: invalid operands to binary - (have ‘__kernel_time_t {aka long int}’ and ‘ktime_t {aka union ktime}’)
    ev->sstat.duration = ts_now.tv_sec - is->start_ktime;
                         ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/usr/src/lisg-original/kernel/isg_main.c: In function ‘isg_create_session’:
/usr/src/lisg-original/kernel/isg_main.c:491:18: error: incompatible types when assigning to type ‘ktime_t {aka union ktime}’ from type ‘__kernel_time_t {aka long int}’
  is->start_ktime = ts_now.tv_sec;
                  ^
/usr/src/lisg-original/kernel/isg_main.c: In function ‘isg_start_session’:
/usr/src/lisg-original/kernel/isg_main.c:525:36: error: incompatible types when assigning to type ‘ktime_t {aka union ktime}’ from type ‘__kernel_time_t {aka long int}’
  is->start_ktime = is->last_export = ts_now.tv_sec;
                                    ^
/usr/src/lisg-original/kernel/isg_main.c: In function ‘isg_free_session’:
/usr/src/lisg-original/kernel/isg_main.c:652:19: error: incompatible types when assigning to type ‘ktime_t {aka union ktime}’ from type ‘int’
   is->start_ktime = 0;
                   ^
/usr/src/lisg-original/kernel/isg_main.c: In function ‘isg_session_timeout’:
/usr/src/lisg-original/kernel/isg_main.c:848:21: error: invalid operands to binary - (have ‘__kernel_time_t {aka long int}’ and ‘ktime_t {aka union ktime}’)
   if (ts_now.tv_sec - is->start_ktime >= is->info.max_duration) {
       ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/usr/src/lisg-original/kernel/isg_main.c:856:37: error: invalid operands to binary - (have ‘__kernel_time_t {aka long int}’ and ‘ktime_t {aka union ktime}’)
   is->stat.duration = ts_now.tv_sec - is->start_ktime;
                       ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/usr/src/lisg-original/kernel/isg_main.c:875:56: error: invalid operands to binary - (have ‘__kernel_time_t {aka long int}’ and ‘ktime_t {aka union ktime}’)
   } else if (is->info.export_interval && ts_now.tv_sec - is->last_export >= is->info.export_interval) {
                                          ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/usr/src/lisg-original/kernel/isg_main.c:876:20: error: incompatible types when assigning to type ‘ktime_t {aka union ktime}’ from type ‘__kernel_time_t {aka long int}’
    is->last_export = ts_now.tv_sec;
                    ^
/usr/src/linux-headers-4.9.0-17-common/scripts/Makefile.build:312: recipe for target '/usr/src/lisg-original/kernel/isg_main.o' failed
make[4]: *** [/usr/src/lisg-original/kernel/isg_main.o] Error 1
/usr/src/linux-headers-4.9.0-17-common/Makefile:1560: recipe for target '_module_/usr/src/lisg-original/kernel' failed
make[3]: *** [_module_/usr/src/lisg-original/kernel] Error 2
Makefile:152: recipe for target 'sub-make' failed
make[2]: *** [sub-make] Error 2
Makefile:8: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.9.0-17-amd64'
Makefile:13: recipe for target 'all' failed
make: *** [all] Error 2

 


А если ставить старый оригинал, скаченный еще с bitbucket, он собирается нормально. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@admf исправил код, теперь должно нормально собираться

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 17.02.2022 в 02:37, junjunk2 сказал:

@admf исправил код, теперь должно нормально собираться

Спасибо, все собралось. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

On 2/17/2022 at 4:37 AM, junjunk2 said:

@admf исправил код, теперь должно нормально собираться

хотел узнать у у вас, в вашей ветке применен патч на веб авторизацию (там был как то патчик он неавторизованных складировал в таблицу ipset web_auth)? а также поддерживаются ли колбеки в config.pl?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вот если бы Linux ISG работал с nftables, вместо iptables было бы круто

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Цитата

работал с nftables, вместо iptables было бы круто

почитал маны по nftables И так и не понял зачем туда мигрировать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно реализовать nsg при помощи списков и скриптов. Скрмпты мониторят список и отправляют данные из этого списка в radius. После получения ответа от radius сервера, скрипт удаляет данные из этого списка и добавляет в другой. Вот, как-то так...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

20 часов назад, myth сказал:

почитал маны по nftables И так и не понял зачем туда мигрировать

Есть такое iptables-nft, во всякой случае у маркиза ДеБияна. Тот же синтаксис, только транслируется автоматом в nftables. Правда, ipset такой замены нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это я знаю. Но это не меняет темы вопроса. А зачем? Ну и ipset нет, да

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 минуты назад, myth сказал:

А зачем?

Ну, есть тут на форуме срачик по IPv6, дак в nftables да, удобнее с dual-stack работать. Ну и monitor trace - почти как у сиськи, крутая конкатенация, причем и с действиями, и с протоколами, скриптование через загрузку/выгрузку XML. А вот про производительность, пока выхлопа нет - имплементацию iptables 20 лет точили, там трудно еще что-то выжать, разве что на старте/перестройке таблиц и цепочек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

13 часов назад, maksnik777 сказал:

ну тут не соглашусь

почему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Парни нашел установленный ISG на ядро 4.9.0-4-amd64, но этот лисг патченный под веб авторизацию через ipset, может у меня свежее чем у вас, гляньте, архивец попробую приатачить.

Могу еще точно сказать, что колбеки тут тоже поддерживаются.

Насчет свежести только вот не понятно

sysoleg-lisg-1d05e525c870.tar.xz

 

Попробовал собрать на 11 дебе, резалт.... кто поможет?

 

UPD взял исходнички у @atarget https://github.com/atarget/lisg-original спасибо тебе, я поправил согласно твоим изменениям

В моей версии отличие только в приделанной web авторизации через ipset - можешь глянуть посмотреть в архиве.

root@frr:/usr/src/sysoleg-lisg-1d05e525c870/kernel# make
echo "" > build.h
printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h
make -C /lib/modules/5.10.0-23-amd64/build M=/usr/src/sysoleg-lisg-1d05e525c870/kernel modules
make[1]: Entering directory '/usr/src/linux-headers-5.10.0-23-amd64'
  CC [M]  /usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.o
In file included from /usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:10:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.h:125:2: error: unknown type name ‘time_t’
  125 |  time_t start_ktime;
      |  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.h:126:2: error: unknown type name ‘time_t’
  126 |  time_t last_export;
      |  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_send_event’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:249:18: error: storage size of ‘ts_now’ isn’t known
  249 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:250:2: error: implicit declaration of function ‘ktime_get_ts’; did you mean ‘ktime_get_ns’? [-Werror=implicit-function-declaration]
  250 |  ktime_get_ts(&ts_now);
      |  ^~~~~~~~~~~~
      |  ktime_get_ns
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:249:18: warning: unused variable ‘ts_now’ [-Wunused-variable]
  249 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_apply_service’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:449:3: error: implicit declaration of function ‘setup_timer’; did you mean ‘sk_stop_timer’? [-Werror=implicit-function-declaration]
  449 |   setup_timer(&nis->timer, isg_session_timeout, (unsigned long)nis);
      |   ^~~~~~~~~~~
      |   sk_stop_timer
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_create_session’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:472:18: error: storage size of ‘ts_now’ isn’t known
  472 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:472:18: warning: unused variable ‘ts_now’ [-Wunused-variable]
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_start_session’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:509:18: error: storage size of ‘ts_now’ isn’t known
  509 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:520:21: error: implicit declaration of function ‘timespec_to_ns’; did you mean ‘timespec64_to_ns’? [-Werror=implicit-function-declaration]
  520 |  is->in_last_seen = timespec_to_ns(&ts_now);
      |                     ^~~~~~~~~~~~~~
      |                     timespec64_to_ns
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:509:18: warning: unused variable ‘ts_now’ [-Wunused-variable]
  509 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_session_timeout’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:814:18: error: storage size of ‘ts_now’ isn’t known
  814 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:835:19: error: storage size of ‘ts_ls’ isn’t known
  835 |   struct timespec ts_ls;
      |                   ^~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:847:11: error: implicit declaration of function ‘ns_to_timespec’; did you mean ‘ns_to_timespec64’? [-Werror=implicit-function-declaration]
  847 |   ts_ls = ns_to_timespec(is->in_last_seen);
      |           ^~~~~~~~~~~~~~
      |           ns_to_timespec64
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:835:19: warning: unused variable ‘ts_ls’ [-Wunused-variable]
  835 |   struct timespec ts_ls;
      |                   ^~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:814:18: warning: unused variable ‘ts_now’ [-Wunused-variable]
  814 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_mt’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:899:35: error: ‘struct xt_action_param’ has no member named ‘in’
  899 |  isg_net = isg_pernet(dev_net((par->in != NULL) ? par->in : par->out));
      |                                   ^~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:899:54: error: ‘struct xt_action_param’ has no member named ‘in’
  899 |  isg_net = isg_pernet(dev_net((par->in != NULL) ? par->in : par->out));
      |                                                      ^~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:899:64: error: ‘struct xt_action_param’ has no member named ‘out’
  899 |  isg_net = isg_pernet(dev_net((par->in != NULL) ? par->in : par->out));
      |                                                                ^~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c: In function ‘isg_tg’:
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:952:18: error: storage size of ‘ts_now’ isn’t known
  952 |  struct timespec ts_now;
      |                  ^~~~~~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:967:35: error: ‘const struct xt_action_param’ has no member named ‘in’
  967 |  isg_net = isg_pernet(dev_net((par->in != NULL) ? par->in : par->out));
      |                                   ^~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:967:54: error: ‘const struct xt_action_param’ has no member named ‘in’
  967 |  isg_net = isg_pernet(dev_net((par->in != NULL) ? par->in : par->out));
      |                                                      ^~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:967:64: error: ‘const struct xt_action_param’ has no member named ‘out’
  967 |  isg_net = isg_pernet(dev_net((par->in != NULL) ? par->in : par->out));
      |                                                                ^~
/usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.c:952:18: warning: unused variable ‘ts_now’ [-Wunused-variable]
  952 |  struct timespec ts_now;
      |                  ^~~~~~
cc1: some warnings being treated as errors
make[3]: *** [/usr/src/linux-headers-5.10.0-23-common/scripts/Makefile.build:291: /usr/src/sysoleg-lisg-1d05e525c870/kernel/isg_main.o] Error 1
make[2]: *** [/usr/src/linux-headers-5.10.0-23-common/Makefile:1852: /usr/src/sysoleg-lisg-1d05e525c870/kernel] Error 2
make[1]: *** [/usr/src/linux-headers-5.10.0-23-common/Makefile:192: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.10.0-23-amd64'
make: *** [Makefile:15: all] Error 2

 

Изменено пользователем init_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@junjunk2

debian 11 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux5.10.179-1 (2023-05-12) x86_64 GNU/Linux

lsmod | grep ISG
ipt_ISG                28672  0
x_tables               53248  13 xt_conntrack,iptable_filter,xt_LOG,xt_state,ipt_NETFLOW,xt_nat,ipt_ISG,xt_set,ipt_REJECT,ip_tables,xt_limit,xt_connlimit,iptable_mangle


 cat /proc/net/ip_tables_matches
limit
connlimit
conntrack
conntrack
conntrack
state
isg
set
set
set
set
set
icmp

 make install

make -C /lib/modules/5.10.0-23-amd64/build M=/root/lisg/kernel modules_install
make[1]: вход в каталог «/usr/src/linux-headers-5.10.0-23-amd64»
  INSTALL /root/lisg/kernel/ipt_ISG.ko
  DEPMOD  5.10.0-23-amd64
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[1]: выход из каталога «/usr/src/linux-headers-5.10.0-23-amd64»
/sbin/depmod -a
cp -a libipt_ISG.so /usr/lib/debug/.dwz/x86_64-linux-gnu/iptables.debug
cp -a libipt_isg.so /usr/lib/debug/.dwz/x86_64-linux-gnu/iptables.debug

 


iptables v1.8.7 (legacy): unknown option "--session-init"
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.8.7 (legacy): Couldn't load target `ISG':No such file or directory

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

 

/ISG.pl
Incorrect packet length (196 bytes)
Recv from kernel: Interrupted system call
Unable to get sessions/services list: Interrupted system call

 

 

в чём косяк?

 

 

Изменено пользователем TTPartizan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@TTPartizan

cp -a libipt_ISG.so /usr/lib/debug/.dwz/x86_64-linux-gnu/iptables.debug
cp -a libipt_isg.so /usr/lib/debug/.dwz/x86_64-linux-gnu/iptables.debug

Вот в этом месте косяк, либы не в то место заинсталены, посмотри где либы хранятся и поправь этот путь в исходниках, или в конфигуре укажи это место где либы ipt лежат в системе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@init_

закинул /usr/lib/x86_64-linux-gnu/xtables

iptables увидел.

но

/ISG.pl
Incorrect packet length (196 bytes)
Recv from kernel: Interrupted system call
Unable to get sessions/services list: Interrupted system call

 

ошибка осталась

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Парни, а может кто делал такое в ISG, я не совсем допер, вот если по RADIUS получает абонент reject - у него сессия в X в таблице, что можно запатчить чтоб такой сессии присваивалась скорость? Просто статическая например 1мбит, только той сессии которая неодобрена

Изменено пользователем init_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@junjunk2 

откатил ядро на 5.10.0-12   что было в репах с хеадерами. не помогло.  у человека (через знакомого, самого его не найти кто собирал) на 5.10.0-11 работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@init_@TTPartizan

Ошибки почищены, модуль должен без проблем собираться и работать на ядрах вплоть до 6.1.х

 

Следующие улучшения добавлены:

1. Для матчера в правилах iptables добавлена опция -m isg --active-no-services . Можно использовать в начале цепочки PREROUTING чтобы разрешить трафик без изменений, который не надо по навешанным сервисам отправлять на портал. Например, если вы использовали правило для перенаправления пользователей с отрицательным балансом через присвоенный им сервис REDIRECT:

-A PREROUTING -i iif -p tcp -m tcp --dport 80 -m isg --service-name REDIRECT -j DNAT --to-destination 127.0.0.1

то весь трафик всех абонентов проходил правило сравнения на наличие сервисов. Неоптимально, особенно если есть несколько разных сервисов. Теперь можно сделать

-A PREROUTING -i iif -p tcp -m tcp --dport 80 -m isg --active-no-services -j ACCEPT
-A PREROUTING -i iif -p tcp -m tcp --dport 80 -m isg --service-name REDIRECT -j DNAT --to-destination 127.0.0.1

и основной трафик будет проходить только одно правило, а не проверяться по всем в цепочке.

2. Выведен отдельный каунтер для подсчета сессий, у которых нет аккаунтинга. Обычно это сессии, которые получили Access-Reject и им навесили стандартные сервисы, которые в конфиге. Вывод виден в show_counter

3. Все суммарные каунтеры (которые видны по show_counter) теперь per-cpu - статистика собирается без блокировки сессий

4. spinlock сессии теперь распилен на 2, чтобы шейпер мог считать входящий и исходящий трафик без блокировки. До этого обработка пакета блокировала обработку трафика всей сессии, вне зависимости от направления

5. Шейпер теперь работает с микросекундной точностью, что приводит к меньшим колебаниям скорости у клиентов, но может показывать чуть завышенные значения. Параметры шейпера теперь хранятся в RCU указателе, что позволяет не блокировать сессию на время обновления тарифа.

6. Структуры данных оптимизированы таким образом, чтобы не было split-lock ситауции - ускоряет работу на процессорах с маленьким кэшом. Ну или вообще, если количество сессий огромное.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@junjunk2 Подскажите пожалуйста, не могу собрать на  Debian 11 (bullseye) Kernel: Linux 5.10.0-26-amd64
вывод ошибок:
 

Скрытый текст

root@sh4:/usr/src/lisg/kernel# make
echo "" > build.h
printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h
make -C /lib/modules/5.10.0-26-amd64/build M=/usr/src/lisg/kernel modules
make[1]: вход в каталог «/usr/src/linux-headers-5.10.0-26-amd64»
  CC [M]  /usr/src/lisg/kernel/isg_main.o
/usr/src/lisg/kernel/isg_main.c: In function ‘isg_update_session’:
/usr/src/lisg/kernel/isg_main.c:694:21: error: macro "kfree_rcu" requires 2 arguments, but only 1 given
  694 |   kfree_rcu(old_rate);
      |                     ^
In file included from /usr/src/linux-headers-5.10.0-26-common/include/linux/rbtree.h:22,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/mm_types.h:10,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/mmzone.h:21,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/gfp.h:6,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/umh.h:4,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/kmod.h:9,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/module.h:16,
                 from /usr/src/lisg/kernel/isg_main.h:5,
                 from /usr/src/lisg/kernel/isg_main.c:10:
/usr/src/linux-headers-5.10.0-26-common/include/linux/rcupdate.h:896: note: macro "kfree_rcu" defined here
  896 | #define kfree_rcu(ptr, rhf)      \
      |
/usr/src/lisg/kernel/isg_main.c:694:3: error: ‘kfree_rcu’ undeclared (first use in this function); did you mean ‘kfree_skb’?
  694 |   kfree_rcu(old_rate);
      |   ^~~~~~~~~
      |   kfree_skb
/usr/src/lisg/kernel/isg_main.c:694:3: note: each undeclared identifier is reported only once for each function it appears in
/usr/src/lisg/kernel/isg_main.c: In function ‘isg_session_timeout’:
/usr/src/lisg/kernel/isg_main.c:938:21: error: macro "kfree_rcu" requires 2 arguments, but only 1 given
  938 |   kfree_rcu(is->rate);
      |                     ^
In file included from /usr/src/linux-headers-5.10.0-26-common/include/linux/rbtree.h:22,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/mm_types.h:10,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/mmzone.h:21,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/gfp.h:6,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/umh.h:4,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/kmod.h:9,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/module.h:16,
                 from /usr/src/lisg/kernel/isg_main.h:5,
                 from /usr/src/lisg/kernel/isg_main.c:10:
/usr/src/linux-headers-5.10.0-26-common/include/linux/rcupdate.h:896: note: macro "kfree_rcu" defined here
  896 | #define kfree_rcu(ptr, rhf)      \
      |
/usr/src/lisg/kernel/isg_main.c:938:3: error: ‘kfree_rcu’ undeclared (first use in this function); did you mean ‘kfree_skb’?
  938 |   kfree_rcu(is->rate);
      |   ^~~~~~~~~
      |   kfree_skb
/usr/src/lisg/kernel/isg_main.c: In function ‘isg_cleanup’:
/usr/src/lisg/kernel/isg_main.c:1331:19: error: macro "kfree_rcu" requires 2 arguments, but only 1 given
 1331 |     kfree_rcu(rate);
      |                   ^
In file included from /usr/src/linux-headers-5.10.0-26-common/include/linux/rbtree.h:22,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/mm_types.h:10,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/mmzone.h:21,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/gfp.h:6,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/umh.h:4,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/kmod.h:9,
                 from /usr/src/linux-headers-5.10.0-26-common/include/linux/module.h:16,
                 from /usr/src/lisg/kernel/isg_main.h:5,
                 from /usr/src/lisg/kernel/isg_main.c:10:
/usr/src/linux-headers-5.10.0-26-common/include/linux/rcupdate.h:896: note: macro "kfree_rcu" defined here
  896 | #define kfree_rcu(ptr, rhf)      \
      |
/usr/src/lisg/kernel/isg_main.c:1331:5: error: ‘kfree_rcu’ undeclared (first use in this function); did you mean ‘kfree_skb’?
 1331 |     kfree_rcu(rate);
      |     ^~~~~~~~~
      |     kfree_skb
make[3]: *** [/usr/src/linux-headers-5.10.0-26-common/scripts/Makefile.build:291: /usr/src/lisg/kernel/isg_main.o] Ошибка 1
make[2]: *** [/usr/src/linux-headers-5.10.0-26-common/Makefile:1856: /usr/src/lisg/kernel] Ошибка 2
make[1]: *** [/usr/src/linux-headers-5.10.0-26-common/Makefile:192: __sub-make] Ошибка 2
make[1]: выход из каталога «/usr/src/linux-headers-5.10.0-26-amd64»
make: *** [Makefile:16: all] Ошибка 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.