Поддержка Radius в Asterisk (документ незавершённый)
- Asterisk SVN res_auth
branch
- [FreeRadius] 2.0.5
- radiusclient-ng 0.5.6
Введение
Исторически Radius можно было получить двумя способами:
- через pam_radius module для [FreeRadiu]
- через radiusclient-ng, форк 2003 года Максима Соболева от [FreeRadius] для поддержки SER.
На протяжении последних лет оба проекта развивались параллельно, с перекрестными слияниями кода (merges). Однако, в 2008 годы было решено объединить оба проекта, и прекратить развитие radiusclient-ng. - http://wiki.freeradius.org/Radiusclient
- Актуальную информацию по поддержке Radius в Asterisk можно найти в файле docs/radius.txt пакета Asterisk.
Установка
Необходимо установить 3 компонента:
- Radius сервер (freeradius). Для работы с Asterisk требуется freeradius с модулем Digest
.
- Radius клиента (библиотека radiusclient-ng)
- поддержку в Asterisk
Настройка radiusclient-ng
Конфигурационные файлы:
- /etc/radiusclient-ng/radiusclient.conf, параметры authserver и acctserver
- /etc/radiusclient-ng/servers, сервер и разделяемый пароль.
Настройка [FreeRadius]
- Файл /etc/raddb/clients.conf, описание сервера localhost.
Настройка Asterisk
После установки radius сервера и клиента надо пересобрать asterisk (./configure && make menuconfig).
Authentication
Accounting
Вот такие значения Asterisk передает в Radius сервер:
- "Asterisk-Acc-Code", The account name of detail records
- "Asterisk-Src",
- "Asterisk-Dst",
- "Asterisk-Dst-Ctx", The destination context
- "Asterisk-Clid",
- "Asterisk-Chan", The channel
- "Asterisk-Dst-Chan", (if applicable)
- "Asterisk-Last-App", Last application run on the channel
- "Asterisk-Last-Data", Argument to the last channel
- "Asterisk-Start-Time",
- "Asterisk-Answer-Time",
- "Asterisk-End-Time",
- "Asterisk-Duration", Duration is the whole length that the entire call lasted. ie. call rx'd to hangup "end time" minus "start time"
- "Asterisk-Bill-Sec", The duration that a call was up after other end answered which will be <= to duration "end time" minus "answer time"
- "Asterisk-Disposition", ANSWERED, NO ANSWER, BUSY
- "Asterisk-AMA-Flags", DOCUMENTATION, BILL, IGNORE etc, specified on a per channel basis like accountcode.
- "Asterisk-Unique-ID", Unique call identifier
- "Asterisk-User-Field" User field set via [SetCDRUserField]