Лимит трафика для пользователей
Птица Зу 23 ноября, 2007 - 11:17
Привет!
Есть готовые решения для отслеживания того, насколько пользователь использовал свой лимит трафика через прокси и автоматическое отключение в случае превышения лимита?
А с возможностью просмотреть пользователем свою "выработку" через http?
»
- Для комментирования войдите или зарегистрируйтесь
Натыкался
Натыкался както на разработку российских пыонеров. Они столько наворотов потребовали, что у меня возникло сомнение по поводу их компетентности. Недавно поставил ограничение (дневное). Все что нужно скрипт на перле, конфиг квот, крон,и список пользователей (авторизация через AD)
А теперь по порядку.
1) Настраиваем acl
Для начала создадим каталог. У меня /etc/squid/quota. Каталог должен быть доступен сквиду для чтения, руту для записи. В каталог помещаем файлик deny.lst. В него добавляем фиктивного юзверя и подопытного кролика (из под него будем ломиться в тырнет). Фиктивный нужен потому как сквид ругаеццо на пустой acl
В файле не должно быть пустых строчек, после имен юзера не должно быть пробелов.
Затем пропишем этот файлик в конфиге сквида /etc/squid/squid.conf
Ну тут все просто. Создаем лист типа авторизации со списком юзверей в файле, запрещаем доступ и выводим страничку с сообщением. Особенности - запрещать надо до того как разрешать, к тому же ы строчках не должно быть лишних пробелов.
далее /usr/sbin/squid -k reconfigure и лезем сначала под собой (нам должно быть можно), затем под кроликом (ему долно быть нельзя). Файлик ERR_QUOTA должен лежать там где его ищет сквид (у меня /usr/share/squid/errors/English). Ежели заработало идем дальше.
2) Настраиваем квоты.
"Много думать надо нет". Файлик квот будет состоять из строк. Строки из слов. Слова разделены пробелами. Первое слово - лимит в байтах. Второе и последующее - имена юзерей. Ежели имен нет - квота распространяется на всех, для кого явно не указана. Создаем файл /etc/squid/quota/quota.conf
Постарайся не писать лишних пробелов и не добавляй пустых строк. Здесь мы ограничиваем до ~5 метров всем. Лузерам 1, 2, 3 ставим 10 метров, лузеру 4 - 100.
3) Пишем скрипт на перле (/etc/squid/quota/getdeny.pl)
Скриптик после некоторых раздумий должен выдать список юзерей, превысивших квоту. Для отладки брал небольшой кусок лога, и ставил самому активному юзеру квоту в 10 байт. Как только убеждаемся в том что скриптик делает то что надо - ставим это дело в крон. Я постаил каждые 10 мин.
crontab -e и добавляем запись
*/10 * * * * /etc/squid/quota/getdeny.pl /etc/squid/quota/quotas.conf /var/log/squid/access.log >/etc/squid/quota/deny.lst;/usr/sbin/squid -k reconfigure
Вот собсно и все.
Глюки.
Вобщем как бы все хорошо, токмо мозилка и ие требуют поемуто авторизацию. Надо манов по сквиду побольше покурить.
Спасибо за грамотную
Спасибо за грамотную статью!
Но у меня ошибка, котрая говорит, что параметр "proxy_auth" недонастроен (в "deny.lst" есть имя одного компа без лишних символов):
#/usr/local/etc/rc.d/squid onerestart
Starting squid.
2010/01/22 12:35:25| Invalid Proxy Auth ACL 'acl quota_deny proxy_auth "/usr/local/etc/squid/deny.lst"' because no authentication schemes are fully configured.
FATAL: Bungled squid.conf line 612: acl quota_deny proxy_auth "/usr/local/etc/squid/deny.lst"
Squid Cache (Version 2.7.STABLE7): Terminated abnormally.
/usr/local/etc/rc.d/squid: WARNING: failed to start squid
По второму
По второму вопросу опять жеж скрипт в кроне (реалтайм не канает).