Child pages
  • Создание дополнительных типов серверов доступа
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »


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

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

Авторизация


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


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


Abills/mysql/Test_auth.pm
  package Test_auth;
  #Test Auth module

  use strict;
  use parent 'dbcore';
  $VERSION = 7.00;

  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  

Аккаунтинг


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

  # cd Abills/mysql/
  # cp Acct.pm Test_acct.pm

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

  package Acct;

меняем на

  package Test_acct;

Включение новых модулей


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

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

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


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

%AUTH = ();
$AUTH{test_nas} = 'Test_auth';


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

  %ACCT = ();
  $ACCT{test_nas} = 'Test_acct';


Все новый  NAS сервер создан

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

Сброс сессий


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

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


test_nas.pm
#
# Example nas hangup
#

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

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

1

Тестирование RADIUS 


Атворизации


cd /usr/abills/libexec
./radtest.sh auth -rad

результат

Sent Access-Request Id 59 from 0.0.0.0:18393 to 127.0.0.1:1812 length 74
        User-Name = "test"
        User-Password = "123456"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 1
        Message-Authenticator = 0x00
        Cleartext-Password = "123456"
Received Access-Accept Id 59 from 127.0.0.1:1812 to 0.0.0.0:18393 length 69
        Mikrotik-Rate-Limit = "64k"
        Session-Timeout = 1420276
        Mikrotik-Address-List = "CUSTOM_SPEED"
        Acct-Interim-Interval = 90
        Framed-IP-Address = 192.168.1.87


Акаунтинга


cd /usr/abills/libexec
./radtest.sh acct Start -rad


Тестирование с собственным файлом пар авторизации


auth.mikrotik
        Service-Type = Framed-User
        Framed-Protocol = PPP
        NAS-Port = 11
        NAS-Port-Type = Virtual
        User-Name = "test"
        Calling-Station-Id = "192.168.1.2"
        Called-Station-Id = "192.168.1.60"
        CHAP-Challenge = 0x8f9bfc69494cee7d4c96f775e4a8eae6
        CHAP-Password = 0x01d32129dcd05f58901364e1cb200fb47d
        NAS-Identifier = "MikroTik"
        NAS-IP-Address = 192.168.1.60


Запуск команды


./radtest.sh auth -rad -rad_file auth.mikrotik



Проверить получение запроса можно через дебаг радиуса


radiusd -X






  • No labels