Я некоторое время назад выкладывал патч, который реализует (криво) примерно это. Чтоб работало не криво, надо дальше доделывать ISGd.pl, и видимо, ядерный модуль тоже. Короч, делаю именно это, наверно таки сделаю, если никто раньше не сделает :)
lISGd сообщает, что
Service 'TESTSERV2' for '10.128.1.150' finished
при этом
> ./ISG.pl show_services Virtual1
User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags
10.128.1.150 0.0.0.0 Virtual1 5F66DE790FFEE324 0 0 0 1000000 1000000 TESTSERV2 SO
10.128.1.150 0.0.0.0 Virtual1 C10FA709BA5DE6EE 0 0 0 256000 256000 TESTSERV S
Комп просто выключен, уже больше 10 минут точно.
м.б. потому что назначено 2 сервиса на сессию. Правда вторая не была активирована.
Ну наверно так должно быть, но я поставил idle = 60 , max = 600,
и через минуту неактивности картинка, как я привел выше. т.е. сессия не делась никуда, но обнулилась. Надо глубже копнуть, мож баг :)
PS: и после session_max_duration сессия все еще есть.
### Session inactivity default timeout (disconnect session after this time) (in seconds)
$cfg{session_idle_timeout} = 1800;
### Session default maximum duration (end session after this time) (in seconds)
$cfg{session_max_duration} = 86400;
Судя по комментам с сессиями в этих 2 случаях происходят разные вещи. После session_max_duration секунд сессия завершается, т.е. в списке ее больше нет. При не активности session_idle_timeout секунд сессия "disconnect " :)
Не совсем понял от чего, но выглядит это так:
Сессия активна
User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags
10.128.1.150 0.0.0.0 Virtual1 1CC92EF5642C4533 69 420 420 1000000 1000000 TESTSERV2 SOU
Сессия "disconnected"
User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags
10.128.1.150 0.0.0.0 Virtual1 5F66DE790FFEE324 0 0 0 1000000 1000000 TESTSERV2 SO
Впечатление, что она просто стартует заново (новый ид, счетчики по нулям, флаги опять же).
Скорость в Class=, сервис в Cisco-Account-Info = согласно ридми. По крайней мере сервис то должен был показываться.
А в конфиге такой сервис существует?
Существует. Чтоб не быть голословным:
### Begin ``TESTSERV2'' service ###
## Format for download and upload rates: "rate;normal burst" (in bit/s)
## Use zero values (0;0) for no rate limit
$cfg{srv}{TESTSERV2}{download_rate} = "1000000;1500000";
$cfg{srv}{TESTSERV2}{upload_rate} = "1000000;1500000";
## Traffic classes list for this service (as defined in tc.conf file)
$cfg{srv}{TESTSERV2}{traffic_classes} = [ "ALL_OTHER" ];
## Don't send RADIUS accounting for this service (default is to send)
#$cfg{srv}{TESTSERV2}{no_accounting} = 1;
$cfg{srv}{TESTSERV2}{alive_interval} = 120; ## Equals to $cfg{session_alive_interval} if not defined
$cfg{srv}{TESTSERV2}{idle_timeout} = 600; ## Equals to $cfg{session_idle_timeout} if not defined
$cfg{srv}{TESTSERV2}{max_duration} = 10000; ## Equals to $cfg{session_max_duration} if not defined
### End ``TESTSERV2'' service ###
Кроме того ISGd.pl пишет такое:
Session '10.128.1.104' on 'Virtual1' accepted by '192.168.0.3:1812'
Service 'TESTSERV2' for '10.128.1.104' started
А Вы их передавали? :) Они из Radius Accept приходят.
В радиусе есть запись вроде такой:
10.128.1.104 Cleartext-Password := "10.128.1.104"
Auth-Type := Local,
Cisco-Account-Info=ATESTSERV2
Сервис запускаеться для сессии (ISGd.pl об этом сообщает), трафик полисится соответственно заданному сервису. Тока в списке сессий не кажет (
Че-то я недопонимаю видимо.
Собралось, запускаеться, работает.
Непонятно следующее:
> ./ISG.pl
User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags
10.128.1.104 0.0.0.0 Virtual1 BCE2ADC58358E36A 4689 27360 25560 0 0 Undefined A
Почему Rate-in, Rate-out, Service name пустые? Где-то чего-то недонастроено, или это нормально?
Не получается собрать
$ 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/2.6.35-24-generic/build M=/home/eai/lISG-0.11.3-alpha/kernel modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-24-generic'
CC [M] /home/eai/lISG-0.11.3-alpha/kernel/isg_main.o
/home/eai/lISG-0.11.3-alpha/kernel/isg_main.c:806: warning: ‘struct xt_target_param’ declared inside parameter list
/home/eai/lISG-0.11.3-alpha/kernel/isg_main.c:806: warning: its scope is only this definition or declaration, which is probably not what you want
/home/eai/lISG-0.11.3-alpha/kernel/isg_main.c: In function ‘isg_tg’:
/home/eai/lISG-0.11.3-alpha/kernel/isg_main.c:812: error: dereferencing pointer to incomplete type
/home/eai/lISG-0.11.3-alpha/kernel/isg_main.c: At top level:
/home/eai/lISG-0.11.3-alpha/kernel/isg_main.c:960: warning: initialization from incompatible pointer type
make[2]: *** [/home/eai/lISG-0.11.3-alpha/kernel/isg_main.o] Ошибка 1
make[1]: *** [_module_/home/eai/lISG-0.11.3-alpha/kernel] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-24-generic'
make: *** [all] Ошибка 2
система ubuntu 10.10, ядро
$ uname -a
Linux wanderer 2.6.35-24-generic #42-Ubuntu SMP Thu Dec 2 01:41:57 UTC 2010 i686 GNU/Linux
на ubuntu 10.04 (Ядро 2.6.32-26) собралось, хотя и не без напильника
struct xt_target_param в заголовочных файлах ядра 2.6.32 присутствует, а для ядра 2.6.35 нету.
Кто-то уже имеет опыт успешной сборки на ядре 2.6.35?