Тюнинг RADIUS под некоторые схемы авторизации

Skip to end of metadata
Go to start of metadata

Добавить общий пароль в запрос через файл hints

Необходимость добавить общий пароль в запрос может возникнуть, если у Вас используется авторизация IPoE, но NAS его не передаёт.

В таком случае, сделайте следующее:

  1. За основу возьмите стандартный файл hints
    mkdir -p /app/asr_billing/cfg/etc/raddb/
    cp /app/asr_billing/etc/raddb/hints /app/asr_billing/cfg/etc/raddb/hints
    
  2. Добавьте в конец хинт, который добавит к запросу общий пароль:
    # NAS ESR 1000, ID 1115
    DEFAULT NAS-IP-Address == "172.0.0.1"
            User-Password := "IPoE-COMMON-SECRET" 
    

    Здесь нужно поменять следующие параметры:

    • NAS-IP-Address - IP, который указан в настройках NAS;
    • User-Password - общий пароль, тоже из настроек NAS.
  3. Перезапустите контейнер биллинга
    /app/asr_billing/service restart

В учётных записях абонентов должен быть настроен один из следующих типов авторизации

  • ID=1: по ip static
  • ID=6: любая через RADIUS
  • ID=8: по OPT82
  • ID=9: по ip+radius

Авторизация с опцией "Проверять hwserial(ADSL)"

При этом типе авторизации, абонент получает IP от DHCP-сервера по опции 82. После получения адреса, BRAS отправляет RADIUS-запрос на авторизацию, так же добавляя в запрос данные опции 82.
Серийный номер оборудования должен приходить в атрибуте ADSL-Agent-Circuit-Id. В учётной записи абонента он задаётся в параметре "Серийный номер оборудования".

Чтобы ADSL-Agent-Circuit-Id передавался в биллинг, необходимо модифицировать запросы FreeRADIUS в БД. Это нужно сделать в сервере авторизации и сервере аккаунтинга.
Сделайте следующее:

  1. Подготовьте файл
    mkdir /app/asr_billing/cfg/etc/raddb/sql/firebird/
    touch /app/asr_billing/cfg/etc/raddb/sql/firebird/dialup.conf
    
  2. Установите правильные права
    chmod 640 /app/asr_billing/cfg/etc/raddb/sql/firebird/dialup.conf
    
  3. Скачайте из документации содержимое файла dialup.conf для сервера авторизации
    cd /app/asr_billing/cfg/etc/raddb/sql/firebird/
    curl https://docs.carbonsoft.ru/download/attachments/187433180/dialup-raddb.conf -o dialup.conf
    
  4. Сделайте то же самое для сервера аккаунтинга:
    mkdir /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/
    touch /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
    chmod 640 /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
    cd /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/
    curl https://docs.carbonsoft.ru/download/attachments/187433180/dialup-raddb_acc.conf -o dialup.conf
    
При этом типе авторизации у абонента обязательно должен быть указан SWITCH. При этом PORT указывать необязательно.

Авторизация лишнего пакета через файлы users и hints

Это кейс для оборудования Eltex ESR. Помимо авторизации сессии, BRAS делает дополнительный запрос на авторизацию сервиса. Он передаётся только когда сессия уже создана, и все нужные атрибуты уже переданы на оборудование. Биллинг дополнительный запрос обрабатывать не умеет, поэтому необходим тюнинг RADIUS.

Пример настроек users дан в документации Eltex при авторизации без SoftWLC.

В примере профиль INTERNET пропускает пользователя в интернет, а профиль BYPASS запрещает доступ, на Eltex это названия ACL.

Нужно поправить файл users сервера авторизации и файл hints сервера аккаунтинга:

  1. За основу возьмите стандартный файл users
    mkdir -p /app/asr_billing/cfg/etc/raddb/
    cp /app/asr_billing/etc/raddb/users /app/asr_billing/cfg/etc/raddb/users
    
  2. Добавьте в конец файла users записи для профилей INTERNET и BYPASS:
    INTERNET Cleartext-Password := "IPoE-COMMON-SECRET"
            User-Name = "INTERNET",
            Cisco-AVPair = "subscriber:traffic-class=INTERNET",
            Cisco-AVPair += "subscriber:filter-default-action=permit"
    BYPASS Cleartext-Password := "IPoE-COMMON-SECRET"
            User-Name = "BYPASS",
            Cisco-AVPair = "subscriber:traffic-class=BYPASS",
            Cisco-AVPair += "subscriber:filter-default-action=redirect"
    
    • INTERNET и BYPASS в первой строке профиля - имя профиля (ACL на Eltex), оно будет приходить в запросах аккаунтинга в поле User-Name
    • INTERNET и BYPASS в атрибуте User-Name - тоже должно соответствовать ACL
    • subscriber:traffic-class - должно соответствовать имени ACL
    • Cleartext-Password - общий IPoE пароль. Этот запрос не доходит до биллинга, но для удобства укажите тот же пароль, что в настройках NAS в биллинге
    • subscriber:filter-default-action - оставьте без изменений
  3. Добавьте файл hints, чтобы к запросу добавился атрибут Framed-IP-Address, иначе биллинг отбросит запрос и NAS не завершит создание сессии.
    За основу возьмите стандартный файл hints:
    mkdir -p /app/asr_billing/cfg/etc/raddb_acc/
    cp /app/asr_billing/etc/raddb_acc/hints /app/asr_billing/cfg/etc/raddb_acc/hints
    
  4. Добавьте в конец хинт, который добавит к запросу атрибут Framed-IP-Address:
    # NAS ESR 1000, ID 1115
    INTERNET User-Name == "INTERNET"
            Framed-IP-Address := "0.0.0.0"
    BYPASS User-Name == "BYPASS"
            Framed-IP-Address := "0.0.0.0"
    
  5. Последним шагом, перезапустите контейнер биллинга
    /app/asr_billing/service restart

Accounting-On и Accounting-Off

Оборудование может отправлять пакеты Accounting-On и Accounting-Off при старте и завершении работы NAS. Это реализовано не в каждом телеком устройстве, а для работы биллинга не критично, если их не будет.
Если есть возможность их отключить - отключите.
Если такой возможности нет, необходимо поправить интеграцию RADIUS с БД биллинга, т.к. обработка этих пакетов не реализована в ядре.
Сделайте следующее:

  1. За основу возьмите стандартный файл из конфигурации биллинга:
    mkdir /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/
    /app/asr_billing/skelet/etc/raddb_acc/sql/firebird/dialup.conf
    
  2. Установите правильные права
    chmod 640 /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
    
  3. Откройте файл на редактирование, например редактором vim:
    vim /app/asr_billing/cfg/etc/raddb_acc/sql/firebird/dialup.conf
    
  4. Найдите, описание переменной accounting_onoff_query, по-умолчанию такой текст:
    accounting_onoff_query = "SELECT RESULT FROM RADIUS_ACCT_ONOFF ( \
            '%S', \
            '%{Acct-Terminate-Cause}', \
            '%{Acct-Delay-Time}', \
            '%{NAS-IP-Address}' \
            )"
    
  5. Замените на значение переменной на пустую строку, должно получиться так:
    accounting_onoff_query = ""
    
  6. Сохраните файл, закройте и перезапустите биллинг:
    /app/asr_billing/service restart
    

После этого, в FreeRADIUS будет отправлять пустой ответ за запрос аккаунтинга этих типов. Это корректное поведение, согласно RFC.

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.