Добрый всем день !
Установил и настроил связку mod5.3+freeradius1.1.7+mysql под FreeBSD 6.1. Все работает хорошо. Но встал вопрос как настроить на этой свзке ng_car ? Может быть кто-то реализовывл подобное и подскажет основные моменты на которые надо бращать внимание ? Если у кого есть документация буду премного благодарен за ссылки на нее ? Много чего прочитал из документации и из форумов, но так и не понял:
1. Можно ли на FreeBSD 6.1 использовать ng_car или данная опция доступна только начиная с 7.0 ?
2. Как собственно ng_car буде взаимодействовать с mpd5 ?
Заранее спасибо.
Статью в этом форуме уже прочитал несколько раз, но что-то пока не уловил основной идеи
Снова про mpd5_freeradius+ng_car+mysql
По-большому счету Вам неважно как mpd жмёт трафик.
Настройка мало чем отличается от любого другого NAS,
что передавать в качестве дополнительных атрибутов описано в документации.
Настройка мало чем отличается от любого другого NAS,
что передавать в качестве дополнительных атрибутов описано в документации.
Добрый день !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 ? Зановить информацию о пользователях в два разных места ?
Проясните пожалуйста темному данную ситуацию
Заранее спасибо
1. для фрирадиуса словари mpd надо создавать
2. нужны mysql-запросы для того, чтобы радиус мог читать необходимое из базы данных UTM - запросы поиском по этому форуму - неоднократно в азных темах пробегали
3. mpd.secret и users не нужны
прочитайте хотя бы вот это : viewtopic.php?t=5236 - в этой ветке есть практически все что вам нужно
2. нужны mysql-запросы для того, чтобы радиус мог читать необходимое из базы данных UTM - запросы поиском по этому форуму - неоднократно в азных темах пробегали
3. mpd.secret и users не нужны
прочитайте хотя бы вот это : viewtopic.php?t=5236 - в этой ветке есть практически все что вам нужно
Спасибо за ответ. Спасибо за ссылку, именно ее и читал и перечитывал и насколько я понял, то в ней идет речь от эмуляторе freeradius в UTM. Или я не прав ?Blackmore писал(а):1. для фрирадиуса словари mpd надо создавать
2. нужны mysql-запросы для того, чтобы радиус мог читать необходимое из базы данных UTM - запросы поиском по этому форуму - неоднократно в азных темах пробегали
3. mpd.secret и users не нужны
прочитайте хотя бы вот это : viewtopic.php?t=5236 - в этой ветке есть практически все что вам нужно
Я же использую freeradius1.1.7 из портов FreeBSD. То есть это не эмулятор freeradius-a, а самый что ни на есть настоящий freeradius.
Как в этом случае быть ?
Спасибо за помощь и ответы
вот же оно - в той ветке комрад 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

Добрый всем день !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 об этом сказано, но слишком мало. Может быть у кго-то есть ссылки где можно еще почитать об этом ?
Спасибо