Журнал Системный Администратор, Апрель 2003

Журнал Системный Администратор

Апрель 2003

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке

Версия для печати Вернуться к оглавлению

Radius

Всеволод Стахов

Протокол radius (Remote Authentication Dial In User Service) служит для аутентификации dial-up пользователей. Обычно radius используется маршрутизаторами Cisco для организации модемных линий, но возможны и варианты связки radius и pppd. В дальнейшем любого клиента radius я буду называть NAS (network access server – сервер, предоставляющий доступ в сеть). Если кто интересуется, чем же таким примечателен radius, то отвечу: данный протокол, с моей точки зрения, является логическим продолжением традиций tacacs-сервера, но он поддерживает больше возможностей и организован намного лучше. Особенно мне понравилась возможность проверки различных NAS по ключу и IP-адресу. Огорчает только относительная молодость протокола, отсутствие качественной документации по бесплатным серверам, отсутствие поддержки протокола старыми NAS. Последний пункт меня особенно опечалил: мои любимые коммутаторы Cisco Catalyst, что прекрасно работали с tacacs-сервером, наотрез отказались от работы с radius. Но в последних моделях Cisco и многие другие производители NAS поддерживают этот протокол.

Для начала определюсь с терминологией:

n  AV-пара – пара атрибут=значение.

n  Авторизация – процесс проверки AV-пар пользователя. В ходе авторизации могут также устанавливаться определённые AV-пары (для сервера freeradius), смысл авторизации заключается в проверке достаточности информации, предоставленной пользователем, для того чтобы пользователь мог пройти аутентификацию.

n  Аутентификация – процесс опроса внешних источников данных radius-сервером для сравнения AV-пар, предоставленных пользователем, и пар, хранящихся во внешнем источнике; выбор метода аутентификации определяется AV-парой Auth-Type.

n  Аккаунтинг (или учёт) – процесс посылки на radius-сервер пакетов NAS, которые содержат информацию о текущем соединении (время, количество переданного трафика и т. д.), на основании этой информации скрипты счетчиков или биллинговой системы могут выполнять различные действия по ограничению доступа пользователей на NAS.

Из серверов, доступных в сети, я выбрал freeradius (http://www.freeradius.org) – новая версия популярного cistron radius, который особенно меня порадовал тем, что он содержит значительное количество модулей аутентификации (например, sql, ldap, unix-passwd, samba-passwd) и стандартный (обладающий меньшими возможностями) radiusd-livingston (ftp://ftp.livingston.com/pub/le/radius/radius21.tar.Z). Эти два сервера распространяются бесплатно, и их компиляция не вызывает затруднений:

$./configure

$make

#make install

Теперь самое время рассказать поподробнее о самом протоколе radius.

Сервер radius использует протокол UDP для работы. Стандартно radius-сервер прослушивает 1812 порт. Для аккаунтинга используется другой порт – 1813 (radius-acct).

Рассмотрим, как отреагирует NAS при поступлении запроса пользователя на аутентификацию:

n  пользователь пытается пройти аутентификацию на NAS;

n  NAS смотрит в первый попавшийся radius-сервер и посылает пакет для установки связи (запрос на доступ);

n  если ответ не получен в течение определённого тайм-аута, то NAS либо опрашивает radius-сервер ещё раз, либо ищет альтернативный сервер;

n  radius-сервер смотрит IP-адрес NAS и проверяет ключ симметричного шифрования, если IP-адрес и ключ соответствуют тому, что написано в конфигурационном файле, то связь продолжается, иначе клиенту посылается пакет Invalid Key. Проверка осуществляется генерацией и шифрацией случайной строки. Затем данные, передаваемые между клиентом и сервером radius, шифруются этим ключом;

n  сервер radius проверяет пароль пользователя (по сети передается md5-хеш пароля), помимо пароля сервер может также проверить IP-адрес и порт NAS, если эти данные неверны, то сервер посылает NAS пакет «Доступ запрещён», содержащий код ошибки и иногда её текстовое описание, отображаемое для пользователя;

n  если же данные пользователя верны, то сервер посылает NAS пакет «Доступ разрешён», содержащий данные о сервисе (PPP, SLIP, login) и некоторые его специфические параметры, например, IP-адрес, номер подсети, MTU для PPP-сервиса в виде пар параметр=значение (AV-пар).

После краткого теоретического отступления перейду к описанию настройки серверов. Для начала сразу же определюсь: я не ставлю своей целью рассказать о каждой опции и возможности, я просто описываю, как оно работает у меня. Настройки livingston и freeradius сильно различаются, поэтому рассматривать их я буду по отдельности. Radiusd-livingston является более ранним сервером и проще в настройке, чем freeradius, поэтому о нем – в первую очередь.

Конфигурация сервера хранится в каталоге /etc/raddb (или в $PREFIX/etc/raddb) и представляет собой несколько файлов, отвечающих за работу отдельных механизмов сервера:

n  clients – определения NAS (ключ и IP-адрес) для проверки подлинности клиента;

n  users – файл, описывающий dial-in пользователей;

n  proxy – настройки перенаправления запросов клиентов другим radius-серверам, если аутентификация на данном прошла неудачно (возможность роуминга или распределения пользователей);

n  dictionary – словарь определений AV-пар для работы с клиентом.

Далее я приведу примеры конфигурационных файлов с комментариями:

clients:

 

# В данном файле находится список клиентов (NAS), которые  могут проходить аутентификацию. Клиент проходит проверку

# имени и ключа. Файл имеет соответствующую структуру: поле имени и поле ключа:

# Имя клиента           Ключ

#---------------- -------------------

NAS1                    123456789cba

NAS2:call               987654321abc

 

proxy:

 

# В этом файле описываются radius-серверы, на которые данный может перенаправлять запросы NAS. Такое поведение,

# например, полезно для организации роуминга. Представим ситуацию: существует 2 провайдера А и Б, они хотят, чтобы

# клиент, заключивший договор с одним из них, мог беспре пятственно заходить и на другой. В данном случае в файле

# прописывается radius-сервер второго провайдера, на который будет осуществляться перенаправление. Наличие ключей

# позволяет защитить сервера доступа от подмены данных. Рассматриваемый файл содержит четыре поля: имя сервера,

# ключ доступа к серверу (на удалённом сервере необходимо внести запись в clients, соответствующую серверу,

# осуществившему перенаправление), область действия сервера (т.е. каких клиентов следует перенаправлять на данный

# сервер, определяется именем клиента после знака @, на пример, user@test.ru), необязательные опции и номера портов.

# Доступные опции выглядят следующим образом: old – удаление области действия и состояния прокси из заголовка

# сообщения от NAS, secure – возможность пересылки запросов на доступ с привилегиями администратора, ipass –

# использование протокола ipass (непереводимое слово).

rad.test.ru      somekey             test.ru

radius.ru.net    papakeyyer   com.net        1645 1646 secure

 

users:

 

# Это основной файл, где хранятся данные о пользователях. Описание идёт так: вначале без отступа имя пользователя,

# затем, отступая на табуляцию, идут AV-пары (первой парой идёт пароль). AV-пары должны описываться в файле

# словаря dictionary. Существует также специальный пользователь по умолчанию, который имеет специальное имя

# DEFAULT. Обычно пользователь по умолчанию применяется, когда описания пользователей находятся не в данном файле,

# а в /etc/passwd, но об этом я расскажу далее. Для начала приведу несколько примеров описания пользователей

# (для получения полного списка AV-пар смотрите файл словаря). Ещё учтите, что имя пользователя может иметь максимум 8

# символов в длину, пароль в принципе до 254 символов, но я часто слышал про ограничение в 31 символ (честно говоря,

# представить себе не могу, когда может понадобиться пароль длиннее 31 символа!)

user1      Password = "testing", Expiration = "Dec 24 1995"

    Service-Type = Framed-User,

    Framed-Protocol = PPP,

    Framed-IP-Address = 255.255.255.254,

    Framed-Routing = None,

    Filter-Id = "std.ppp",

    Framed-MTU = 1500,

    Framed-Compression = Van-Jacobson-TCP-IP

 

user2      Password = "moretest"

    Service-Type = Login-User,

    Login-IP-Host = 192.168.2.7,

    Login-Service = PortMaster

 

user3      Password = "callme"

    Service-Type = Callback-Login-User,

    Login-IP-Host = timeshare1,

    Login-Service = PortMaster,

    Callback-Number = "1231234"

# В конце файла может быть описание пользователя по умолчанию DEFAULT. В данном случае используется аутентификация

# через пароли в /etc/passwd, для этого применяется директива Auth-Type = System. Значение префикса или суффикса

# для имени пользователя означает, что производится поиск данного префикса или суффикса, а остальная часть имени

# используется непосредственно как имя пользователя. Это удобно для добавления различных типов доступа для пользователя

# в зависимости от префикса или суффикса. Рассмотрим пример:

 

# Для пользователей, начинающихся с буквы P (Pusername) используется сервис PPP

DEFAULT    Auth-Type = System, Prefix = "P"

    Service-Type = Framed-User,

    Framed-Protocol = PPP,

    Framed-IP-Address = 255.255.255.254,

    Framed-MTU = 1500

 

# Для префикса S - SLIP

DEFAULT    Auth-Type = System, Prefix = "S"

    Service-Type = Framed-User,

    Framed-Protocol = SLIP,

    Framed-IP-Address = 255.255.255.254,

    Framed-Compression = None

 

# Компрессия трафика - префикс C

DEFAULT    Auth-Type = System, Prefix = "C"

    Service-Type = Framed-User,

    Framed-Protocol = SLIP,

    Framed-IP-Address = 255.255.255.254,

    Framed-Compression = Van-Jacobson-TCP-IP

 

# Здесь используется суффикс %ppp, сигнализирущий использование протокола PPP

DEFAULT    Auth-Type = System, Suffix = "%ppp"

    Service-Type = Framed-User,

    Framed-Protocol = PPP,

    Framed-IP-Address = 255.255.255.254,

    Framed-MTU = 1500

 

# Для пользователя, не соответствующего другим определениям, запускаем протокол PPP

DEFAULT    Auth-Type = System, Framed-Protocol = PPP

    Service-Type = Framed-User,

    Framed-Protocol = PPP,

    Framed-IP-Address = 255.255.255.254,

    Framed-MTU = 1500

 

dictionary:

 

# Данный файл содержит описания атрибутов и значений. Конечно же, я не буду приводить его целиком, приведу

# пример только основных AV: ATTRIBUTE имя_атрибута число_соответствующее_атрибуту тип_атрибута. Число для

# атрибута используется как синоним текста, можно написать Password="text", что идентично 2="text". Тип атрибута

# может принимать следующие значения:

#   string – строка длиной от 0 до 253 символов;

#   ipaddr – IP-адрес, 4 байта в сетевом порядке;

#   integer – 32-х битное целое в интеловском порядке байт;

#   date – 32-х битное число, означающее текущую дату и время;

ATTRIBUTE  User-Name           1      string

ATTRIBUTE  Password            2      string

ATTRIBUTE  Framed-IP-Address   8      ipaddr

ATTRIBUTE  Expiration          21     date

# Описания значений: VALUE имя_значения имя_атрибута номер. Эти описания обычно служат для установления соответствия

# строка-номер. Так, например, значение протокола имеет числовой вид, но для упрощения составления файла

# конфигурации некоторым числам сопоставлены числовые константы (можно привести аналогию #define MACRO 1 в си):

VALUE      Service-Type        Login-User          1

VALUE      Service-Type        Framed-User         2

VALUE      Service-Type        Callback-Login-User 3

VALUE      Service-Type        Callback-Framed-User       4

VALUE      Service-Type        Outbound-User       5

VALUE      Service-Type        Administrative-User 6

VALUE      Framed-Protocol     PPP                 1

VALUE      Framed-Protocol     SLIP                2

VALUE      Framed-Protocol     ARAP                3

VALUE      Login-Service       Telnet              0

VALUE      Login-Service       Rlogin              1

VALUE      Login-Service       TCP-Clear           2

VALUE      Login-Service       PortMaster          3

Для проверки работы radius-сервера используется специальная программа -rad_test, но о ней я расскажу далее при описании сервера freeradius (в livingston она точно такая же).

Сервер freeradius отличается исключительной функциональностью. Он может работать с SQL-серверами (в настоящее время поддерживаются mysql, postgresql, oracle), LDAP-сервером, содержит в себе достаточно много AV-словарей, отличается комплексной настройкой, поддерживает дополнительные модули, имеет веб-интерфейс для настройки и несколько весьма полезных скриптов. Конфигурация freeradius несколько похожа на настройку livingston, поэтому я буду рассказывать преимущественно о работе аутентификации пользователей radius через mysql.

Общие настройки сервера размещаются в файле radiusd.conf. Я приведу здесь несколько опций, показавшихся мне полезными:

radiusd.conf

# Общая схема файлов конфигурации freeradius позволяет использовать специальную директиву $INCLUDE для включения

# конфигурационных файлов в данный (формат .conf)

$INCLUDE  ${confdir}/proxy.conf

$INCLUDE  ${confdir}/clients.conf

# Полезно будет указать пользователя и группу, под которыми будет работать сервер. В принципе лучше, чтобы привилегий

# было поменьше. Если же использовать аутентификацию mysql, то выбор nobody:nobody, на мой взгляд, является самым

# наилучшим.

user = nobody

group = nobody

# Максимальное время обработки запроса (в секундах), по истечении которого клиенту будет послан пакет, сигнализирующий

# разрыв соединения.

max_request_time = 30

# Максимальное количество соединений для данного сервера получается умножением числа NAS в сети на 256. Например,

# для 4 клиентов, значение будет 4*256=1024

max_requests = 1024

 

# Заносить  в лог данные о полном имени пользователя

log_stripped_names = yes

# Заносить ли в лог информацию о запросах на аутентификацию

log_auth = no

# Заносить ли в лог данные о переданных паролях (неправильных и правильных соответственно)

log_auth_badpass = yes

log_auth_goodpass = no

# Приводить ли к нижнему регистру все имена пользователей и пароли (весьма полезно для некоторых пользователей).

# Возможные значения: no – чувствительные к регистру пароль/имя, before – вначале приводим к нижнему регистру,

# потом проводим аутентификацию, after – вначале проверяем аутентификацию как есть, если не получилось, то приводим

# к нижнему регистру и повторяем попытку.

lower_user = no

lower_pass = no

# Убираем пробелы из имени пользователя и пароля. Полезно для имён и паролей, содержащих пробелы. Возможные

# значения аналогичны предыдущему случаю.

nospace_user = no

nospace_pass = no

 

# Весьма полезные параметры модуля безопасности сервера:

security {

    # Максимальное число AV-пар в пакете. Если число пар больше, то пакет не обрабатывается. Если указать

    # данный параметр равным нулю, то будут обрабатываться любые пакеты.

    max_attributes = 200

 

    # Пакет отказа доступа может быть отправлен с некоторой задержкой (в секундах). Такое поведение предотвращает

    # применение DoS-атаки. Если же указать значение, равное нулю, то отказ будет посылаться без задержки.

    reject_delay = 1

 

    # Посылать ответ на запрос NAS о статусе сервера. Такое поведение не описано в rfc, поэтому по умолчанию – no

    # (как написано в комментариях, «может пригодиться для некоторых особых NAS»)

    status_server = no

}

# Обрабатывать перенаправление запросов. Если перенаправление отключено, то необходимо отключить файл proxy.conf, дабы

# избежать ошибок конфигурации (закомментировать директиву $INCLUDE ${confdir}/proxy.conf).

proxy_requests  = yes

# Далее следуют описания многочисленных модулей freeradius, позволяющие настроить, к примеру, методы шифрации паролей

# или работу различных аутентификационных протоколов (PAP, CHAP, MS-CHAP), но описывать здесь всё я не намерен: думаю,

# что в примерах все и так очень подробно обьяснено и разобраться не составит труда.

Настройка клиентов производится в файле clients.conf:

clients.conf

# В данном файле описываются клиенты aka NAS. Формат файла напоминает файл настройки tacacs+. Вначале идёт определение

# клиента: client имя_или_ip_адрес, затем идёт список AV-пар для данного клиента, заключённый в фигурные скобки. Приведу

# несколько примеров:

client 127.0.0.1 {

    # Пароль для идентификации клиента и обмена с ним данными. Данным ключом также осуществляется проверка

    # неизменности передаваемых пакетов (подпись).

    secret       = some_strange_secret

 

    # Краткое имя для клиента.

    shortname    = localhost

 

    # Следующие три поля необязательны, но они полезны для работы скрипта checkrad.pl (проверка  работы процессов

    # сервера)

 

    # Поле типа NAS может принимать следующие значения: Хотя зачем это нужно, я так и не понял.

    #      cisco

    #      computone

    #      livingston

    #      max40xx

    #      multitech

    #      netserver

    #      pathras

    #      patton

    #      portslave

    #      tc

    #      usrhiper

    #      other

    nastype     = other # localhost обычно не является NAS

 

    # Две следующие строчки зарезервированы на будущее. Вообще-то они должны использоваться для проверки

    # имени пользователя и пароля для данного NAS

#   login       = !root

#   password    = someadminpas

}

client some.test.ru {

    secret       = some_host_secret

    shortname    = somenas

}

# Также можно определять пароль для всех клиентов некоторой подсети (чем меньше подсеть, тем лучше, а  вообще, на мой взгляд,

# это не есть хорошо из соображений безопасности)

client 192.168.0.0/24 {

    secret       = a_very_long_passwd

    shortname    = private-network

}

Далее я кратко остановлюсь на особенностях настройки файла proxy.conf. В отличие от сервера livingston во freeradius опять же используется собственный конфигурационный формат. Из нововведений особенно бросается в глаза новая директива – realm, определяющая область перенаправления. Дабы не быть голословным опять же приведу несложный пример:

proxy.conf

 

# Данный файл состоит из двух разделов: описание настроек самого прокси-сервера и описание областей перенаправления.

# На конфигурации работы самого прокси-сервера я останавливаться не буду, а сразу же перейду к описанию директивы

# определения области realm. Она выглядит следующим образом: realm имя_области. Имя области должно являться именем

# домена, который этой областью описывается. Если вместо имени области употребляется слово DEFAULT, то в данную

# область будут перенаправляться запросы, не соответствующие ни одному параметру. Поясню это на примерах:

realm isp2.ru {

# Тип сервера

    type        = radius

# Сервер radius для аутентификации

    authhost    = radius.isp2.com:1645

# Сервер radius для аутентификации (обычно другой порт)

    accthost    = radius.isp2.com:1646

# Секрет для связи

    secret      = our_concurents_key

# Не убирать суффикс или префикс области из имени пользователя

    nostrip

}

# Если перенаправить запрос на данный сервер не удалось, то происходит выборка другого сервера для данной области

# или сервера по умолчанию. Также существует специальная область NULL для клиентов, которые не определили область

# действия, например, просто user (сравните user@isp2.ru)

realm NULL {

    type         = radius

    authhost     = radius.test.ru

    accthost     = radius.test.ru

    secret       = our_secret_key

}

# Ну а для тех пользователей, чья область не определена, используется сервер по умолчанию:

realm DEFAULT {

    type         = radius

    authhost     = radius.test.ru

    accthost     = radius.test.ru

    secret       = our_secret_key

}

# Учтите: в двух последних примерах при перенаправлении запроса к вторичным серверам radius из имени пользователя

# вырезается имя области, т.к. не определена опция nostrip.

 

Теперь для любопытствующих кратко опишу назначение остальных конфигурационных файлов freeradius:

n  acct_users – содержит установки учёта (аккаунтинга). Обычно используется для задания начальных и конечных скриптов для пользователя и областей репликации (см. пример). В скрипты можно передавать специальные переменные:

n  %a         Protocol (SLIP/PPP)

n  %c         Callback-Number

n  %d         request day (DD)

n  %f          Framed IP address

n  %i          Calling Station ID

n  %l          request timestamp

n  %m        request month (MM)

n  %n         NAS IP address

n  %p         Port number

n  %s         Speed (PW_CONNECT_INFO)

n  %t          request in ctime format

n  %u         User name

n  %A        radacct_dir

n  %C        clientname

n  %D        request date (YYYYMMDD)

n  %H        request hour

n  %L         radlog_dir

n  %M       MTU

n  %R        radius_dir

n  %S         request timestamp in SQL format

n  %T         request timestamp in database format

n  %U        Stripped User name

n  %V        Request-Authenticator (Verified/None)

n  %Y        request year (YYYY)

 Пример:

 

DEFAULT Acct-Status-Type == Start

 Exec-Program = "/path/to/exec/acct/start %U"

DEFAULT Acct-Status-Type == Stop

Exec-Program = "/path/to/exec/acct/stop %U %n %a"

 

n  attrs – информация об AV-парах по умолчанию для каждой области действия.

n  clients.conf – настройки NAS.

n  dictionary – данные об известных AV-парах.

n  hints – информация о суффиксах и префиксах имён пользователей.

    Пример:

 

# Здесь директива Strip-User-Name определяет, удалять ли префикс или суффикс из имени

DEFAULT Suffix = ".ppp", Strip-User-Name = Yes

Hint = "PPP",

Service-Type = Framed-User,

Framed-Protocol = PPP

DEFAULT Prefix = "P", Strip-User-Name = Yes

Hint = "PPP",

Service-Type = Framed-User,

Framed-Protocol = PPP

 

n  proxy.conf – информация об областях.

n  sql.conf – настройки работы с mysql (к этому файлу я еще вернусь).

n  users – а вот этот файл очень важен для последующего изложения, он описывает пользователей. Описание пользователей аналогично livingston-radius:

 

user    Auth-Type := Local, User-Password == "testing"

Service-Type = Framed-User,

Framed-Protocol = PPP,

Framed-IP-Address = 172.16.3.33,

Framed-IP-Netmask = 255.255.255.0,

Framed-Routing = Broadcast-Listen,

Framed-MTU = 1500,

Framed-Compression = Van-Jacobsen-TCP-IP

 

    но есть и отличие: использование специальных операторов присваивания и сравнения (в linvingston был только один «=»). Приведу список «новых» операторов:

Атрибут посылается NAS, его значение равно Value:

«Attribute = Value»

Если данный атрибут не определён, то он принимает указанное значение:

«Attribute := Value»

Используется только для проверки значения атрибута:

«Attribute == Value»

Добавление нового значения атрибуту:

Различные операции сравнения:

«Attribute += Value»

«Attribute != Value»

«Attribute > Value»

«Attribute >= Value»

«Attribute < Value»

«Attribute <= Value»

Проверка соответствия значения атрибута определённому регулярному выражению:

«Attribute =~ Expression»

«Attribute !~ Expression»

Проверка, содержит ли запрос данный атрибут, значение не играет роли:

«Attribute =* Value»

«Attribute !* Value»

Однако если вы намереваетесь работать с большим числом пользователей, то файл users не подойдет (он целиком помещается в память). В качестве альтернативы можно взять сервера LDAP или MySQL (PostgreSQL, Oracle). LDAP, на мой взгляд, несколько практичнее, но я прекрасно понимаю, что MySQL распространён намного больше, поэтому о его использовании я и поведу речь.

Для начала устанавливаем mysql (этот процесс я не описываю). Обязательно устанавливаем (если работаем с пакетами) пакет mysql-dev. После этого перекомпилируем radius (configure скрипт сам обнаружит mysql и включит в makefile нужный модуль). После этого создаём базу в mysql:

$mysql -uroot -proot_passwd

mysql> create database radius

После этого выполняем mysql-сценарий для создания таблиц в базе. Для этого заходим в каталог модуля mysql:

$cd {PATH_TO_RADIUS_SRC}/src/modules/rlm_sql/drivers rlm_sql_mysql

и передаём mysql-сценарий:

$mysql -uroot -proot_passwd radius < db_mysql.sql

 

База состоит из 5-и таблиц:

n  Usergroup – данные о группах пользователей, например:

 

mysql> select * from usergroup;

id

UserName

GroupName

1

steve

dynamic

2

barney

static

2 rows in set (0.00 sec)

 

n  Radcheck – AV-пары для проверки пользователя (обычно пароль), например:

 

id

UserName

Attribute

op

Value

1

steve

User-Password

==

testing123

2

steve

Auth-Type

:=

Accept

3

barney

Chap-Password

==

test

2 rows in set (0.02 sec)

 

n  Radgroupcheck – проверка атрибутов для группы (не знаю, зачем это нужно).

n  Radreply – таблица, содержащая AV-пары, передающиеся клиенту сервером при прохождении аутентификации, например:

 

mysql> select * from radreply;

id

UserName

Attribute

op

Value

1

barney

Framed-IP-Address

=

1.2.3.4

2

setve

Framed-IP-Address

=

2.3.4.1

3

steve

Framed-IP-Netmask

=

255.255.255.255

4

steve

Framed-Routing

=

Broadcast-Listen

5

steve

Framed-Route

=

2.3.4.0 255.255.255.248

6

steve

Idle-Timeout

=

900

6 rows in set (0.01 sec)

 

n  Radgroupreply – AV-пары, содержащиеся в ответе сервера для данной группы, например:

 

mysql> select * from radgroupreply;

id

GroupName

Attribute

op

Value

34

dynamic

Framed-Compression

=

Van-Jacobsen-TCP-IP

33

dynamic

Framed-Protocol

=

PPP

32

dynamic

Service-Type