rlm_perl

argo-uln
Сообщения: 2
Зарегистрирован: Пн июн 15, 2009 1:39 am

Re: rlm_perl

Сообщение argo-uln »

тот что идёт релизах без обновлений
мда, поставил freebsd 7.2 все проги ставил pkg_add

Код: Выделить всё

radiusd -X
FreeRADIUS Version 2.1.4, for host i386-portbld-freebsd7.2, built on Apr 18 2009 at 05:18:58
Copyright (C) 1999-2008 The FreeRADIUS server project and contributors. 
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 
You may redistribute copies of FreeRADIUS under the terms of the 
GNU General Public License v2. 
Starting - reading configuration files ...
including configuration file /usr/local/etc/raddb/radiusd.conf
including configuration file /usr/local/etc/raddb/clients.conf
including dictionary file /usr/local/etc/raddb/dictionary
main {
	prefix = "/usr/local"
	localstatedir = "/var"
	logdir = "/var/log"
	libdir = "/usr/local/lib"
	radacctdir = "/var/log/radacct"
	hostname_lookups = no
	max_request_time = 30
	cleanup_delay = 5
	max_requests = 5242880
	allow_core_dumps = no
	pidfile = "/var/run/radiusd/radiusd.pid"
	checkrad = "/usr/local/sbin/checkrad"
	debug_level = 0
	proxy_requests = no
	log_auth = no
	log_auth_badpass = no
	log_auth_goodpass = no
	log_stripped_names = no
 security {
	max_attributes = 200
	reject_delay = 1
	status_server = no
 }
}
radiusd: #### Loading Realms and Home Servers ####
radiusd: #### Loading Clients ####
 client 127.0.0.1 {
	require_message_authenticator = no
	secret = "127.0.0.1"
	shortname = "radsecret"
 }
radiusd: #### Instantiating modules ####
 instantiate {
 Module: Linked to module rlm_exec
 Module: Instantiating exec
  exec {
	wait = yes
	input_pairs = "request"
	shell_escape = yes
  }
 Module: Linked to module rlm_expr
 Module: Instantiating expr
 }
radiusd: #### Loading Virtual Servers ####
 modules {
 Module: Checking authenticate {...} for more modules to load
 Module: Linked to module rlm_pap
 Module: Instantiating pap
  pap {
	encryption_scheme = "auto"
	auto_header = yes
  }
 Module: Linked to module rlm_chap
 Module: Instantiating chap
 Module: Linked to module rlm_mschap
 Module: Instantiating mschap
  mschap {
	use_mppe = yes
	require_encryption = no
	require_strong = no
	with_ntdomain_hack = no
  }
 Module: Linked to module rlm_perl
 Module: Instantiating perl
  perl {
	module = "/usr/abills/libexec/rlm_perl.pl"
	func_authorize = "authorize"
	func_authenticate = "authenticate"
	func_accounting = "accounting"
	func_preacct = "preacct"
	func_checksimul = "checksimul"
	func_detach = "detach"
	func_xlat = "xlat"
	func_pre_proxy = "pre_proxy"
	func_post_proxy = "post_proxy"
	func_post_auth = "post_auth"
  }
Segmentation fault (core dumped)
что делать ума не приложу

argo-uln
Сообщения: 2
Зарегистрирован: Пн июн 15, 2009 1:39 am

Re: rlm_perl

Сообщение argo-uln »

завелось с freeradius версии 1, копаю дальше :)

mr_gfd
Сообщения: 129
Зарегистрирован: Пт ноя 03, 2006 8:34 am

Re: rlm_perl

Сообщение mr_gfd »

Нда.. долго я что-то обновлял репорт свой. Подтверждаю, связка из FreeBSD-7.2, perl-5.8.9_3 и freeradius-mysql (freeradius-1.1.7_3) - полет отличный.
------------------------
Интернет в Броварах
http://www.brnet.org.ua

chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Re: rlm_perl

Сообщение chtito »

FreeBSD 7.1
perl-5.8.9_3
freeradius-2.1.3

Кто может подтвердить или опровергнуть работоспособность perl 5.8.9 с Абиллс 0.4 + rlm_perl и freeradius-2.x?

tier
Сообщения: 2
Зарегистрирован: Сб авг 22, 2009 6:48 pm

Re: rlm_perl

Сообщение tier »

Не глянул форум, обновил порты...
Радиус стал вылетать с Segmentation fault.
После пересборки перла, радиуса, и всех сопутсвующих модулей радиус ругаеться в лог на rlm_perl, но не вылетает..
естесно ничего не работает.. С перлом 5.10 та же картина :(
Сейчас система:
FreeBSD 6.4
perl-5.8.9_3
freeradius-1.1.7_4

Код: Выделить всё

 radiusd -X
Starting - reading configuration files ...
..........................................................
Module: Loaded perl
 perl: module = "/usr/abills/libexec/rlm_perl.pl"
 perl: func_authorize = "authorize"
 perl: func_authenticate = "authenticate"
 perl: func_accounting = "accounting"
 perl: func_preacct = "preacct"
 perl: func_checksimul = "checksimul"
 perl: func_detach = "detach"
 perl: func_xlat = "xlat"
 perl: func_pre_proxy = "pre_proxy"
 perl: func_post_proxy = "post_proxy"
 perl: func_post_auth = "post_auth"
 perl: perl_flags = "(null)"
 perl: func_start_accounting = "(null)"
 perl: func_stop_accounting = "(null)"
Can't load '/usr/local/lib/perl5/5.8.9/mach/auto/Fcntl/Fcntl.so' for module Fcntl: /usr/local/lib/perl5/5.8.9/mach/auto/Fcntl/Fcntl.so: Undefined symbol "PL_sv_undef" at /usr/local/lib/perl5/5.8.9/mach/XSLoader.pm line 70.
 at /usr/local/lib/perl5/5.8.9/mach/Fcntl.pm line 215
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.8.9/mach/Fcntl.pm line 216.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/mach/POSIX.pm line 21.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.8.9/mach/POSIX.pm line 21.
Compilation failed in require at /usr/local/abills/libexec/config.pl line 171.
BEGIN failed--compilation aborted at /usr/local/abills/libexec/config.pl line 171.
Compilation failed in require at /usr/abills/libexec/rlm_perl.pl line 36.
Module: Instantiated perl (perl)
Module: Loaded preprocess
 preprocess: huntgroups = "/usr/local/etc/raddb/huntgroups"
 preprocess: hints = "/usr/local/etc/raddb/hints"
 preprocess: with_ascend_hack = no
 preprocess: ascend_channels_per_line = 23
 preprocess: with_ntdomain_hack = no
 preprocess: with_specialix_jetstream_hack = no
 preprocess: with_cisco_vsa_hack = no
 preprocess: with_alvarion_vsa_hack = no
Module: Instantiated preprocess (preprocess)
Module: Loaded Acct-Unique-Session-Id
 acct_unique: key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"
Module: Instantiated acct_unique (acct_unique)
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.
rad_recv: Access-Request packet from host 127.0.0.1:63736, id=228, length=62
        User-Name = "boss"
        User-Password = "VBPmwNuU"
        NAS-IP-Address = 255.255.255.255
        NAS-Port = 1
        Framed-Protocol = PPP
  Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
  modcall[authorize]: module "preprocess" returns ok for request 0
  modcall[authorize]: module "mschap" returns noop for request 0
Using perl at 0x80dbbf0
rlm_perl: perl_embed:: module = /usr/abills/libexec/rlm_perl.pl , func = authorize exit status= Undefined subroutine &main::check_time called at /usr/abills/libexec/rlm_perl.pl line 77.
Use of uninitialized value at /usr/abills/libexec/rlm_perl.pl line 36.
  modcall[authorize]: module "perl" returns reject for request 0
modcall: leaving group authorize (returns reject) for request 0
Invalid user: [boss/VBPmwNuU] (from client localhost port 1)
Delaying request 0 for 1 seconds
Finished request 0
Going to the next request
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 228 to 127.0.0.1 port 63736
Waking up in 4 seconds...
--- Walking the entire request list ---
Cleaning up request 0 ID 228 with timestamp 4a904b9d
Nothing to do.  Sleeping until we see a request.
Немного поковырялся в коде, перл ругается при любой попытке использовать модуль POSIX.
Хотя в отдельно написанном скрипте все работает отлично...


Какие варианты кроме даунгреда?

tier
Сообщения: 2
Зарегистрирован: Сб авг 22, 2009 6:48 pm

Re: rlm_perl

Сообщение tier »

Откатился на perl5.8.8, пересобрал радиус из портов, обновил все что надо, не заработало..

Код: Выделить всё

Can't load '/usr/local/lib/perl5/5.8.8/mach/auto/POSIX/POSIX.so' for module POSIX: /usr/local/lib/perl5/5.8.8/mach/auto/POSIX/POSIX.so: Undefined symbol "PL_sig_name" at /usr/local/lib/perl5/5.8.8/mach/XSLoader.pm line 70.
 at /usr/local/lib/perl5/5.8.8/mach/POSIX.pm line 26
Compilation failed in require at /usr/local/abills/libexec/config.pl line 171.
BEGIN failed--compilation aborted at /usr/local/abills/libexec/config.pl line 171.
Compilation failed in require at /usr/abills/libexec/rlm_perl.pl line 36.
Module: Instantiated perl (perl)
Module: Loaded preprocess
Ошибка по сути та же...

НО, собрал радиус из исходников, правда с некоторыми правками, и все заработало!!!
На днях попробую в виртуалбоксе еще покопать с перлом 5.8.9 ...

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: rlm_perl

Сообщение ~AsmodeuS~ »

немного разработчики с карентом намутили для 7.xx

по этому стартует вот так

LD_PRELOAD=/usr/local/lib/perl5/5.10.0/mach/CORE/libperl.so radiusd

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Re: rlm_perl

Сообщение NiTr0 »

Попробовал заюзать rlm_perl на тестовой железке (перл 5.8.8, радиус 2.0.1) - увидел ессно нечто вида

Код: Выделить всё

rlm_perl: ERROR: Failed to create pair FRAMED_PROTOCOL = PPP
rlm_perl: ERROR: Failed to create pair SERVICE_TYPE = Framed-User
rlm_perl: ERROR: Failed to create pair CHAP_CHALLENGE = 0xc15ca3a44ae2e6163628f7e763d38de2478d95a3
rlm_perl: ERROR: Failed to create pair NAS_PORT = 0
rlm_perl: ERROR: Failed to create pair CALLING_STATION_ID = 192.168.255.75
rlm_perl: ERROR: Failed to create pair CHAP_PASSWORD = 0xaeaa5118cff2b2ee48251a666aa0c46b86
rlm_perl: ERROR: Failed to create pair NAS_IDENTIFIER = pptp-nas
rlm_perl: ERROR: Failed to create pair USER_NAME = test
rlm_perl: ERROR: Failed to create pair NAS_IP_ADDRESS = 192.168.255.115
Погуглив и поглядев немного в сорцы радиуса, понял причину ошибок - abills пытается, кхм, надругаться над радиусом, записывая в RAD_REQUEST аттрибуты, чьи имена переконвертированы к верхнему регистру (зачем это делалось - пока для меня загадка), на что радиус ессно матерится - т.к. таких аттрибутов не знает.
Сделал обход этого - создал локальную переменную, с которой уже собссно и работает перл, заполняется она как раз в процессе конвертирования имен аттрибутов, вроде пока проблем не замечено. Вот патч rlm_perl.pl:

Код: Выделить всё

--- rlm_perl.pl.orig    2008-11-12 10:59:23.000000000 +0200
+++ rlm_perl.pl 2009-09-07 22:14:37.000000000 +0300
@@ -10,7 +10,7 @@


 # This is hash wich hold original request from radius
-#my %RAD_REQUEST;
+my %RAD_REQ = ();
 # In this hash you add values that will be returned to NAS.
 #my %RAD_REPLY;
 #This is for check items
@@ -51,19 +51,19 @@
   my $db  = $sql->{db};
   #$rc = $dbh->ping;

-  $RAD_REQUEST{NAS_IDENTIFIER}='' if (! $RAD_REQUEST{NAS_IDENTIFIER});
+  $RAD_REQ{NAS_IDENTIFIER}='' if (! $RAD_REQ{NAS_IDENTIFIER});

-  if (! $NAS_INFO{$RAD_REQUEST{NAS_IP_ADDRESS}.'_'.$RAD_REQUEST{NAS_IDENTIFIER}}) {
+  if (! $NAS_INFO{$RAD_REQ{NAS_IP_ADDRESS}.'_'.$RAD_REQ{NAS_IDENTIFIER}}) {
     $nas = Nas->new($db, \%conf);
-    if (get_nas_info($db, \%RAD_REQUEST) == 0) {
-      $NAS_INFO{$RAD_REQUEST{NAS_IP_ADDRESS}.'_'.$RAD_REQUEST{NAS_IDENTIFIER}}=$nas;
+    if (get_nas_info($db, \%RAD_REQ) == 0) {
+      $NAS_INFO{$RAD_REQ{NAS_IP_ADDRESS}.'_'.$RAD_REQ{NAS_IDENTIFIER}}=$nas;
      }
     else {
        return;
      }
    }
   else {
-       $nas = $NAS_INFO{$RAD_REQUEST{NAS_IP_ADDRESS}.'_'.$RAD_REQUEST{NAS_IDENTIFIER}};
+       $nas = $NAS_INFO{$RAD_REQ{NAS_IP_ADDRESS}.'_'.$RAD_REQ{NAS_IDENTIFIER}};
    }

   return $db;
@@ -81,8 +81,8 @@
   my $db = sql_connect();

   if ( $db ) {
-       if (auth($db, \%RAD_REQUEST, $nas, { pre_auth => 1 }) == 0) {
-      if ( auth($db, \%RAD_REQUEST, $nas) == 0 ) {
+       if (auth($db, \%RAD_REQ, $nas, { pre_auth => 1 }) == 0) {
+      if ( auth($db, \%RAD_REQ, $nas) == 0 ) {
          #$RAD_CHECK{'User-Password'} = 'test12345';
           return RLM_MODULE_OK;
        }
@@ -103,7 +103,7 @@
   my $db = sql_connect();

   if ( $db ) {
-    if ( auth($db, \%RAD_REQUEST, $nas) == 0 ) {
+    if ( auth($db, \%RAD_REQ, $nas) == 0 ) {
        return RLM_MODULE_OK;
      }
    }
@@ -124,7 +124,7 @@

   my $db = sql_connect();
   if ( $db ) {
-     my $ret = acct($db, \%RAD_REQUEST, $nas);
+     my $ret = acct($db, \%RAD_REQ, $nas);
    }

        return RLM_MODULE_OK;
@@ -142,7 +142,7 @@
                $k =~ tr/[a-z]/[A-Z]/;
                $r{$k}=$v;
         }
-  %RAD_REQUEST = %r;
+  %RAD_REQ = %r;
 }


Попутно - заметил еще один нюанс: пары дополнительных радиус-аттрибутов в конфигах насов нужно для rlm_perl указывать без пробелов по обе стороны от "=".

P.S. Попутно возник вопрос о стабильности перла с потоками на данный момент.

newnix
Сообщения: 8
Зарегистрирован: Сб окт 14, 2006 5:01 pm

Re: rlm_perl - РЕШЕНО

Сообщение newnix »

Perl 5.8.9, freeradius 2.1.4 LD_LOAD не помог, патч не помог, при подключении модуля перла продолжает сегфолтиться.
Обновил Perl до 5.10.0 Freeradius 2.1.6 Работает, но не авторизуется, в логе радиуса:

Код: Выделить всё

Use of uninitialized value $RAD_REQ{"NAS_IP_ADDRESS"} in concatenation (.) or string at /usr/abills/libexec/rlm_perl.pl line 56.
Use of uninitialized value in concatenation (.) or string at /usr/local/abills/libexec/rauth.pl line 62.
Use of uninitialized value in concatenation (.) or string at /usr/local/abills/libexec/rauth.pl line 62.
...
Use of uninitialized value $USER_NAME in concatenation (.) or string at /usr/local/abills/libexec/rauth.pl line 62.
Use of uninitialized value in concatenation (.) or string at /usr/local/abills/libexec/rauth.pl line 62.
Use of uninitialized value in concatenation (.) or string at /usr/local/abills/libexec/rauth.pl line 62.
со всеми вытекающими

Код: Выделить всё

Debug: rlm_perl: Added pair Reply-Message = Unknow server ''


Это я что-то напорол? Насколько я понимаю NAS_IP_ADDRESS и USER_NAME должен отправлять mpd5, но всё что ото него приходит:

Код: Выделить всё

        NAS-Identifier = "sevcity_bil"
        Acct-Session-Id = "2480424-L-1"
        mpd-table-static = "\000\000\000\001"
        NAS-Port-Type = Virtual
        mpd-filter = "\000\000\000\002"
        mpd-limit = "\000\000\000\001"
        mpd-Attr-12 = 0x4c2d31
        Tunnel-Type:0 = PPTP
        Tunnel-Medium-Type:0 = IPv4
        Tunnel-Server-Endpoint:0 = "172.24.0.8"
        Tunnel-Client-Endpoint:0 = "172.25.144.182"
        Tunnel-Server-Auth-Id:0 = "sevcity_bil"
        mpd-rule = "ЛОГИН"
        MS-CHAP-Challenge = 0xbb1e68fea83c1ec1188a154d04879875
        MS-CHAP2-Response = 0x0100f4a07b916fcc343129110d0930b607690000000000000000ed1d349097984a97540887a2f7a70991a59d6cf3fb0bf7bd

Проблема не в mpd - radtest вылетает с аналогичными сообщениями.
-----------------------------------------
Разобрался. Проблема была в изменении формата словарей фрирадиуса - в новой версии вместо указания VENDOR`a в конце каждого объявления параметров делается открывающая-закрывающая последовательность begin vendor - end vendor. Причем в мане об этом ничего не сказано и поддержка старого форматирования убрана.
Последний раз редактировалось newnix Пн сен 14, 2009 4:45 pm, всего редактировалось 5 раз.

Radist
Сообщения: 79
Зарегистрирован: Вт июл 28, 2009 3:22 am

Re: rlm_perl

Сообщение Radist »

фря 6,3
обновленные порты
радиус 1,7
пппое
перл 5.8.9_3
не запускается :(
без него нормально....

lasik
Сообщения: 983
Зарегистрирован: Чт янв 10, 2008 5:20 pm
Откуда: Россия, Москва

Re: rlm_perl

Сообщение lasik »

перл 5.8.9_3 - это твоя проблема

В понедельник приеду, решим

savago
Сообщения: 34
Зарегистрирован: Чт ноя 16, 2006 11:05 pm
Откуда: България
Контактная информация:

Re: rlm_perl

Сообщение savago »

uname -isr
FreeBSD 6.4-RELEASE-p5 SMP-GENERIC
radiusd -X

Код: Выделить всё

Can't load '/usr/local/lib/perl5/5.10.1/mach/auto/Fcntl/Fcntl.so' for module Fcntl: /usr/local/lib/perl5/5.10.1/mach/auto/Fcntl/Fcntl.so: Undefined symbol "PL_markstack_ptr" at /usr/local/lib/perl5/5.10.1/mach/XSLoader.pm line 70.
 at /usr/local/lib/perl5/5.10.1/mach/Fcntl.pm line 215
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.10.1/mach/Fcntl.pm line 216.
Compilation failed in require at /usr/local/lib/perl5/5.10.1/mach/POSIX.pm line 19.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.10.1/mach/POSIX.pm line 19.
Compilation failed in require at /usr/abills/libexec/config.pl line 149.
BEGIN failed--compilation aborted at /usr/abills/libexec/config.pl line 149.
Compilation failed in require at /usr/abills/libexec/rlm_perl.pl line 36.
radius.log

Код: Выделить всё

Sun Sep 13 19:46:12 2009 : Error: rlm_perl: perl_embed:: module = /usr/abills/libexec/rlm_perl.pl , func = authorize exit status= Undefined subroutine &main::check_time called at /usr/abills/libexec/rlm_perl.pl line 77.
uname -isr
FreeBSD 7.2-RELEASE-p3
radiusd -x
Can't load '/usr/local/lib/perl5/5.10.0/mach/auto/Fcntl/Fcntl.so' for module Fcntl: /usr/local/lib/perl5/5.10.0/mach/auto/Fcntl/Fcntl.so: Undefined symbol "PL_markstack_ptr" at /usr/local/lib/perl5/5.10.0/mach/XSLoader.pm line 64.
at /usr/local/lib/perl5/5.10.0/mach/Fcntl.pm line 215
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.10.0/mach/Fcntl.pm line 216.
Compilation failed in require at /usr/local/lib/perl5/5.10.0/mach/POSIX.pm line 18.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.10.0/mach/POSIX.pm line 18.
Compilation failed in require at /usr/local/abills/libexec/config.pl line 181.
BEGIN failed--compilation aborted at /usr/local/abills/libexec/config.pl line 181.
Compilation failed in require at /usr/abills/libexec/rlm_perl.pl line 36.

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Re: rlm_perl

Сообщение NiTr0 »

Итак, rlm_perl в работе. Нагрузка на сервер не менялась :)
Вложения
graph_image.png
graph_image.png (46.57 КБ) 20092 просмотра

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Re: rlm_perl

Сообщение sopov »

Не совсем понял куда смотреть - если на резкий спад после 16:00, то так и должно быть. А если на весь график, то какие-то user-level процессы конкретно нагружают сервер - совсем не есть гуд и так быть не должно. У меня на биллинге нагрузка выше 10% никогда не поднималась.

kaats
Сообщения: 99
Зарегистрирован: Пн ноя 19, 2007 8:43 pm
Контактная информация:

Re: rlm_perl

Сообщение kaats »

Картинка, предоставленная NiTr0, очень похожа на графики, которые рисует Cacti.
А там нужно процент загрузки делить на кол-во ядер процессора (или процессоров).

так или иначе - действительно не понятно на какое время смотреть и с чем сравнивать.

Ответить