Ограничение трафика в месяц
Скажу сразу, что ниже описанный способ, не самый красивый по классическим меркам, но зато один из самых быстрых и простых. :)
Для реализации этого метода необходимо наличие собственно Squid и Sarg
Установка оных рассмотренна выше, поэтому остановлюсь только на настройке.
Вобщем открываем файл конфигурации sarg.conf и меняем следующую строку:
per_user_limit /usr/local/sarg/over_lim 100
Число может быть любым - оно отражает количество трафика в мегабайтах, которым мы хотим ограничить пользователей в месяц
/usr/local/sarg/over_lim это путь с именем конечного файла, в который будут заносится ипы рабочих станций, которые превысили лимит в 100 Мб
А этот файлик скармливаем сквиду в разделе запрет/разрешение
acl quote src "/usr/local/sarg/over_lim" - описывает source
http_access deny quote - собственно запрет
Теперь - эту строку (с запретом) мы прописываем перед всеми разрешениями:
http_access deny quote
http_access allow comp2
http_access allow comp1
http_access allow comp3
http_access allow comp4
Т.е. пока файлик пустой, ничего не запрещается;
Соответственно, как только ип компьютера к примеру Comp2 - попадает в этот файл происходит следующее
http_access deny quote (192.168.0.5 #Comp2)
http_access allow comp2
http_access allow comp1
http_access allow comp3
http_access allow comp4
У всех рабочих станций, разрешение остается, а у Comp2 - соответственно нет, так как squid свои конфы читает сверху - вниз
Но это еще не все...
Squid не может "на ходу" перечитывать свои конфы, поэтому его необходимо периодически перезапускать
В общем ситуация выглядит так:
По крону мы запускаем Sarg - генерить отчеты , каждые 10 мин
*/10 * * * * /usr/bin/sarg
Это позволяет через каждые 10 мин. иметь свежие отчеты, а также проверку на превышение лимита
Теперь, так же по крону перезапускаем squid через каждые 12 мин
*/12 * * * * killall -HUP squid
Но теперь, нам надо первого числа каждого месяца обнулять отчеты, дабы открыть доступ в интернет
5 0 1 0 0 rm /usr/local/sarg/over_lim
Но заодно, надо отротировать логи squid чтобы обнулить его отчеты
1 0 1 * * /usr/local/squid/sbin/squid -k rotate
Ну вод собственно имеем:
В первую минуту нового месяца, сквида складыват отчеты за месяц в архив, и создает новый - пустой лог.
На пятой минуте стирается файл с ипами рабочих станций, превысивших лимит.
Собственно - это все, одно неудобство: количество огранниченного трафика - для всех одинаковое!