Подключение к FREERADIUS. Часть 2

Материал из M-200 WIKI
Перейти к: навигация, поиск

Теперь настроим сам freeradius. Я не ставлю задачи разобраться со всеми возможностями сервера и настраивать буду только самый необходимый минимум, чтобы связка м-200 - freeradius заработала.


Для начала нужно создать подключение для callbuilder. В файл clients.conf добавить:

client m-200 {
       ipaddr  = 127.0.0.1
       secret  = testing123
       nastype = other
}

Думаю очевидно, что пароль calbuider-а и здесь должны совпадать. ipaddr - адрес callbuider-а.

Далее необходимо обеспечить проверку пользователей. Freeradius позволяет делать это разными путями и для начала используем самый простой и "тупой" - через текстовый файл.

В файл radiusd.conf добавляем:

authorize {
   preprocess
   files
}

В файле users создаем пользователя 904:

904 Auth-Type := accept
 h323-credit-time = "h323-credit-time=1000"


  • М-200 не использует пароль для авторизации, так что необходимо указать Auth-Type := accept.
  • h323-credit-time = "h323-credit-time=1000" - это разрешенное время разговора. Передаваться оно должно именно в таком формате (AV Pair).
  • freeradius "съел" запись о пользователе только в таком виде - h323-credit-time на новой стороке и обязательно с пробелом впереди. Наверное это так и надо)

Перезапускаем freeradius, проверяем:

# radtest 904 password 127.0.0.1 0 testing123
Sending Access-Request of id 54 to 127.0.0.1 port 1812
       User-Name = "904"
       User-Password = "password"
       NAS-IP-Address = 127.0.0.1
       NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=54, length=20
#

Если все правильно, то получаем Access-Accept.

Теперь тестовый звонок.

Терминал М-200 (у меня коммутатор и МАЛ, так что 2 терминала):

Коммутатор:

SEIZ EXT<SIP>(904)$
CALL EXT<SIP>(904)$:6157 -> CallAuth_in(770:9)$:6205 [904,407]
SEIZ CallAuth_out(1538:9)$
CALL CallAuth_out(1538:9)$:6206 -> INT_IP(769/14)$:6132 [904,407]
RLSI EXT<SIP>(904)$:CV:16
RLSO CallAuth_in(770:9)$
RLSI CallAuth_out(1538:9)$:CV:16
RLSO INT_IP(769/14)$

МАЛ:

SEIZ INT_IP(772/14)$
CALL INT_IP(772/14)$:779 -> SUB(407/1/8)$:60 [904,407]
RLSI INT_IP(772/14)$:CV:16
RLSO SUB(407/1/8)$

Файл /ATS/TARIF_LOG/callbuilder.log

[03-04-2013 13:24:21] Auth radius pr: send: sid: 1364981061-872532 h323-conf-id=1364981061-872532
[03-04-2013 13:24:21] Auth radius pr: send: sid: 1364981061-872532 904
[03-04-2013 13:24:21] Auth radius pr: send: sid: 1364981061-872532 904
[03-04-2013 13:24:21] Auth radius pr: send: sid: 1364981061-872532 h323-gw-id=904
[03-04-2013 13:24:21] Auth radius pr: send: sid: 1364981061-872532 407
[03-04-2013 13:24:21] Auth radius pr: Auth OK: sid: 1364981061-872532 h323-credit-time=1000
[03-04-2013 13:24:21] Auth radius pr: Auth OK: 904 -> 407 time=1000
[03-04-2013 13:24:21] AuthRadiusPrepayAnswer: unipar len=78 module=127 port_id=6205 credit_time=1000

Если freeradius запускать не демоном, а командой radiusd -X, то можно увидеть, что у него внутри твориться:

rad_recv: Access-Request packet from host 127.0.0.1 port 36070, id=109, length=113
       Service-Type = Login-User
       h323-conf-id = "h323-conf-id=1364981061-872532"
       User-Name = "904"
       Calling-Station-Id = "904"
       h323-gw-id = "h323-gw-id=904"
       Called-Station-Id = "407"
       NAS-Port = 0
       NAS-IP-Address = 127.0.0.1
+- entering group authorize {...}
++[preprocess] returns ok
[files] users: Matched entry 904 at line 24
++[files] returns ok
Found Auth-Type = Accept
Auth-Type = Accept, accepting the user
Login OK: [904/<via Auth-Type = accept>] (from client m-200 port 0 cli 904)
+- entering group post-auth {...}
++[exec] returns noop
Sending Access-Accept of id 109 to 127.0.0.1 port 36070
       h323-credit-time = "h323-credit-time=123"
Finished request 1.
Going to the next request
Waking up in 4.9 seconds.
Cleaning up request 1 ID 109 with timestamp +533
Ready to process requests.

Теперь, чтобы убедиться, что все работает, проверим запрет.

В файле users изменим:

914 Auth-Type := accept
 h323-credit-time = "h323-credit-time=0"

Перезапускаем freeradius, проверяем:

SEIZ EXT<SIP>(904)$
CALL EXT<SIP>(904)$:6157 -> CallAuth_in(770:8)$:6203 [904,407]
RLSI CallAuth_in(770:8)$:CV:21
RLSO EXT<SIP>(904)$

Как видно, вызов от абонента 904 не прошел авторизацию.


Использовать файл users конечно можно, но это как минимум неудобно. Freeradius предлагает разные пути проверки пользователей и мне, например, нравится вариант использования модуля RLM_PERL - это встроенный PERL интерпретатор. Об этом в третьей части.


Настройка авторизации с помощью модуля perl в третей части.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты