Установка GNU-Radius
Все операции проводим от пользователя root.
noc# cd /usr/ports/net/gnu-radius/
noc# make install
И выбираем поддержку PostgreSQL.
Все необходимые компоненты устанавливаются в /usr/local/etc/raddb
sqlserver
Файл sqlserver содержит настройки для работы с SQL сервером.
http://www.opennet.ru/soft/vpn/sqlserver
Рассмотрим его подробнее:
# Использовать postgresql модуль
interface postgres
login vpn
password VPN
Использовать модуль интерфейса PostgreSQL логин и пароль для доступа к
БД
keepopen yes
idle_timeout 14400
Удерживать неиспользуемые соеденеия 14400 сек.
для повышения общей производительности.
doauth yes
auth_max_connections 4
auth_db vpn
Использовать авторизацию, выделяя для этого макс 4 соеденений с SQL
сервером. Для авторизации использовать БД vpn ранее созданную нами.
# Авторизация пользователя
auth_query select passwd from users where user_name='%u' AND active = TRUE and
get_traffic_limit('%u') >= 0
SQL запрос возвращающий пароль пользователя при авторизации.
Внимание !!! Все пароли в БД хранятся в открытом виде. Это необходимое
условие для CHAP авторизации.
reply_attr_query SELECT attr,param \
FROM users_attribute \
WHERE op IS NULL AND user_name='%u'
SQL запрос производящий выборку RADIUS атрибутов для пользователя,
после успешной авторизации. Эти атрибуты определяют ограничение по
трафику, времени, шейпу для пользователя.
doacct yes
acct_max_connections 4
acct_db vpn
Использовать аккаунтинг, выделяя для этого макс 4 соеденений с SQL
сервером. Для аккаунтинга использовать БД vpn ранее созданную нами.
acct_start_query INSERT INTO stat(user_name,start,ip,frm,acct_s_id,pid,update)\
VALUES('%u','%D','%C{Framed-IP-Address}', \
'%C{Calling-Station-Id}','%C{Acct-Session-Id}','%C{Login-Service}','%D')
SQL запрос выполняемый при начале работы пользователя. В Таблицу stat
добавляется запись о начале работы пользователя.
acct_alive_query UPDATE stat \
SET tm = %C{Acct-Session-Time}, \
update = '%D', \
inp = %C{Acct-Input-Octets}, \
out = %C{Acct-Output-Octets} \
WHERE user_name = '%u' AND acct_s_id = '%C{Acct-Session-Id}'
SQL запрос обновляющий информацию о работающем пользователе.
acct_stop_query UPDATE stat \
SET tm = %C{Acct-Session-Time}, \
update = '%D', \
stop = '%D', \
inp = %C{Acct-Input-Octets}, \
out = %C{Acct-Output-Octets} \
WHERE user_name = '%u' AND acct_s_id = '%C{Acct-Session-Id}';\
UPDATE users_attribute \
SET param = INT8(param) - %C{Acct-Input-Octets} - %C{Acct-Output-Octets} \
WHERE user_name = '%u' AND attr = 'Traffic-Limit'; \
UPDATE users \
SET active = false WHERE get_traffic_limit('%u') <= 0 AND user_name = '%u'; \
SELECT check_lost('%u')
SQL запрос выполняемый при окончании работы пользователя.
users
Файл users содержит DEFAULT пользователя и правила его обработки.
http://www.opennet.ru/soft/vpn/users
# This is the users database.
DEFAULT Auth-Type = Local, Password-Location = SQL
Service-Type = Framed-User,
Framed-Protocol = PPP
Словарь dictionary.ppp
Для работы нам необходим словарь содержащий дополнительные
аттрибуты.
http://www.opennet.ru/soft/vpn/dictionary.ppp
Для подключения его к словарям RADIUS нам нужно положить его в
какталог /usr/local/etc/raddb/dict и в файле
/usr/local/etc/raddb/dictionary добавить строку:
$INCLUDE dict/dictionary.ppp
Остальные настройки
Для получени логов RADIUS сервера, следует раскоментировать следующие
строки в файле /usr/local/etc/raddb/config:
option {
usr2delay 30;
max-requests 1024;
# Uncomment and edit these if you need to:
log-dir "/var/log";
acct-dir "/var/acct";
};
Далее следует отредактировать файл clients, и изменить пароль:
localhost testPW
127.0.0.1 testPW
Внимание !!! - пароль testPW взят только для примера.
Следующий шаг - создать файл /etc/radius.conf с правами доступа 0600.
noc# true >/etc/radius.conf
noc# chmod 0600 /etc/radius.conf
И отредактировать его:
auth 127.0.0.1 testPW 30
acct 127.0.0.1 testPW 30
Последний шаг - запуск RADIUS сервера:
noc# /usr/local/etc/rc.d/gnu-radius.sh start
radiusd
Проконтролировать запуск можно в файле: /var/log/radius.info:
июл 16 14:39:18: [27501]: ready
июл 16 14:39:18: [27501]: /usr/local/etc/raddb/users reloaded.
июл 16 14:39:18: [27501]: SQL auth: no group_query specified
июл 16 14:39:18: [27501]: SQL acct: no acct_nasdown_query specified
июл 16 14:39:18: [27501]: SQL acct: no acct_nasup_query specified
июл 16 14:39:18: [27502]: Ready to process requests.
RADIUS сервер запущен.