NAS Integration

В документе описывается создания дополнительного сервера доступа (Network Access Server - NAS) с его собственными правилами авторизации и аккаунтинга.

Базовый модуль авторизации Auth.pm (Abills/mysql/Auth.pm).
Базовый модуль аккаунтинга Acct.pm (Abills/mysql/Acct.pm).

Если у Вас появилась необходимость поменять правила авторизации или аккаунтинга для системы можно просто создать дополнительный NAS и применять к нему Ваши собственные правила авторизации или аккаунтинга.
Для примера создадим новый NAS ppp_test

  • Для начала создадим модуль авторизации:

Abills/mysql/Ppp_test_auth.pm

package Ppp_test_auth;
#Test Auth module

use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK 
  %EXPORT_TAGS $VERSION);

use Exporter;
$VERSION = 2.00;
@ISA = ('Exporter');

@EXPORT_OK = ();
%EXPORT_TAGS = ();

use main;
@ISA  = ("main");

my $db;
my $CONF;
my $debug=0;

  
#****************************************
# Init 
#****************************************
sub new {
  my $class = shift;
  ($db, $CONF) = @_;
  my $self = { };
  bless($self, $class);
  return $self;
}

#****************************************
# Auth function
#
# auth($RAD, $NAS)
#   $RAD - Request Rad pairs
#
#   $NAS - Nas information object
#
# Return $auth_code, Rad_pairs_hash_ref
#   $auth_code 
#       0 - Allow
#       1 - Deny
#****************************************
sub auth {
  my $self = shift;
  my ($RAD, $NAS, $attr)=@_;
  
  #Response Rad pairs 
  my %RAD_PAIRS = (
       'Framed-IP-Address' => '192.168.111.10'
                   );   


  return 0, \%RAD_PAIRS;
}

1  

Модуль аккаунтинга можно взять уже имеющийся в системе и скопировать его в новый файл:

# Abills/mysql/
# cp Acct.pm Ppp_test_acct.pm

Открываем новые файлы и меняем названия пакетов: Ppp_test_acct.pm в первой строке

package Acct;

меняем на

package Ppp_test_acct;
  • После этого добавляем в config.pl

Описание сервера:

$conf{nas_servers} = {
                       'ppp_test' => 'PPP test NAS server'
                      };

Правила авторизации после строки %AUTH = ();

%AUTH = ();
$AUTH{ppp_test} = 'Ppp_test_auth';

Правила аккаунтинга после строки %ACCT = ();

%ACCT = ();
$ACCT{ppp_test} = 'Ppp_test_acct';
  • Все новый NAS сервер создан.

После этого можно вносить любые изменения в Ваши новые модули для авторизации или аккаунтинга.

Сброс сессий

Для сброса сессий нового сервера доступа нужно добавить файл работы с сервером доступа в каталог /usr/abills/libexec/nas. Название файла должно совпадать с названием типа сервера достпа.


Пример файла обработки сброса сессии
ppp_test.pm

#
# Example nas hangup
#

sub hangup_dell {
  my ($NAS, $PORT, $attr) = @_;

  print "Hangup!!!!\n";
  return 0;
}

1