3 Answers
3

If you're using a VPN server for your user's AAA, Use many many tools adapted for your need.

If you're not using a VPN server, Just use it.

As I think you didn't use this solution yet, let me a little to explain about it.

AAA stands for Authentication, Authorization and Accounting. I don't know you solution about the first two ones, but you'r looking for an accounting solution now. So I recommend you to use an AAA enabled VPN solution.

As soon as you install a AAA enabled VPN Server, you'll have very strict control over your clients. I suggest you to use a poptop server, a FreeRadius server on a mysql backend. With this combination and a radius GUI (like dialup-admin or ara or daloradius or ibs) you can do almost everything you want. You should able to control BW or time usage of your users. In the other hand, all usages data will be stored in your mysql DB and if your selected GUI doesn't support your need, you'll be able to do it yourself!

A solution should be installing a captive portal but then users must log in on portal page through web server.
Another way may be a more sofisticated monitoring tool likeNetAMS. It needs a MySQL server and it has lots of features, like billing, so it must have differentiated statistics.
If a plugin for traffic limiting is not already present then a script with CRON can be made. Time interval for executing script must be well thought.