Снова про mpd5_freeradius+ng_car+mysql

Форум для размещения материалов по реализации различных схем использования ПО, решению частых проблем и предупреждению частых ошибок
Закрыто
Savoi
Сообщения: 4
Зарегистрирован: Чт окт 08, 2009 11:17
Откуда: Russia

Снова про mpd5_freeradius+ng_car+mysql

Сообщение Savoi »

Добрый всем день !

Установил и настроил связку mod5.3+freeradius1.1.7+mysql под FreeBSD 6.1. Все работает хорошо. Но встал вопрос как настроить на этой свзке ng_car ? Может быть кто-то реализовывл подобное и подскажет основные моменты на которые надо бращать внимание ? Если у кого есть документация буду премного благодарен за ссылки на нее ? Много чего прочитал из документации и из форумов, но так и не понял:
1. Можно ли на FreeBSD 6.1 использовать ng_car или данная опция доступна только начиная с 7.0 ?
2. Как собственно ng_car буде взаимодействовать с mpd5 ?
Заранее спасибо.

Статью в этом форуме уже прочитал несколько раз, но что-то пока не уловил основной идеи

Arti
Сообщения: 266
Зарегистрирован: Пн окт 01, 2007 02:44

Сообщение Arti »

По-большому счету Вам неважно как mpd жмёт трафик.

Настройка мало чем отличается от любого другого NAS,
что передавать в качестве дополнительных атрибутов описано в документации.

Savoi
Сообщения: 4
Зарегистрирован: Чт окт 08, 2009 11:17
Откуда: Russia

Сообщение Savoi »

Arti писал(а):По-большому счету Вам неважно как mpd жмёт трафик.

Настройка мало чем отличается от любого другого NAS,
что передавать в качестве дополнительных атрибутов описано в документации.
Добрый день !
Спасибо за отклик на мое сообщение. Было очень приятно его прочитать.
Спасибо за ссылку. Этот материал я видел и раньше, но пока не понял следующее:
1. В dictionary radius надо указать на ссылку на dictionary.mpd, которая должна находится по адресу /usr/local/share/freeradius/dictionary.mpd ?
Вчера посмотрел по это ссылке, нет там dictionary.mpd, значит его надо создать ?
2. В radiusd.conf надо что-то добавлять, с учетом того что пользователи у меня хранятся в базе данных mysql ?
3. Если у меня хранятся пользователи в базе mysql, то где я должен проаисать для них параметры mpd-limit ? Посмотрел вчера структуру базы данных в mysql, не предусмотрено в ней для этого колонок ?
4. Можно конечно же задавать параметры в файле users, но тогда как быть с тем что у меня пользователи заведены в базе данных mysql ? Зановить информацию о пользователях в два разных места ?
Проясните пожалуйста темному данную ситуацию
Заранее спасибо

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

1. для фрирадиуса словари mpd надо создавать
2. нужны mysql-запросы для того, чтобы радиус мог читать необходимое из базы данных UTM - запросы поиском по этому форуму - неоднократно в азных темах пробегали
3. mpd.secret и users не нужны

прочитайте хотя бы вот это : viewtopic.php?t=5236 - в этой ветке есть практически все что вам нужно

Savoi
Сообщения: 4
Зарегистрирован: Чт окт 08, 2009 11:17
Откуда: Russia

Сообщение Savoi »

Blackmore писал(а):1. для фрирадиуса словари mpd надо создавать
2. нужны mysql-запросы для того, чтобы радиус мог читать необходимое из базы данных UTM - запросы поиском по этому форуму - неоднократно в азных темах пробегали
3. mpd.secret и users не нужны

прочитайте хотя бы вот это : viewtopic.php?t=5236 - в этой ветке есть практически все что вам нужно
Спасибо за ответ. Спасибо за ссылку, именно ее и читал и перечитывал и насколько я понял, то в ней идет речь от эмуляторе freeradius в UTM. Или я не прав ?
Я же использую freeradius1.1.7 из портов FreeBSD. То есть это не эмулятор freeradius-a, а самый что ни на есть настоящий freeradius.
Как в этом случае быть ?
Спасибо за помощь и ответы

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

вот же оно - в той ветке комрад atdp03 все доходчиво описал:
Чтобы конструкция заработала с freeradius, нужно примерно следующее:
Код:
authorize_group_reply_query = "
SELECT rd.id, 'shape', 'mpd-limit', unhex(rd.value), '+='
FROM ip_groups ig, iptraffic_service_links isl, service_links sl, radius_data rd
WHERE ig.uname = '%{SQL-User-Name}'
AND ig.is_deleted =0
AND ig.ip_group_id = isl.ip_group_id
AND isl.is_deleted =0
AND isl.id = sl.id
AND sl.is_deleted =0
AND rd.owner_id = sl.service_id
AND rd.attr = 7
UNION
SELECT rd.id, 'shape', 'mpd-filter', unhex(rd.value), '+='
FROM ip_groups ig, iptraffic_service_links isl, service_links sl, radius_data rd
WHERE ig.uname = '%{SQL-User-Name}'
AND ig.is_deleted =0
AND ig.ip_group_id = isl.ip_group_id
AND isl.is_deleted =0
AND isl.id = sl.id
AND sl.is_deleted =0
AND rd.owner_id = sl.service_id
AND rd.attr = 6"



Первый селект дёргает аттрибут 7 (mpd-limit), второй - аттрибут 6 (filter), дабы пустить нужный трафик (в моём случае) мимо шейпинга.

В dictionary добавляем: Код:
$INCLUDE /usr/local/share/freeradius/dictionary.mpd



Содержимое файлика: Код:
#----------------------------------------------------------
# dictionary.mpd

VENDOR mpd 12341

ATTRIBUTE mpd-rule 1 string mpd
ATTRIBUTE mpd-pipe 2 string mpd
ATTRIBUTE mpd-queue 3 string mpd
ATTRIBUTE mpd-table 4 string mpd
ATTRIBUTE mpd-table-static 5 string mpd
ATTRIBUTE mpd-filter 6 string mpd
ATTRIBUTE mpd-limit 7 string mpd
ATTRIBUTE mpd-drop-user 154 integer mpd
#----------------------------------------------------------



Прописываем параметры тарифных планов, добавляем в конфиг mpd: Код:
log +radius2



И при подключениях наблюдаем следующее: Код:
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: out#2=all shape 40000 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: in#2=all shape 40000 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: in#1=flt1 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: out#1=flt2 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 1#1=match dst net 10.0.0.0/8
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 2#1=match src net 10.0.0.0/8
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 1#2=match dst net 192.168.0.0/16
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 2#2=match src net 192.168.0.0/16
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 1#3=match dst net 172.16.0.0/12
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 2#3=match src net 172.16.0.0/12



Сенькс этой ветке,
этой: http://forum.nag.ru/forum/index.php?showtopic=41232
и вот этой: http://www.chris.ru/speak/index.php?showtopic=721
какой еще помощи и советов надо ? осталось только сделать :)

Savoi
Сообщения: 4
Зарегистрирован: Чт окт 08, 2009 11:17
Откуда: Russia

Сообщение Savoi »

Blackmore писал(а):вот же оно - в той ветке комрад atdp03 все доходчиво описал:
Чтобы конструкция заработала с freeradius, нужно примерно следующее:
Код:
authorize_group_reply_query = "
SELECT rd.id, 'shape', 'mpd-limit', unhex(rd.value), '+='
FROM ip_groups ig, iptraffic_service_links isl, service_links sl, radius_data rd
WHERE ig.uname = '%{SQL-User-Name}'
AND ig.is_deleted =0
AND ig.ip_group_id = isl.ip_group_id
AND isl.is_deleted =0
AND isl.id = sl.id
AND sl.is_deleted =0
AND rd.owner_id = sl.service_id
AND rd.attr = 7
UNION
SELECT rd.id, 'shape', 'mpd-filter', unhex(rd.value), '+='
FROM ip_groups ig, iptraffic_service_links isl, service_links sl, radius_data rd
WHERE ig.uname = '%{SQL-User-Name}'
AND ig.is_deleted =0
AND ig.ip_group_id = isl.ip_group_id
AND isl.is_deleted =0
AND isl.id = sl.id
AND sl.is_deleted =0
AND rd.owner_id = sl.service_id
AND rd.attr = 6"



Первый селект дёргает аттрибут 7 (mpd-limit), второй - аттрибут 6 (filter), дабы пустить нужный трафик (в моём случае) мимо шейпинга.

В dictionary добавляем: Код:
$INCLUDE /usr/local/share/freeradius/dictionary.mpd



Содержимое файлика: Код:
#----------------------------------------------------------
# dictionary.mpd

VENDOR mpd 12341

ATTRIBUTE mpd-rule 1 string mpd
ATTRIBUTE mpd-pipe 2 string mpd
ATTRIBUTE mpd-queue 3 string mpd
ATTRIBUTE mpd-table 4 string mpd
ATTRIBUTE mpd-table-static 5 string mpd
ATTRIBUTE mpd-filter 6 string mpd
ATTRIBUTE mpd-limit 7 string mpd
ATTRIBUTE mpd-drop-user 154 integer mpd
#----------------------------------------------------------



Прописываем параметры тарифных планов, добавляем в конфиг mpd: Код:
log +radius2



И при подключениях наблюдаем следующее: Код:
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: out#2=all shape 40000 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: in#2=all shape 40000 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: in#1=flt1 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_LIMIT: out#1=flt2 pass
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 1#1=match dst net 10.0.0.0/8
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 2#1=match src net 10.0.0.0/8
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 1#2=match dst net 192.168.0.0/16
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 2#2=match src net 192.168.0.0/16
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 1#3=match dst net 172.16.0.0/12
Feb 7 18:31:24 access3 mpd: [pp9] RADIUS: RadiusGetParams: RAD_MPD_FILTER: 2#3=match src net 172.16.0.0/12



Сенькс этой ветке,
этой: http://forum.nag.ru/forum/index.php?showtopic=41232
и вот этой: http://www.chris.ru/speak/index.php?showtopic=721
какой еще помощи и советов надо ? осталось только сделать :)
Добрый всем день !
Спасибо за ответы и помощь.
Подружил freeradius1.17 с mpd5.3. Трафик шейпирутся с помощью ng_car прописмыванием mpd-limit атрибута в базе данных mysql для передачи в mpd. Спасибо всем за помощь. Теперь хотелось бы спросить вот о чем. Кто-нибудь пробовал реализовать nat с помощью mpd ? В документации на mpd об этом сказано, но слишком мало. Может быть у кго-то есть ссылки где можно еще почитать об этом ?
Спасибо

Закрыто