COA: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
 
(Не показано 25 проміжних версій цього користувача)
Рядок 1: Рядок 1:
Модуль Radius Change of Authorization
=== Модуль Change of Authorization ===


COA - это расширение Radius протокола, позволяющее менять параметры сессии подключенного абонента. Без этого расширения невозможно внести какие-либо изменения, например скорость, до того момента, когда клиент сам не обратится к Radius. Например, вы настроили dhcp-сервер, который выдает скорость через радиус-атрибуты. Клиент делает dhcp-запрос и пока не выйдет время срока аренды ip, dhcp-сервер не может изменить скорость, заблокировать доступ и т.д. В случае использования расширения COA это можно сделать. COA позволяет посылать команды от радиус-сервера клиенту.  
COA - это расширение Radius протокола, позволяющее посылать команды на оборудование.


Модуль запускается так:
===Зачем нужен COA?===
 
Стандартно Radius работает в одном направлении - оборудование посылает информацию на Radius-сервер (например, запрос на авторизацию или данные по трафику), тот обращается к NoDeny чтобы авторизовать абонента, зафиксировать трафик, получить данные для установки скорости порта на оборудовании или другие действия.
 
Если же возникает необходимость изменить параметры соединения, например, скорость уже подключенного клиента - зачастую это проблематично по двум причинам:
 
# Оборудование или сервис (dhcp или pppoe) могут устанавливать параметры соединения только в момент подключения клиента;
# Если же они и могут делать это "посредине" работы сессии, то смогут это сделать только во время accounting-пакетов. Т.е чтобы послать команду нам придется ждать такой пакет, а в некоторых случаях, например, с dhcp, это может быть несколько минут.
 
COA позволяет послать radius-атрибуты на оборудование (dhcp/pppoe сервер) ровно в тот момент когда это потребуется.  Ситуация: клиент подключен в данный момент, но произошло подключение нового тарифа, не  хватило денег и учетку автоматически заблокировало - модуль COA сразу же пошлет команду на оборудование (dhcp/pppoe сервер). Это может быть команда урезания скорости, изменения аксесс-группы или иное.
 
===Запуск===


<pre>
<pre>
Рядок 11: Рядок 22:
Предварительно необходимо настроить конфиг  в /usr/local/nodeny/modules/coa/create.cfg.coa.cfg.pm.
Предварительно необходимо настроить конфиг  в /usr/local/nodeny/modules/coa/create.cfg.coa.cfg.pm.


В конфиге в переменных $coa_connect__state_on, $coa_connect__state_off и $coa_disconnect указываются атрибуты, которые посылаются Radius-сервером клиенту в определенных ситуациях:
В переменных $coa_connect__state_on, $coa_connect__state_off и $coa_disconnect указываются атрибуты, которые посылаются Radius-сервером клиенту в определенных ситуациях:
1) В '''$coa_connect__state_on''' атрибуты, которые посылаются когда авторизуется абонент, которому разрешен доступ в интернет
* В '''$coa_connect__state_on''' атрибуты, которые посылаются когда подключен абонент, которому разрешен доступ в интернет
2) В '''$coa_connect__state_off''' атрибуты, которые посылаются когда авторизуется абонент, которому запрещен доступ в интернет
* В '''$coa_connect__state_off''' атрибуты, которые посылаются когда подключен абонент, которому запрещен доступ в интернет
3) В '''$coa_disconnect''' атрибуты, которые посылаются когда абонент отключается (перестает быть авторизованным)
* В '''$coa_disconnect''' атрибуты, которые посылаются когда абонент отключается (перестает быть авторизованным)


Не обязательно использовать все три переменные.
Не обязательно использовать все три переменные.
Рядок 44: Рядок 55:
Тип пакета может быть:
Тип пакета может быть:


'''coa''' - предписывает изменить параметры сессии
* '''coa''' - предписывает изменить параметры сессии
'''disconnect''' - предписывает отключить клиента
* '''disconnect''' - предписывает отключить клиента


Шаблон - это текст с атрибутами в виде:
Шаблон - это текст с атрибутами в виде:
Рядок 55: Рядок 66:
В двойных фигурных скобках можно указать данные конкретного абонента, например:
В двойных фигурных скобках можно указать данные конкретного абонента, например:


{{ip}} - ip адрес
* ip - ip адрес
{{auth_ses}} - имя сессии
* auth_ses - имя сессии
{{speed_in1_kb}} - входящая скорость в килобитах
* speed_in1_kb - входящая скорость в килобитах
{{speed_in1_mb}} -  входящая скорость в мегабитах
* speed_in1_mb -  входящая скорость в мегабитах
 
<br><br>
 
'''Если в параметрах авторизации будет параметр nas''' - coa пакет будет послан на сервер, ip которого берется из nas. В противном случае пакет будет послан на ip, указанный в конфиге.
 
===Пример настройки mpd===
 
В mpd.conf в секцию startup необходимо добавить:
 
<pre>
        set radsrv peer 127.0.0.1 hardpass5
        set radsrv open
</pre>
 
===Пример настройки mikrotik===
 
Внимание: coa в mikrotik работает начиная с версии 6.33
 
<pre>
        /radius incoming set accept=yes
</pre>
 
===Как модуль работает с несколькими NAS-ами===
Если вы настраивали Radius по документации, то в параметры авторизации каждой сессии будет записан параметр nas - сервер, который принял авторизацию. Модули coa/webcoa учитывают это и посылают запросы на этот сервер, а из конфига берется только пароль. Проверить, что этот параметр присутствует, можно в данных учетной записи кликнув по соответствующему ip и в окне найти параметр «дополнительно»:
 
<br>
[[Файл:Webcoa.png]]

Поточна версія на 09:35, 1 липня 2023

Модуль Change of Authorization

COA - это расширение Radius протокола, позволяющее посылать команды на оборудование.

Зачем нужен COA?

Стандартно Radius работает в одном направлении - оборудование посылает информацию на Radius-сервер (например, запрос на авторизацию или данные по трафику), тот обращается к NoDeny чтобы авторизовать абонента, зафиксировать трафик, получить данные для установки скорости порта на оборудовании или другие действия.

Если же возникает необходимость изменить параметры соединения, например, скорость уже подключенного клиента - зачастую это проблематично по двум причинам:

  1. Оборудование или сервис (dhcp или pppoe) могут устанавливать параметры соединения только в момент подключения клиента;
  2. Если же они и могут делать это "посредине" работы сессии, то смогут это сделать только во время accounting-пакетов. Т.е чтобы послать команду нам придется ждать такой пакет, а в некоторых случаях, например, с dhcp, это может быть несколько минут.

COA позволяет послать radius-атрибуты на оборудование (dhcp/pppoe сервер) ровно в тот момент когда это потребуется. Ситуация: клиент подключен в данный момент, но произошло подключение нового тарифа, не хватило денег и учетку автоматически заблокировало - модуль COA сразу же пошлет команду на оборудование (dhcp/pppoe сервер). Это может быть команда урезания скорости, изменения аксесс-группы или иное.

Запуск

perl noserver.pl -v -g=coa.cfg.pm

Предварительно необходимо настроить конфиг в /usr/local/nodeny/modules/coa/create.cfg.coa.cfg.pm.

В переменных $coa_connect__state_on, $coa_connect__state_off и $coa_disconnect указываются атрибуты, которые посылаются Radius-сервером клиенту в определенных ситуациях:

  • В $coa_connect__state_on атрибуты, которые посылаются когда подключен абонент, которому разрешен доступ в интернет
  • В $coa_connect__state_off атрибуты, которые посылаются когда подключен абонент, которому запрещен доступ в интернет
  • В $coa_disconnect атрибуты, которые посылаются когда абонент отключается (перестает быть авторизованным)

Не обязательно использовать все три переменные.

Атрибуты задаются таким образом:

$coa_connect__state_on = {
    type     => тип пакета,
    template => шаблон,
};

Если же необходимо послать несколько команд:

$coa_connect__state_on = [
    {
        type     => тип пакета,
        template => шаблон,
    },
    {
        type     => тип пакета,
        template => шаблон,
    }
];

Тип пакета может быть:

  • coa - предписывает изменить параметры сессии
  • disconnect - предписывает отключить клиента

Шаблон - это текст с атрибутами в виде:

атрибут=значение

В двойных фигурных скобках можно указать данные конкретного абонента, например:

  • ip - ip адрес
  • auth_ses - имя сессии
  • speed_in1_kb - входящая скорость в килобитах
  • speed_in1_mb - входящая скорость в мегабитах



Если в параметрах авторизации будет параметр nas - coa пакет будет послан на сервер, ip которого берется из nas. В противном случае пакет будет послан на ip, указанный в конфиге.

Пример настройки mpd

В mpd.conf в секцию startup необходимо добавить:

        set radsrv peer 127.0.0.1 hardpass5
        set radsrv open

Пример настройки mikrotik

Внимание: coa в mikrotik работает начиная с версии 6.33

        /radius incoming set accept=yes

Как модуль работает с несколькими NAS-ами

Если вы настраивали Radius по документации, то в параметры авторизации каждой сессии будет записан параметр nas - сервер, который принял авторизацию. Модули coa/webcoa учитывают это и посылают запросы на этот сервер, а из конфига берется только пароль. Проверить, что этот параметр присутствует, можно в данных учетной записи кликнув по соответствующему ip и в окне найти параметр «дополнительно»: