Тема: FreeBSD!?
Показать сообщение отдельно
Старый 09.12.2007, 17:06   #23
eXler
Местный
 
Аватар для eXler
 
Регистрация: 26.04.2006
Адрес: Мск
Сообщений: 322
Вы сказали Спасибо: 23
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для eXler с помощью ICQ
По умолчанию

Установка 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 сервер запущен.
__________________
mv / /dev/null
eXler вне форума