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

Если с mpd нельзя, то интересует аналогичная ф-ия с accel-pptp

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this