I want to restrict each user to 300 gigabytes of internet usage per month. Are there any GUI or command-based tools to manager my users' bandwidth?
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!
Hope to help :-)
I think you may try NTM, Network Traffic Monitor, that allows you to set bandwidth restrictions; I don't know whether you can specify restrictions per user, though. You can find the program here:
You can download the latest .deb from here:
And here is a "guide" on how it works:
A solution should be installing a captive portal but then users must log in on portal page through web server.
Hope it helps.