Table of Contents | ||
---|---|---|
|
Настройка RADIUS–сервера
Схема взаимодействия
Wiki Markup |
---|
{graphviz} digraph G { graph [style=filled] node [style=filled shape=box style=rounded color=black fillcolor=white] edge [dir=both color="green:blue"] rankdir=LR "Оборудование\nабонента" -> "MPD" [label="PPP"] "MPD" -> "Сервер FreeRADIUS" [label = "RADIUS"] "Сервер FreeRADIUS" -> "Модуль hard.pm" [label="Perl"] "Модуль hard.pm" -> "Агент HARD" [label="HTTP"] "Агент HARD" -> "Ядро АСР Гидра" [style=dashed] "Агент HARD" -> "Кэш MongoDB" } {graphviz} |
Зелёным цветом на данной диаграмме обозначена передача на обработку запроса, а синим — ответа на запрос. Во время отсутствия связи между агентом HARD и ядром
ais_name |
---|
Предварительные требования
На сервере должен быть установлен интерпретатор perl версии 5.10 и старше.
Note title Внимание! Убедитесь, что интерпретатор perl, имеющийся в системе, скомпилирован с поддержкой многопоточности:
Code Block language bash user@server:~$ perl -V | grep USE_ITHREADS USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
В противном случае при большой интенсивности запросов возникнут проблемы с производительностью RADIUS–сервера.
- На сервере должен быть подключён репозиторий компании Латера (
deb.hydra-billing.com
). Данный репозиторий подключается сотрудниками компании Латера в рамках технической поддержки.
Установка и настройка сервера FreeRADIUS
Установка
Общее руководство по установке сервера FreeRADIUS доступно в виде отдельной статьи «Установка и настройка сервера FreeRADIUS». В случае установки FreeRADIUS на новый сервер достаточно выполнить следующее:
Обновить список пакетов, убедившись в отсутствии ошибок соединения с репозиторием компании Латера (
deb.hydra-billing.com
):Code Block language bash user@server:~$ sudo aptitude update
Установить сервер FreeRADIUS из пакета
freeradius
и утилиты для работы с ним из пакетаfreeradius-utils
:Code Block language bash user@server:~$ sudo aptitude install freeradius freeradius-utils
Настройка
Для настройки сервера FreeRADIUS, установленного из репозитория компании Латера достаточно указать параметры подключения к агенту HARD и код сетевой RADIUS–службы в Гидре.
Откройте в текстовом редакторе файл
/etc/freeradius/hard.pm
:Code Block language bash user@server:~$ sudo nano /etc/freeradius/hard.pm
В районе строки №45 файла проверьте и, при необходимости, скорректируйте параметры подключения к агенту HARD:
Anchor hard.pm_AUTH_PASSWORD hard.pm_AUTH_PASSWORD Code Block title Файл /etc/freeradius/hard.pm my @HARD_API_URLS = ( # Пул API URL для запросов "http://localhost:11080/base/mpd", ); use constant HARD_AUTH_USER => "hydra"; # Логин use constant HARD_AUTH_PASSWORD => "q123"; # Пароль
Рекомендуем изменить пароль по умолчанию
q123
на более сложный. Логин и пул API URL для запросов и можно оставить стандартные. При большом количестве обслуживаемых абонентов в этот пул можно добавить дополнительные экземпляры агента HARD, предварительно включив их в конфигурации агента.Ниже, в районе строки №52 того же файла проверьте код сетевой RADIUS–службы в Гидре, которая будет соответствовать данному RADIUS–серверу:
Anchor hard.pm_AAA_SERV_CODE hard.pm_AAA_SERV_CODE Code Block title Файл /etc/freeradius/hard.pm # Код сетевой службы RADIUS в АСР use constant HYDRA_AAA_SERV => "RADIUS-VPN";
Если служба RADIUS-VPN ещё не используется в Гидре, можно оставить её. В противном случае, замените код по умолчанию RADIUS-VPN на, например, RADIUS-MPD.
- Сохраните файл и закройте текстовый редактор.
В файлAnchor RADIUS-Clients RADIUS-Clients /etc/freeradius/clients.conf
добавьте IP–адреса всех серверов MPD, которые будут взаимодействовать с данным RADIUS–сервером. Примеры приведены в самом файле, в простейшем случае запись выглядит так:Code Block title Файл /etc/freeradius/clients.conf client mpd-test { ipaddr = <MPD_IP-address> secret = <RADIUS_Secret> }
<MPD_IP-address>
— IP–адрес сервера MPD,<RADIUS_Secret>
— кодовое слово, используемое в протоколе RADIUS для аутентификации всех сообщений, принимаемых и отправляемых RADIUS–сервером.
Для удобства тестирования в файле по умолчанию присутствует запись с локальным IP–адресом 127.0.0.1 и кодовым словом testing123 — проверьте её наличие.
Для применения изменений в настройках перезапустите FreeRADIUS:
Code Block language bash user@server:~$ sudo /etc/init.d/freeradius restart
Установка и настройка агента HARD
Установка
Общее руководство по установке агента HARD доступно в виде отдельной статьи «Установка агента HARD». В случае установки агента на новый сервер достаточно выполнить следующее:
Обновить список пакетов, убедившись в отсутствии ошибок соединения с репозиторием компании Латера (
deb.hydra-billing.com
):Code Block language bash user@server:~$ sudo aptitude update
Установить агент HARD из пакета
hard
:Code Block language bash user@server:~$ sudo aptitude install hard=<hard_version>
<hard_version>
— версия агента HARD, совместимая с установленной у вас версией ядра Гидры. Актуальную информацию о совместимости версий вы можете получить, обратившись в техническую поддержку компании Латера.
Настройка
Общие принципы настройки агента HARD описаны в разделе «Настройка агента HARD». Для настройки взаимодействия с MPD необходимо выполнить следующие действия:
Отредактируйте файл конфигурации
/etc/hydra/hard/default.yml
, приведя его содержимое в соответствие с примером.Code Block title Файл /etc/hydra/hard/default.yml linenumbers true # Список активных плагинов enabled_plugins: [base/mpd] log: common: # Уровень лог-сообщений level: <hard_log_level> connection_pools: # Настройки подключения к Oracle database: main: # Название name: <db_name> # Пароль пользователя password: <AIS_RADIUS_password> filters: agent.basic_auth: main: login: <hard_login> password: <hard_password>
Замените использованные в примере подстановки желаемыми значениями:
<hard_log_level>
— уровень логирования агента HARD: для тестирования рекомендуем использоватьdebug
, а для промышленной эксплуатации —info
.<db_name>
— наименование базы данных ядра Гидры, с которой будет работать агент. Наименование базы данных в приложении «Офис оператора связи» указано рядом с именем текущего пользователя:<AIS_RADIUS_password>
— пароль пользователя AIS_RADIUS базы данных<db_name>
.<hard_login>
— логин для авторизации модуляhard.pm
сервера FreeRADIUS, ранее указанный в файле/etc/freeradius/hard.pm
, в параметреHARD_AUTH_USER
.<hard_password>
— пароль для авторизации модуляhard.pm
сервера FreeRADIUS, ранее указанный в файле/etc/freeradius/hard.pm
, в параметреHARD_AUTH_PASSWORD
.
Отредактируйте файл конфигурации
/etc/hydra/hard/plugins/base.yml
, приведя его содержимое в соответствие с примером. Если директорииplugins
в/etc/hydra/hard
не существует, создайте её.Code Block title Файл /etc/hydra/hard/plugins/base.yml linenumbers true plugins: base: mpd: # Параметры авторизации auth: # Схема авторизации method: login user: # Атрибут, содержащий данные авторизации name: User-Name # Параметры сохранения CDR cdr: # Атрибут, сохраняемый в комментарий CDR comment_attr: Tunnel-Client-Endpoint # Атрибут, сохраняемый в качестве адреса абонента в CDR user_station_address_attr: Framed-IP-Address
Согласно настройкам, приведённым в данном примере, подбор абонента будет выполняться по логину, содержащемуся в атрибуте User-Name. При желании, можно изменить наименования атрибутов, значения которых будут записываться в поля «Комментарий» и «Адрес инициатора» CDR. Можно вовсе отключить заполнение этих полей, убрав из конфигурации строки 11–16.
Для применения изменений в настройках перезапустите агент HARD:
Code Block language bash user@server:~$ sudo /etc/init.d/hard restart
Настройка
ais_name |
---|
Описание схемы учёта
Для определения наборов RADIUS–атрибутов и их значений, а также указания используемых при авторизации услуг доступа используется RADIUS–служба. А для задания параметров аутентификации, учёта сеансов работы абонента путём хранения CDR–записей, настройки параметров обработки CDR–записей, тарификации потоковых услуг передачи данных на основании поступающей через RADIUS–Accounting информации используется абонентская сетевая служба.
Компоненты абонентской сетевой службы выступают в роли абонентского оборудования, на котором оказываются услуги. А подписка абонента на эту службу через абонентское оборудование используется для хранения данных аутентификации абонента: логина и пароля. Связь между RADIUS–службой и абонентской службой настраивается для каждого из MPD–серверов, обслуживающих абонентов, с указанием его IP–адреса.
Создание и настройка RADIUS–службы
Anchor | ||||
---|---|---|---|---|
|
- В приложении «Офис оператора связи» откройте реестр сетевых служб (меню «Справочники», пункт «Сетевые службы») и в поле «Тип» укажите «RADIUS-сервер»:
В результатах поиска будут представлены все существующие на данный момент RADIUS–службы. Если среди них есть служба с кодом «RADIUS-VPN», и она не используется для взаимодействия с другим вашим оборудованием, используйте для дальнейших настроек её. Если же служба с кодом «RADIUS-VPN» уже используется, создайте новую службу, нажав в реестре сетевых служб на кнопку «Добавить» и указав в качестве типа службы «RADIUS-сервер», а в качестве кода, например, «RADIUS-MPD ».
Note Код используемой RADIUS–службы должен совпадать с кодом, указанным ранее в файле
/etc/freeradius/hard.pm
На форме редактирования выбранной RADIUS–службы, в разделе «Access Reply» задайте пары RADIUS–атрибутов и их значений, которые будут отправлены в RADIUS–пакете Access–Accept при успешной авторизации. Рекомендуемый набор атрибутов и значений представлен в виде таблицы ниже. При необходимости вы можете изменить предложенные в таблице значения атрибутов, или добавить дополнительные атрибуты, которые должны быть переданы в случае успешной авторизации.
№ Атрибут Оператор Значение Описание 1 Framed-IP-Address := $TERM_IP_ADDR IP–адрес, который будет назначен абоненту.
Подстановка$TERM_IP_ADDR
возвращает IP–адрес, привязанный к абонентскому оборудованию в Гидре.2 Session-Timeout := 86400 Максимальная продолжительность сессии абонента, указываемая в секундах. 3 Acct-Interim-Interval := 1200 Интервал отправки пакетов Interim–Update, указываемый в секундах. 4 mpd-limit := out#1=all shape $SPEED_LIMIT["GOOD":"40213701","UNIT":"UNIT_BitSec"] pass Ограничение скорости входящего трафика для абонента.
Подстановка
$SPEED_LIMIT
возвращает ограничение скорости, указанное в приказе по ценам для услуги с заданным идентификатором:- 40213701 — стандартный идентификатор для услуги «Интернет-трафик вх.»
- UNIT_BitSec — код единицы измерения «бит/с» из базового справочника «Единицы измерения скорости передачи данных»
5 mpd-limit += in#1=all shape $SPEED_LIMIT["GOOD":"40213501","UNIT":"UNIT_BitSec"] pass Ограничение скорости исходящего трафика для абонента.
Подстановка
$SPEED_LIMIT
возвращает ограничение скорости, указанное в приказе по ценам для услуги с заданным идентификатором:- 40213501 — стандартный идентификатор для услуги «Интернет-трафик исх.»
- UNIT_BitSec — код единицы измерения «бит/с» из базового справочника «Единицы измерения скорости передачи данных»
Для проверки пароля и ограничения количества одновременных сессий необходимо в разделе «Access Request» добавить следующие атрибуты:
№ Атрибут Оператор Значение Описание 1 Cleartext-Password := $USER_PASSWORD Подстановка $USER_PASSWORD
возвращает пароль из подписки аутентифицируемого абонента на абонентскую сетевую службу2 Simultaneous-Use := 1 Максимально допустимое количество одновременных сессий одного абонента.
В разделе «Привязанные услуги» необходимо добавить услуги доступа, состояние которых определяет возможность использования абонентом данной службы. Обычно используется одна услуга доступа «Доступ в Интернет». Если же услуг доступа несколько, для успешной авторизации достаточно включённости хотя бы одной из них.Anchor Access-Service Access-Service - Проверьте правильность введённых данных и сохраните службу. Пример заполненной формы редактирования сетевой службы «RADIUS-VPN»:
Создание и настройка абонентской сетевой службы
- В приложении «Офис оператора связи» откройте реестр сетевых служб (меню «Справочники», пункт «Сетевые службы») и в поле «Тип» укажите «Системные службы»:
В результатах поиска будут представлены все существующие на данный момент сетевые службы. Если среди них есть служба с кодом «VPN» и типом «VPN-концентратор», и она не используется для взаимодействия с другим вашим оборудованием, используйте для дальнейших настроек её. Если же служба с кодом «VPN» и типом «VPN-концентратор» уже используется, создайте новую службу, выполнив следующее:
- Перейдите в раздел Справочники → Номенклатура → Сетевые службы → Системные службы и создайте новую номенклатурную позицию, аналогичную уже существующей «VPN-концентратор». Особое внимание стоит обратить на флаг «Может быть объектом» — он должен быть установлен для того, чтобы в дальнейшем можно было на основе этой позиции создать сетевую службу. Пример новой номенклатурной позиции для абонентской сетевой службы:
- Перейдите в раздел Справочники → Сетевые службы и создайте новую сетевую службу, указав в поле «Тип» созданную на предыдущем шаге номенклатурную позицию.
- Перейдите в раздел Справочники → Номенклатура → Сетевые службы → Системные службы и создайте новую номенклатурную позицию, аналогичную уже существующей «VPN-концентратор». Особое внимание стоит обратить на флаг «Может быть объектом» — он должен быть установлен для того, чтобы в дальнейшем можно было на основе этой позиции создать сетевую службу. Пример новой номенклатурной позиции для абонентской сетевой службы:
- На форме редактирования абонентской сетевой службы (стандартной «VPN» или же созданной вами на этапе №2) укажите следующие параметры аутентификации:
Anchor Authentication-Settings Authentication-Settings - «Вид аутентификации» — «Требовать логин и пароль»,
- «Минимальное значение стойкости пароля» — на ваше усмотрение: будет учитываться при подписке абонента на службу,
- «Источник логина по умолчанию» — на ваше усмотрение: если в подписке абонента на службу логин не указан, в качестве него будет использоваться либо код владельца оборудования (т.е. абонента), либо код самого оборудования (компонента данной службы),
- «Чувствительность логина к регистру» — если данный флаг установлен, проверка логина при авторизации выполняется с учётом регистра.
- В разделе «Адреса» добавьте IP–адреса всех серверов MPD, обслуживающих абонентов.
В разделе «Настройка управления службой» для каждого из IP–адресов серверов MPD добавьте строку, заполнив в ней следующие поля:
Менеджер/СлужбаТипИнтерфейс Код RADIUS–службы, настроенной на предыдущем этапе RADIUS secret IP–адрес MPD–сервера, ранее добавленный в раздел «Адреса» В разделе «Дополнительные параметры» укажите значения следующих параметров:
Параметр Тип Рекомендуемое значение Описание Создавать задание по тарификации внешней статистики по услугам Флаг Установлен При сохранении службы в активном состоянии будет создано задание «Получение текущей статистики коллектора данных Код_сетевой_службы».
Данное задание будет тарифицировать потоковые услуги передачи данных на основании информации, полученной в пакетах аккаунтинга.
Таймаут принудительного закрытия CDR (в часах) Число 0.5
(1.5–2.5 интервала аккаунтинга)При сохранении службы в активном состоянии будет создано задание «Принудительное закрытие старых CDR Код_сетевой_службы».
Задание переводит в состояние «Завершена принудительно» все CDR, по которым за указанное времея не пришло Interim–Update или Stop–пакета. В дальнейшем, если пакет по сессии придёт, принудительно закрытая CDR может быть восстановлена.Таймаут удаления старых CDR (в днях) Число 365 При сохранении службы в активном состоянии будет создано задание «Удаление старых CDR Код_сетевой_службы».
Задание удаляет из базы данных завершённые CDR, с момента последней операции над которыми прошло больше указанного количества дней. Данная операция необходима для предотвращения разрастания БД.
Проверьте правильность введённых данных и сохраните службу. Пример заполненной формы редактирования сетевой службы «VPN»:
- Откройте вкладку «Список заданий» и разблокируйте нажатием на кнопки–замки все задания, созданные при сохранении службы:
- Получение текущей статистики коллектора данных,
- Принудительное закрытие старых CDR,
- Удаление старых CDR.
- Убедитесь, что все задания работают:
Создание абонентского оборудования и подписки на службу
В качестве абонентского оборудования будут использоваться компоненты настроенное на предыдущем этапе абонентской сетевой службы.
- На форме редактирования абонента, в разделе «Оборудование» нажмите кнопку «Добавить оборудование» — откроется форма «Оборудование абонента: создание».
- Выберите режим «Добавление компонента».
- В поле «Сетевая служба» укажите абонентскую сетевую службу, настроенную ранее: стандартную «VPN», или созданную вами.
- Убедитесь, что в поле «Тип компонента» указана спецификация «Порт».
- Если необходимо, укажите код и наименование создаваемого компонента в соответствующих полях формы. Код должен быть уникален в разрезе службы. Если оставить эти поля пустыми, значения будут сгенерированы автоматически согласно настройкам системы.
- В поле «» выберите «IP-адрес».
- Укажите IP–адрес и подсеть в одноимённых полях формы. Если поле «IP-адрес» оставить пустым, адрес будет выбран автоматически из указанной подсети.
- Проверьте правильность введённых данных и нажмите кнопку «Добавить». Пример заполненной формы добавления компонента сетевой службы «VPN»:
- После добавления компонента, он должен появится в разделе «Оборудование» формы редактирования абонента:
Перейдите на вкладку «Службы» и в разделе «Подписка на службы» нажмите кнопку «Добавить» и заполните следующие поля:
Наименование поля Значение Служба Абонентская сетевая служба: стандартная VPN, или созданная вами. Оборудование Компонент абонентской сетевой службы, созданный на предыдущем шаге. Логин Логин абонента. Логин должен быть уникален в разрезе сетевой службы.
Если оставить поле пустым, в качестве логина будет использоваться, в зависимости от параметров аутентификации, код абонента или код компонента, указанного в поле «Оборудование».Пароль Пароль абонента. - Проверьте введённые данные и нажмите кнопку «Сохранить». Пример вкладки «Службы» с оформленной подпиской:
- Оформите подписку абонента на пакет услуг, содержащий указанную в настройках RADIUS-службы услугу доступа, выбрав в качестве оборудования созданный ранее компонент абонентской сетевой службы, и выставьте по этой подписке инвойс. Проверьте на вкладке услуги формы редактирования абонента, что услуга доступа включена:
Тестирование RADIUS–взаимодействия без использования MPD
Тестирование авторизации с помощью radtest
Утилита radtest позволяет выполнить попытку авторизации с переданными ей логином и паролем на указанном RADIUS–сервере, отображая при этом как атрибуты запроса, так и атрибуты ответа.
Параметры вызова
Code Block | ||||
---|---|---|---|---|
| ||||
user@server:~$ sudo radtest '<user-name>' '<user-password>' <RADIUS-Server_IP> <NAS-Port-Number> '<RADIUS_Secret>' |
<user-name>
— логин абонента, указанный ранее в параметрах подписки на службу<user-password>
— пароль абонента, указанный ранее в параметрах подписки на службу<RADIUS-Server_IP>
— IP–адрес сервера FreeRADIUS<NAS-Port-Number>
— число от 0 до 231, которое будет передано в атрибутеNAS-Port
<RADIUS_Secret>
— кодовое слово, указанное для данного клиента ранее в файле/etc/freeradius/clients.conf
Пример успешной авторизации
Code Block | ||||
---|---|---|---|---|
| ||||
user@server:~$ sudo radtest 'Suvorov-AV' 'q123' 127.0.0.1 12345 'testing123' Sending Access-Request of id 0 to 127.0.0.1 port 1812 User-Name = "Suvorov-AV" User-Password = "q123" NAS-IP-Address = 91.204.136.114 NAS-Port = 12345 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=0, length=111 Acct-Interim-Interval = 1200 Session-Timeout = 86400 Framed-IP-Address = 10.11.12.13 mpd-limit = "out#1=all rate-limit 16384000" mpd-limit = "in#1=all rate-limit 16384000" |
Code Block | ||||
---|---|---|---|---|
| ||||
31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Request path: /base/mpd 31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Requests in pool: 2 31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - {"req_type":"authorize","RAD_REQUEST":{"User-Name":"Suvorov-AV","User-Password":"q123","NAS-Port":"12345","NAS-IP-Address":"127.0.0.1","Message-Authenticator":"0xa6a9eb96b43c4fa9e4492b2026e1c35b"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{"Auth-Type":"Perl"}} 31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Filter OracleConnection/main: 31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Filter MongoConnection/main: 31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - ============ Starting authorize request ============ 31.12.2013 14:14:34.768 DEBUG SP11080 ww8Sdwdd-1388484874.77 - netservs: try to get data from cache, search conditions: {'aaa_serv_code': 'RADIUS-VPN', 'address': '127.0.0.1'} 31.12.2013 14:14:34.769 DEBUG SP11080 ww8Sdwdd-1388484874.77 - netservs: search in cache get time 0 ms 31.12.2013 14:14:34.769 DEBUG SP11080 ww8Sdwdd-1388484874.77 - netservs: cache hit, entry id: 52c29204fc021d7c73d5f273 31.12.2013 14:14:34.781 DEBUG SP11080 ww8Sdwdd-1388484874.77 - netservs: get data from db 31.12.2013 14:14:34.781 DEBUG SP11080 ww8Sdwdd-1388484874.77 - netservs: total search time: 12 ms 31.12.2013 14:14:34.782 DEBUG SP11080 ww8Sdwdd-1388484874.77 - user equip: try to get data from cache, search conditions: {'auth_type': 'login', 'netserv_id': 40223001, 'login': 'Suvorov-AV', 'aaa_serv_id': 40223501} 31.12.2013 14:14:34.783 DEBUG SP11080 ww8Sdwdd-1388484874.77 - user equip: search in cache get time 0 ms 31.12.2013 14:14:34.783 DEBUG SP11080 ww8Sdwdd-1388484874.77 - user equip: cache hit, entry id: 52c29204fc021d7c73d5f274 31.12.2013 14:14:34.799 DEBUG SP11080 ww8Sdwdd-1388484874.77 - user equip: get data from db 31.12.2013 14:14:34.799 DEBUG SP11080 ww8Sdwdd-1388484874.77 - user equip: total search time: 17 ms 31.12.2013 14:14:34.799 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Parsed check attrs: {'Cleartext-Password': '$USER_PASSWORD', u'Simultaneous-Use': u'1'} 31.12.2013 14:14:34.799 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Substituted check attrs: {'Cleartext-Password': 'q123', u'Simultaneous-Use': u'1'} 31.12.2013 14:14:34.800 DEBUG SP11080 ww8Sdwdd-1388484874.77 - Request processing finished. Time elapsed: 32ms 31.12.2013 14:14:34.800 INFO ReqType: authorize OccurDate: 2013-12-31 14:14:34.800630 Request: User-Name="Suvorov-AV",NAS-IP-Address="127.0.0.1" Result: 2 Reply: DataStorage: db 31.12.2013 14:14:34.814 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Request path: /base/mpd 31.12.2013 14:14:34.814 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Requests in pool: 1 31.12.2013 14:14:34.814 DEBUG SP11080 6V7ZGgZi-1388484874.81 - {"req_type":"authenticate","RAD_REQUEST":{"User-Name":"Suvorov-AV","User-Password":"q123","NAS-IP-Address":"127.0.0.1","NAS-Port":"12345","Message-Authenticator":"0xa6a9eb96b43c4fa9e4492b2026e1c35b"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{"Cleartext-Password":"q123","Hydra-Equip-Cache-ID":"52c29204fc021d7c73d5f274","Auth-Type":"Perl","Hydra-Netserv-Cache-ID":"52c29204fc021d7c73d5f273"}} 31.12.2013 14:14:34.814 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Filter OracleConnection/ main: 31.12.2013 14:14:34.814 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Filter MongoConnection/main: 31.12.2013 14:14:34.815 DEBUG SP11080 6V7ZGgZi-1388484874.81 - ============ Starting authenticate request ============ 31.12.2013 14:14:34.815 INFO SP11080 6V7ZGgZi-1388484874.81 - Making speed modification by 1 coefficient 31.12.2013 14:14:34.815 DEBUG SP11080 6V7ZGgZi-1388484874.81 - SPEED_LIMIT["GOOD":"40213501","UNIT":"UNIT_BitSec"]: 16384000 -> 16384000 31.12.2013 14:14:34.815 DEBUG SP11080 6V7ZGgZi-1388484874.81 - SPEED_LIMIT["GOOD":"40213701","UNIT":"UNIT_BitSec"]: 16384000 -> 16384000 31.12.2013 14:14:34.816 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Reply attributes: {u'Acct-Interim-Interval': u'1200', u'mpd-limit': [u'out#1=all rate-limit 16384000', u'in#1=all rate-limit 16384000'], u'Framed-IP-Address': u'10.11.12.13', u'Session-Timeout': u'86400'} 31.12.2013 14:14:34.816 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Request processing finished. Time elapsed: 2ms 31.12.2013 14:14:34.816 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Filter MongoConnection/main: 31.12.2013 14:14:34.816 DEBUG SP11080 6V7ZGgZi-1388484874.81 - Filter OracleConnection/main: |
Пример неудачной авторизации
Code Block | ||||
---|---|---|---|---|
| ||||
user@server:~$ sudo radtest 'Suvorov-AVV' 'q123' 127.0.0.1 12345 'testing123' Sending Access-Request of id 90 to 127.0.0.1 port 1812 User-Name = "Suvorov-AVV" User-Password = "q123" NAS-IP-Address = 91.204.136.114 NAS-Port = 12345 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=90, length=20 |
Code Block | ||||
---|---|---|---|---|
| ||||
31.12.2013 14:24:01.874 DEBUG SP11080 EkCTugZE-1388485441.87 - Request path: /base/mpd 31.12.2013 14:24:01.875 DEBUG SP11080 EkCTugZE-1388485441.87 - Requests in pool: 2 31.12.2013 14:24:01.875 DEBUG SP11080 EkCTugZE-1388485441.87 - {"req_type":"authorize","RAD_REQUEST":{"User-Name":"Suvorov-AVV","User-Password":"q123","NAS-Port":"12345","NAS-IP-Address":"127.0.0.1","Message-Authenticator":"0x2c1733770ecc67bd2969f30e470a2463"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{"Auth-Type":"Perl"}} 31.12.2013 14:24:01.875 DEBUG SP11080 EkCTugZE-1388485441.87 - Filter OracleConnection/main: 31.12.2013 14:24:01.876 DEBUG SP11080 EkCTugZE-1388485441.87 - Filter MongoConnection/main: 31.12.2013 14:24:01.876 DEBUG SP11080 EkCTugZE-1388485441.87 - ============ Starting authorize request ============ 31.12.2013 14:24:01.877 DEBUG SP11080 EkCTugZE-1388485441.87 - netservs: try to get data from cache, search conditions: {'aaa_serv_code': 'RADIUS-VPN', 'address': '127.0.0.1'} 31.12.2013 14:24:01.877 DEBUG SP11080 EkCTugZE-1388485441.87 - Filter MongoConnection/main: 31.12.2013 14:24:01.877 DEBUG SP11080 EkCTugZE-1388485441.87 - Filter OracleConnection/main: 31.12.2013 14:24:01.877 DEBUG SP11080 EkCTugZE-1388485441.87 - netservs: search in cache get time 0 ms 31.12.2013 14:24:01.878 DEBUG SP11080 EkCTugZE-1388485441.87 - netservs: cache hit, entry id: 52c29204fc021d7c73d5f273 31.12.2013 14:24:01.878 DEBUG SP11080 EkCTugZE-1388485441.87 - netservs: get actual cache, expire: 2013-12-31 14:25:27.921000 31.12.2013 14:24:01.878 DEBUG SP11080 EkCTugZE-1388485441.87 - user equip: try to get data from cache, search conditions: {'auth_type': 'login', 'netserv_id': 40223001, 'login': 'Suvorov-AVV', 'aaa_serv_id': 40223501} 31.12.2013 14:24:01.878 DEBUG SP11080 EkCTugZE-1388485441.87 - user equip: search in cache get time 0 ms 31.12.2013 14:24:01.880 DEBUG SP11080 EkCTugZE-1388485441.87 - Filter MongoConnection/main: 31.12.2013 14:24:01.880 DEBUG SP11080 EkCTugZE-1388485441.87 - Filter OracleConnection/main: 31.12.2013 14:24:01.880 INFO SP11080 EkCTugZE-1388485441.87 - Filter RejectOnError/main: 31.12.2013 14:24:01.880 DEBUG SP11080 EkCTugZE-1388485441.87 - Request processing finished. Time elapsed: 6ms 31.12.2013 14:24:01.881 INFO ReqType: authorize OccurDate: 2013-12-31 14:24:01.881015 Request: User-Name="Suvorov-AVV",NAS-IP-Address="127.0.0.1" Result: 0 Reply: Reason: AuthError (Suvorov-AVV: User not found) 31.12.2013 14:24:01.909 DEBUG SP11082 DrOWYCHl-1388485441.91 - Request path: /base/mpd 31.12.2013 14:24:01.909 DEBUG SP11082 DrOWYCHl-1388485441.91 - Requests in pool: 1 31.12.2013 14:24:01.909 DEBUG SP11082 DrOWYCHl-1388485441.91 - {"req_type":"post_auth","RAD_REQUEST":{"User-Name":"Suvorov-AVV","User-Password":"q123","NAS-IP-Address":"127.0.0.1","NAS-Port":"12345","Message-Authenticator":"0x2c1733770ecc67bd2969f30e470a2463"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{"Auth-Type":"Reject","Post-Auth-Type":"REJECT"}} 31.12.2013 14:24:01.909 DEBUG SP11082 DrOWYCHl-1388485441.91 - Filter OracleConnection/main: 31.12.2013 14:24:01.909 DEBUG SP11082 DrOWYCHl-1388485441.91 - Filter MongoConnection/main: 31.12.2013 14:24:01.910 DEBUG SP11082 DrOWYCHl-1388485441.91 - ============ Starting post_auth request ============ 31.12.2013 14:24:01.910 DEBUG SP11082 DrOWYCHl-1388485441.91 - Request processing finished. Time elapsed: 1ms 31.12.2013 14:24:01.910 DEBUG SP11082 DrOWYCHl-1388485441.91 - Filter MongoConnection/main: 31.12.2013 14:24:01.910 DEBUG SP11082 DrOWYCHl-1388485441.91 - Filter OracleConnection/main: |
Тестирование аккаунтинга с помощью radclient
Утилита radclient, по сравнению с radtest, предоставляет возможность отправки произвольного RADIUS–запроса и получения на него ответа. Формат вызова утилиты для отправки пакета аккаунтинга следующий:
Code Block | ||||
---|---|---|---|---|
| ||||
user@server:~$ sudo radclient -x -f <packets_file> <RADIUS-Server_IP> acct '<RADIUS_Secret>' |
<packets_file>
— файл с информацией о пакетах, которые должны быть отправлены<RADIUS-Server_IP>
— IP–адрес сервера FreeRADIUS<RADIUS_Secret>
— кодовое слово, указанное для данного клиента ранее в файле/etc/freeradius/clients.conf
Инициализация сессии пакетом Start
Создайте файл
start_packet.rad
с информацией о пакете:Code Block title Файл start_packet.rad NAS-Port-Type=Virtual, Acct-Session-Id=1234567-Q-890, Service-Type=Framed-User, Tunnel-Type=PPTP, Acct-Link-Count=1, mpd-iface=ng123, Tunnel-Client-Endpoint=10.11.12.13, Acct-Authentic=RADIUS, Acct-Status-Type=Start, mpd-bundle=V-987, NAS-IP-Address=127.0.0.1, Tunnel-Server-Endpoint=10.0.0.1, mpd-iface-index=123, Tunnel-Server-Auth-Id=vpn25, Tunnel-Medium-Type=IPv4, Calling-Station-Id=10.11.12.13, Framed-Protocol=PPP, User-Name=Suvorov-AV, Event-Timestamp=<Current-Unix-Timestamp>, NAS-Identifier=vpn25, Acct-Multi-Session-Id=8412300-V-987, Framed-IP-Address=10.11.12.13, NAS-Port=890, mpd-link=Q-890
<Current-Unix-Timestamp>
— количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (Unix–время).
Если указанное вами время будет сильно отличаться от системного времени при обработке пакета, процесс обработки будет прерван.
Отправьте подготовленный пакет с помощью radclient:
Code Block language bash title Отправка пакета Start user@server:~$ sudo radclient -x -f start_packet.rad 127.0.0.1 acct 'testing123' Sending Accounting-Request of id 201 to 127.0.0.1 port 1813 NAS-Port-Type = Virtual Acct-Session-Id = "1234567-Q-890" Service-Type = Framed-User Tunnel-Type:0 = PPTP Acct-Link-Count = 1 mpd-iface = "ng123" Tunnel-Client-Endpoint:0 = "10.11.12.13" Acct-Authentic = RADIUS Acct-Status-Type = Start mpd-bundle = "V-987" NAS-IP-Address = 127.0.0.1 Tunnel-Server-Endpoint:0 = "10.0.0.1" mpd-iface-index = 123 Tunnel-Server-Auth-Id:0 = "vpn25" Tunnel-Medium-Type:0 = IPv4 Calling-Station-Id = "10.11.12.13" Framed-Protocol = PPP User-Name = "Suvorov-AV" Event-Timestamp = "Dec 31 2013 17:18:46 MSK" NAS-Identifier = "vpn25" Acct-Multi-Session-Id = "8412300-V-987" Framed-IP-Address = 10.11.12.13 NAS-Port = 890 mpd-link = "Q-890" rad_recv: Accounting-Response packet from host 127.0.0.1 port 1813, id=201, length=20
Обработка запроса агентом HARD:
Code Block title Лог агента HARD: /var/log/hydra/hard/hard.log collapse true 31.12.2013 17:19:03.431 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Request path: /base/mpd 31.12.2013 17:19:03.431 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Requests in pool: 1 31.12.2013 17:19:03.431 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - {"req_type":"accounting","RAD_REQUEST":{"NAS-Port-Type":"Virtual","Acct-Session-Id":"1234567-Q-890","Service-Type":"Framed-User","Tunnel-Type ":"PPTP","Acct-Link-Count":"1","mpd-iface":"ng123","Tunnel-Client-Endpoint":"10.11.12.13","Acct-Authentic":"RADIUS","Acct-Status-Type":"Start","NAS-IP-Address":"127.0.0.1","mpd-bundle":"V-987","Tunnel-Server -Endpoint":"10.0.0.1","mpd-iface-index":"123","Tunnel-Server-Auth-Id":"vpn25","Tunnel-Medium-Type":"IPv4","Calling-Station-Id":"10.11.12.13","Framed-Protocol":"PPP","User-Name":"Suvorov-AV","NAS-Identifier": "vpn25","Event-Timestamp":"Dec 31 2013 17:18:46 MSK","Acct-Multi-Session-Id":"8412300-V-987","Framed-IP-Address":"10.11.12.13","mpd-link":"Q-890","NAS-Port":"890"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{} } 31.12.2013 17:19:03.432 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Filter OracleConnection/main: DB connection acquired 31.12.2013 17:19:03.432 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Filter MongoConnection/main: Mongo connection acquired 31.12.2013 17:19:03.432 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - netservs: try to get data from cache, search conditions: {'aaa_serv_code': 'RADIUS-VPN', 'address': '127.0.0.1'} 31.12.2013 17:19:03.433 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - netservs: search in cache get time 0 ms 31.12.2013 17:19:03.433 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - netservs: cache hit, entry id: 52c29204fc021d7c73d5f273 31.12.2013 17:19:03.445 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - netservs: get data from db 31.12.2013 17:19:03.445 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - netservs: total search time: 12 ms 31.12.2013 17:19:03.445 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - user equip: try to get data from cache, search conditions: {'auth_type': 'login', 'netserv_id': 40223001, 'login': 'Suvorov-AV', 'aaa_serv_id': 40223501} 31.12.2013 17:19:03.446 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - user equip: search in cache get time 0 ms 31.12.2013 17:19:03.446 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - user equip: cache hit, entry id: 52c29204fc021d7c73d5f274 31.12.2013 17:19:03.446 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - user equip: get expired cache, expire: 2013-12-31 14:27:38.645000 31.12.2013 17:19:03.446 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Create accounting cache (_id = 52c2c447fc021d2c47b6118c) for Start packet 31.12.2013 17:19:03.447 DEBUG Result status: 200, body: {"result": 2} 31.12.2013 17:19:03.447 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Request processing finished. Time elapsed: 15ms 31.12.2013 17:19:03.447 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Filter MongoConnection/main: Mongo connection released 31.12.2013 17:19:03.447 DEBUG SP11080 Wzmlo3Z9-1388495943.43 - Filter OracleConnection/main: DB connection released 31.12.2013 17:19:03.447 INFO ReqType: accounting OccurDate: 2013-12-31 17:19:03.447465 Request: User-Name="Suvorov-AV",Acct-Session-Id="1234567-Q-890",NAS-IP-Address="127.0.0.1" Result: 2
- Информация о начатой сессии в приложении «Офис оператора связи» на вкладке «PPP–сессии» формы редактирования абонента:
Обновление данных о сессии пакетом Interim–Update
Создайте файл
update_packet.rad
с информацией о пакете:Code Block title Файл update_packet.rad NAS-Port-Type=Virtual, Tunnel-Type=PPTP, Tunnel-Client-Endpoint=10.11.12.13, Tunnel-Client-Auth-Id=local, Acct-Status-Type=Interim-Update, Acct-Output-Packets=2527, NAS-IP-Address=127.0.0.1, Acct-Output-Octets=66332, Tunnel-Server-Endpoint=10.0.0.1, Tunnel-Server-Auth-Id=vpn25, Acct-Session-Time=18003, Tunnel-Medium-Type=IPv4, User-Name=xanin, NAS-Identifier=vpn25, Acct-Input-Packets=1744, Framed-IP-Address=10.11.12.13, Acct-Input-Octets=17764, Acct-Session-Id=1234567-Q-890, Acct-Output-Gigawords=0, Service-Type=Framed-User, mpd-iface=ng123, Acct-Link-Count=1, Acct-Authentic=RADIUS, mpd-bundle=V-987, mpd-iface-index=123, Calling-Station-Id=10.11.12.13, Framed-Protocol=PPP, Event-Timestamp=<Current-Unix-Timestamp>, Acct-Input-Gigawords=0, Acct-Multi-Session-Id=8412300-V-987, mpd-link=Q-890, NAS-Port=890
<Current-Unix-Timestamp>
— количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (Unix–время).
Если указанное вами время будет сильно отличаться от системного времени при обработке пакета, процесс обработки будет прерван.
Отправьте подготовленный пакет с помощью radclient:
Code Block language bash title Отправка пакета Interim–Update user@server:~$ sudo radclient -x -f update_packet.rad 127.0.0.1 acct 'testing123' Sending Accounting-Request of id 63 to 127.0.0.1 port 1813 NAS-Port-Type = Virtual Tunnel-Type:0 = PPTP Tunnel-Client-Endpoint:0 = "10.11.12.13" Tunnel-Client-Auth-Id:0 = "local" Acct-Status-Type = Interim-Update Acct-Output-Packets = 2527 NAS-IP-Address = 127.0.0.1 Acct-Output-Octets = 66332 Tunnel-Server-Endpoint:0 = "10.0.0.1" Tunnel-Server-Auth-Id:0 = "vpn25" Acct-Session-Time = 2400 Tunnel-Medium-Type:0 = IPv4 User-Name = "Suvorov-AV" NAS-Identifier = "vpn25" Acct-Input-Packets = 1744 Framed-IP-Address = 10.11.12.13 Acct-Input-Octets = 17764 Acct-Session-Id = "1234567-Q-890" Acct-Output-Gigawords = 0 Service-Type = Framed-User mpd-iface = "ng123" Acct-Link-Count = 1 Acct-Authentic = RADIUS mpd-bundle = "V-987" mpd-iface-index = 123 Calling-Station-Id = "10.11.12.13" Framed-Protocol = PPP Event-Timestamp = "Dec 31 2013 17:58:46 MSK" Acct-Input-Gigawords = 0 Acct-Multi-Session-Id = "8412300-V-987" mpd-link = "Q-890" NAS-Port = 890 rad_recv: Accounting-Response packet from host 127.0.0.1 port 1813, id=63, length=20
Обработка запроса агентом HARD:
Code Block title Лог агента HARD: /var/log/hydra/hard/hard.log collapse true 31.12.2013 17:59:02.184 DEBUG SP11084 AdQtPyW1-1388498342.18 - Request path: /base/mpd 31.12.2013 17:59:02.184 DEBUG SP11084 AdQtPyW1-1388498342.18 - Requests in pool: 1 31.12.2013 17:59:02.184 DEBUG SP11084 AdQtPyW1-1388498342.18 - {"req_type":"accounting","RAD_REQUEST":{"NAS-Port-Type":"Virtual","Tunnel-Type":"PPTP","Tunnel-Client-Endpoint":"10.11.12.13","Tunnel-Client-Auth-Id":"local","Acct-Status-Type":"Interim-Update","Acct-Output-Packets":"2527","NAS-IP-Address":"127.0.0.1","Acct-Output-Octets":"66332","Tunnel-Server-Endpoint":"10.0.0.1","Tunnel-Server-Auth-Id":"vpn25.example.com","Acct-Session-Time":"2400","Tunnel-Medium-Type":"IPv4","User-Name":"Suvorov-AV","NAS-Identifier":"vpn25.example.com","Acct-Input-Packets":"1744","Framed-IP-Address":"10.11.12.13","Acct-Input-Octets":"17764","Acct-Session-Id":"1234567-Q-890","Acct-Output-Gigawords":"0","Service-Type":"Framed-User","mpd-iface":"ng123","Acct-Link-Count":"1","Acct-Authentic":"RADIUS","mpd-bundle":"V-987","mpd-iface-index":"123","Calling-Station-Id":"10.11.12.13","Framed-Protocol":"PPP","Event-Timestamp":"Dec 31 2013 17:58:46 MSK","Acct-Input-Gigawords":"0","Acct-Multi-Session-Id":"8412300-V-987","mpd-link":"Q-890","NAS-Port":"890"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{}} 31.12.2013 17:59:02.185 DEBUG SP11084 AdQtPyW1-1388498342.18 - Filter OracleConnection/main: 31.12.2013 17:59:02.185 DEBUG SP11084 AdQtPyW1-1388498342.18 - Filter OracleConnection/main: 31.12.2013 17:59:02.185 DEBUG SP11084 AdQtPyW1-1388498342.18 - Filter MongoConnection/main: 31.12.2013 17:59:02.186 DEBUG SP11084 AdQtPyW1-1388498342.18 - netservs: try to get data from cache, search conditions: {'aaa_serv_code': 'RADIUS-VPN', 'address': '127.0.0.1'} 31.12.2013 17:59:02.186 DEBUG SP11084 AdQtPyW1-1388498342.18 - netservs: search in cache get time 0 ms 31.12.2013 17:59:02.187 DEBUG SP11084 AdQtPyW1-1388498342.18 - netservs: cache hit, entry id: 52c29204fc021d7c73d5f273 31.12.2013 17:59:02.199 DEBUG SP11084 AdQtPyW1-1388498342.18 - netservs: get data from db 31.12.2013 17:59:02.199 DEBUG SP11084 AdQtPyW1-1388498342.18 - netservs: total search time: 13 ms 31.12.2013 17:59:02.199 DEBUG SP11084 AdQtPyW1-1388498342.18 - user equip: try to get data from cache, search conditions: {'auth_type': 'login', 'netserv_id': 40223001, 'login': 'xanin', 'aaa_serv_id': 40223501} 31.12.2013 17:59:02.199 DEBUG SP11084 AdQtPyW1-1388498342.18 - user equip: search in cache get time 0 ms 31.12.2013 17:59:02.199 DEBUG SP11084 AdQtPyW1-1388498342.18 - user equip: cache hit, entry id: 52adf00afc021d77a2b7adca 31.12.2013 17:59:02.200 DEBUG SP11084 AdQtPyW1-1388498342.18 - user equip: get expired cache, expire: 2013-12-31 12:21:05.704000 31.12.2013 17:59:02.200 DEBUG SP11084 AdQtPyW1-1388498342.18 - Create accounting cache (_id = 52c2cda6fc021d2c4db6173f) for Interim-Update packet 31.12.2013 17:59:02.200 DEBUG SP11084 AdQtPyW1-1388498342.18 - Request processing finished. Time elapsed: 16ms 31.12.2013 17:59:02.201 DEBUG SP11084 AdQtPyW1-1388498342.18 - Filter MongoConnection/main: Mongo connection released 31.12.2013 17:59:02.201 DEBUG SP11084 AdQtPyW1-1388498342.18 - Filter OracleConnection/main: DB connection released 31.12.2013 17:59:02.201 INFO ReqType: accounting OccurDate: 2013-12-31 17:59:02.201278 Request: User-Name="Suvorov-AV",Acct-Session-Id="1234567-Q-890",NAS-IP-Address="127.0.0.1" Result: 2
- Информация о обновлённой сессии в приложении «Офис оператора связи» на вкладке «PPP–сессии» формы редактирования абонента:
Завершение сессии пакетом Stop
Создайте файл
stop_packet.rad
с информацией о пакете:Code Block title Файл stop_packet.rad NAS-Port-Type=Virtual, Tunnel-Type=PPTP, Tunnel-Client-Endpoint=10.11.12.13, Tunnel-Client-Auth-Id=local, Acct-Status-Type=Stop, Acct-Output-Packets=2998, NAS-IP-Address=127.0.0.1, Acct-Output-Octets=89587, Tunnel-Server-Endpoint=10.0.0.1, Acct-Terminate-Cause=1, Tunnel-Server-Auth-Id=vpn25, Acct-Session-Time=4574, Tunnel-Medium-Type=IPv4, User-Name=Suvorov-AV, NAS-Identifier=vpn25, Acct-Input-Packets=2325, Framed-IP-Address=10.11.12.13, Acct-Input-Octets=20897, Acct-Session-Id=1234567-Q-890, Acct-Output-Gigawords=0, Service-Type=Framed-User, mpd-iface=ng123, Acct-Link-Count=1, Acct-Authentic=RADIUS, mpd-bundle=V-987, mpd-iface-index=123, Calling-Station-Id=10.11.12.13, Framed-Protocol=PPP, Event-Timestamp=<Current-Unix-Timestamp>, Acct-Input-Gigawords=0, Acct-Multi-Session-Id=8412300-V-987, mpd-link=V-987, NAS-Port=890
<Current-Unix-Timestamp>
— количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (Unix–время).
Если указанное вами время будет сильно отличаться от системного времени при обработке пакета, процесс обработки будет прерван.
Отправьте подготовленный пакет с помощью radclient:
Code Block language bash title Отправка пакета Stop user@server:~$ sudo radclient -x -f stop_packet.rad 127.0.0.1 acct 'testing123' Sending Accounting-Request of id 39 to 127.0.0.1 port 1813 NAS-Port-Type = Virtual Tunnel-Type:0 = PPTP Tunnel-Client-Endpoint:0 = "10.11.12.13" Tunnel-Client-Auth-Id:0 = "local" Acct-Status-Type = Stop Acct-Output-Packets = 2998 NAS-IP-Address = 127.0.0.1 Acct-Output-Octets = 89587 Tunnel-Server-Endpoint:0 = "10.0.0.1" Acct-Terminate-Cause = User-Request Tunnel-Server-Auth-Id:0 = "vpn25" Acct-Session-Time = 4574 Tunnel-Medium-Type:0 = IPv4 User-Name = "Suvorov-AV" NAS-Identifier = "vpn25" Acct-Input-Packets = 2325 Framed-IP-Address = 10.11.12.13 Acct-Input-Octets = 20897 Acct-Session-Id = "1234567-Q-890" Acct-Output-Gigawords = 0 Service-Type = Framed-User mpd-iface = "ng123" Acct-Link-Count = 1 Acct-Authentic = RADIUS mpd-bundle = "V-987" mpd-iface-index = 123 Calling-Station-Id = "10.11.12.13" Framed-Protocol = PPP Event-Timestamp = "Dec 31 2013 18:35:00 MSK" Acct-Input-Gigawords = 0 Acct-Multi-Session-Id = "8412300-V-987" mpd-link = "V-987" NAS-Port = 890 rad_recv: Accounting-Response packet from host 127.0.0.1 port 1813, id=39, length=20
Обработка запроса агентом HARD:
Code Block title Лог агента HARD: /var/log/hydra/hard/hard.log collapse true 31.12.2013 18:35:57.213 DEBUG SP11081 7x7x7ed1-1388500557.21 - Request path: /base/main3 31.12.2013 18:35:57.214 DEBUG SP11081 7x7x7ed1-1388500557.21 - Requests in pool: 1 31.12.2013 18:35:57.214 DEBUG SP11081 7x7x7ed1-1388500557.21 - {"req_type":"accounting","RAD_REQUEST":{"NAS-Port-Type":"Virtual","Tunnel-Type":"PPTP","Tunnel-Client-Endpoint":"10.11.12.13","Tunnel-Client-Auth-Id":"local","Acct-Status-Type":"Stop","Acct-Output-Packets":"2998","NAS-IP-Address":"127.0.0.1","Acct-Output-Octets":"89587","Tunnel-Server-Endpoint":"10.0.0.1","Acct-Terminate-Cause":"User-Request","Tunnel-Server-Auth-Id":"vpn25","Acct-Session-Time":"4574","Tunnel-Medium-Type":"IPv4","User-Name":"Suvorov-AV","NAS-Identifier":"vpn25","Acct-Input-Packets":"2325","Framed-IP-Address":"10.11.12.13","Acct-Input-Octets":"20897","Acct-Session-Id":"1234567-Q-890","Acct-Output-Gigawords":"0","Service-Type":"Framed-User","mpd-iface":"ng123","Acct-Link-Count":"1","Acct-Authentic":"RADIUS","mpd-bundle":"V-987","mpd-iface-index":"123","Calling-Station-Id":"10.11.12.13","Framed-Protocol":"PPP","Event-Timestamp":"Dec 31 2013 18:35:00 MSK","Acct-Input-Gigawords":"0","Acct-Multi-Session-Id":"8412300-V-987","mpd-link":"V-987","NAS-Port":"890"},"aaa_serv_code":"RADIUS-VPN","RAD_CHECK":{}} 31.12.2013 18:35:57.214 DEBUG SP11081 7x7x7ed1-1388500557.21 - Filter OracleConnection/main: DB connection acquired 31.12.2013 18:35:57.214 DEBUG SP11081 7x7x7ed1-1388500557.21 - Filter MongoConnection/main: Mongo connection acquired 31.12.2013 18:35:57.215 DEBUG SP11081 7x7x7ed1-1388500557.21 - netservs: try to get data from cache, search conditions: {'aaa_serv_code': 'RADIUS-VPN', 'address': '127.0.0.1'} 31.12.2013 18:35:57.215 DEBUG SP11081 7x7x7ed1-1388500557.21 - netservs: search in cache get time 0 ms 31.12.2013 18:35:57.215 DEBUG SP11081 7x7x7ed1-1388500557.21 - netservs: cache hit, entry id: 52c29204fc021d7c73d5f273 31.12.2013 18:35:57.223 DEBUG SP11081 7x7x7ed1-1388500557.21 - netservs: get data from db 31.12.2013 18:35:57.223 DEBUG SP11081 7x7x7ed1-1388500557.21 - netservs: total search time: 8 ms 31.12.2013 18:35:57.224 DEBUG SP11081 7x7x7ed1-1388500557.21 - user equip: try to get data from cache, search conditions: {'auth_type': 'login', 'netserv_id': 40223001, 'login': 'Suvorov-AV', 'aaa_serv_id': 40223501} 31.12.2013 18:35:57.224 DEBUG SP11081 7x7x7ed1-1388500557.21 - user equip: search in cache get time 0 ms 31.12.2013 18:35:57.224 DEBUG SP11081 7x7x7ed1-1388500557.21 - user equip: cache hit, entry id: 52c29204fc021d7c73d5f274 31.12.2013 18:35:57.224 DEBUG SP11081 7x7x7ed1-1388500557.21 - user equip: get expired cache, expire: 2013-12-31 14:27:38.645000 31.12.2013 18:35:57.224 DEBUG SP11081 7x7x7ed1-1388500557.21 - Create accounting cache (_id = 52c2d64dfc021d3070b61a3a) for Stop packet 31.12.2013 18:35:57.225 DEBUG Result status: 200, body: {"result": 2} 31.12.2013 18:35:57.225 DEBUG SP11081 7x7x7ed1-1388500557.21 - Request processing finished. Time elapsed: 11ms 31.12.2013 18:35:57.225 DEBUG SP11081 7x7x7ed1-1388500557.21 - Filter MongoConnection/main: Mongo connection released 31.12.2013 18:35:57.225 DEBUG SP11081 7x7x7ed1-1388500557.21 - Filter OracleConnection/main: DB connection released 31.12.2013 18:35:57.225 INFO ReqType: accounting OccurDate: 2013-12-31 18:35:57.225666 Request: User-Name="Suvorov-AV",Acct-Session-Id="1234567-Q-890",NAS-IP-Address="127.0.0.1" Result: 2
- Информация о сессии в приложении «Офис оператора связи» на вкладке «PPP–сессии» формы редактирования абонента: