Jump to content
Калькуляторы

FreeRADIUS + MPD5 лимит трафика

Здравствуйте.

Имеется связка mpd5 + freeradius.

Необходимо лимитировать трафик на сессию. Когда-то давно настраивал подобное на линуксе с pppd + freeradius и там был атрибут Session-Octets-Limit или как-то так.

Возможно ли такое на mpd5 + freeradius, понимает ли mpd5 ограничение трафика, на этой странице http://mpd.sourceforge.net/doc/mpd62.html я ничего подходящего не нашел.

Также перевернул весь гугл, полно сообщений о настройке шейпера, но вот по ограничению трафика ничего не нашел.

 

На данный момент приходит в голову несколько вариантов реализации:

1. По крону проверять перерасход и отключать пользователя

2. При получении accounting пакетов(python-модуль и ф-ия accounting) проверять перерасход и отключать пользователя

 

Но оба варианта какие-то не очень красивые и не точные, плюс надо через какие-то кастыли отключать пользователя, например скриптом через веб-интерфейс mpd.

Share this post


Link to post
Share on other sites

как workaround, можно делать через pre-up и pre-down, добавляя правило iptables quota, остальные решения будут кроноподобные(т.е. перидическая проверка и блокировка)

 

по хорошему, надо в ядро запиливать лимит трафика на интерфейс и управлять им через tc/API

Share this post


Link to post
Share on other sites

Имеется связка mpd5 + freeradius.

Необходимо лимитировать трафик на сессию. Когда-то давно настраивал подобное на линуксе с pppd + freeradius и там был атрибут Session-Octets-Limit или как-то так.

Возможно ли такое на mpd5 + freeradius, понимает ли mpd5 ограничение трафика, на этой странице http://mpd.sourceforge.net/doc/mpd62.html я ничего подходящего не нашел.

Может я конечно и ошибаюсь, или не понял суть задачи, но вообще-то этим (подсчетом трафика, проверкой лимитов и управлением соединением) обычно занимается не NAS(mpd), а именно radius (вернее биллинг на основе freeradius). mpd "отдает" радиусу (посредством радиус-атрибутов mpd-input-acct и mpd-output-acct) сведения о трафике, а радиус по наступлению нужного события ("исчерпан лимит") "командует" mpd, отключить юзера. В данном случае посредством того же радиус атрибута mpd-drop-user.

Во всяком случае в "моём" биллинге (FreeNibs) это именно так и реализовано.

Или Вы собираете собственную "конструкцию" freeradius-mpd?

Но оба варианта какие-то не очень красивые и не точные, плюс надо через какие-то кастыли отключать пользователя, например скриптом через веб-интерфейс mpd.

mpd давно умеет делать это посредством СоА c помощью radclient. Для этого достаточно поднять в mpd встроенный rad-server.

 

добавляя правило iptables quota, остальные решения будут кроноподобные(т.е. перидическая проверка и блокировка)

Дык нету во FreeBSD iptables..

Edited by AlKov

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.