{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 и ядром , обработка запросов выполняется в автономном режиме на основании данных, содержащихся в кэше MongoDB.
На сервере должен быть установлен интерпретатор perl версии 5.10 и старше.
Убедитесь, что интерпретатор perl, имеющийся в системе, скомпилирован с поддержкой многопоточности:
В противном случае при большой интенсивности запросов возникнут проблемы с производительностью RADIUS–сервера. |
deb.hydra-billing.com
). Данный репозиторий подключается сотрудниками компании Латера в рамках технической поддержки.Общее руководство по установке сервера FreeRADIUS доступно в виде отдельной статьи «Установка и настройка сервера FreeRADIUS». В случае установки FreeRADIUS на новый сервер достаточно выполнить следующее:
Обновить список пакетов, убедившись в отсутствии ошибок соединения с репозиторием компании Латера (deb.hydra-billing.com
):
user@server:~$ sudo aptitude update |
Установить сервер FreeRADIUS из пакета freeradius
и утилиты для работы с ним из пакета freeradius-utils
:
user@server:~$ sudo aptitude install freeradius freeradius-utils |
Для настройки сервера FreeRADIUS, установленного из репозитория компании Латера достаточно указать параметры подключения к агенту HARD и код сетевой RADIUS–службы в Гидре.
Откройте в текстовом редакторе файл /etc/freeradius/hard.pm
:
user@server:~$ sudo nano /etc/freeradius/hard.pm |
В районе строки №45 файла проверьте и, при необходимости, скорректируйте параметры подключения к агенту HARD:
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–серверу:
# Код сетевой службы RADIUS в АСР use constant HYDRA_AAA_SERV => "RADIUS-VPN"; |
Если служба RADIUS-VPN ещё не используется в Гидре, можно оставить её. В противном случае, замените код по умолчанию RADIUS-VPN на, например, RADIUS-MPD.
В файл /etc/freeradius/clients.conf
добавьте IP–адреса всех серверов MPD, которые будут взаимодействовать с данным RADIUS–сервером. Примеры приведены в самом файле, в простейшем случае запись выглядит так:
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:
user@server:~$ sudo /etc/init.d/freeradius restart |
Общее руководство по установке агента HARD доступно в виде отдельной статьи «Установка агента HARD». В случае установки агента на новый сервер достаточно выполнить следующее:
Обновить список пакетов, убедившись в отсутствии ошибок соединения с репозиторием компании Латера (deb.hydra-billing.com
):
user@server:~$ sudo aptitude update |
Установить агент HARD из пакета hard
:
user@server:~$ sudo aptitude install hard=<hard_version> |
<hard_version>
— версия агента HARD, совместимая с установленной у вас версией ядра Гидры. Актуальную информацию о совместимости версий вы можете получить, обратившись в техническую поддержку компании Латера.
Общие принципы настройки агента HARD описаны в разделе «Настройка агента HARD». Для настройки взаимодействия с MPD необходимо выполнить следующие действия:
Отредактируйте файл конфигурации /etc/hydra/hard/default.yml
, приведя его содержимое в соответствие с примером.
# Список активных плагинов 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
не существует, создайте её.
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:
user@server:~$ sudo /etc/init.d/hard restart |
Для определения наборов RADIUS–атрибутов и их значений, а также указания используемых при авторизации услуг доступа используется RADIUS–служба. А для задания параметров аутентификации, учёта сеансов работы абонента путём хранения CDR–записей, настройки параметров обработки CDR–записей, тарификации потоковых услуг передачи данных на основании поступающей через RADIUS–Accounting информации используется абонентская сетевая служба.
Компоненты абонентской сетевой службы выступают в роли абонентского оборудования, на котором оказываются услуги. А подписка абонента на эту службу через абонентское оборудование используется для хранения данных аутентификации абонента: логина и пароля. Связь между RADIUS–службой и абонентской службой настраивается для каждого из MPD–серверов, обслуживающих абонентов, с указанием его IP–адреса.
В результатах поиска будут представлены все существующие на данный момент RADIUS–службы. Если среди них есть служба с кодом «RADIUS-VPN», и она не используется для взаимодействия с другим вашим оборудованием, используйте для дальнейших настроек её. Если же служба с кодом «RADIUS-VPN» уже используется, создайте новую службу, нажав в реестре сетевых служб на кнопку «Добавить» и указав в качестве типа службы «RADIUS-сервер», а в качестве кода, например, «RADIUS-MPD ».
Код используемой RADIUS–службы должен совпадать с кодом, указанным ранее в файле |
На форме редактирования выбранной 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 | Ограничение скорости входящего трафика для абонента. Подстановка
|
5 | mpd-limit | += | in#1=all shape $SPEED_LIMIT["GOOD":"40213501","UNIT":"UNIT_BitSec"] pass | Ограничение скорости исходящего трафика для абонента. Подстановка
|
Для проверки пароля и ограничения количества одновременных сессий необходимо в разделе «Access Request» добавить следующие атрибуты:
№ | Атрибут | Оператор | Значение | Описание |
---|---|---|---|---|
1 | Cleartext-Password | := | $USER_PASSWORD | Подстановка $USER_PASSWORD возвращает пароль из подписки аутентифицируемого абонента на абонентскую сетевую службу |
2 | Simultaneous-Use | := | 1 | Максимально допустимое количество одновременных сессий одного абонента. |
В результатах поиска будут представлены все существующие на данный момент сетевые службы. Если среди них есть служба с кодом «VPN» и типом «VPN-концентратор», и она не используется для взаимодействия с другим вашим оборудованием, используйте для дальнейших настроек её. Если же служба с кодом «VPN» и типом «VPN-концентратор» уже используется, создайте новую службу, выполнив следующее:
В разделе «Настройка управления службой» для каждого из 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»:
В качестве абонентского оборудования будут использоваться компоненты настроенное на предыдущем этапе абонентской сетевой службы.
Перейдите на вкладку «Службы» и в разделе «Подписка на службы» нажмите кнопку «Добавить» и заполните следующие поля:
Наименование поля | Значение |
---|---|
Служба | Абонентская сетевая служба: стандартная VPN, или созданная вами. |
Оборудование | Компонент абонентской сетевой службы, созданный на предыдущем шаге. |
Логин | Логин абонента. Логин должен быть уникален в разрезе сетевой службы. Если оставить поле пустым, в качестве логина будет использоваться, в зависимости от параметров аутентификации, код абонента или код компонента, указанного в поле «Оборудование». |
Пароль | Пароль абонента. |
Утилита radtest позволяет выполнить попытку авторизации с переданными ей логином и паролем на указанном RADIUS–сервере, отображая при этом как атрибуты запроса, так и атрибуты ответа.
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
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" |
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: |
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 |
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, по сравнению с radtest, предоставляет возможность отправки произвольного RADIUS–запроса и получения на него ответа. Формат вызова утилиты для отправки пакета аккаунтинга следующий:
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_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:
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:
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 |
Создайте файл 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:
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:
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 |
Создайте файл 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:
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:
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 |