Задание:
Вести подсчет трафика, который проходит через Squid.
Запрещать доступ пользователям, которые превысили лимит.
У меня:
FreeBSD 5.4-Release
Apache-2
Squid-2.5.10_20050819
Sarg-2.1: советую использовать этот, так как в 2.0.9 неправильно
происходил подсчет.
2-ве локальные сети(192.168.1.0/24 и 192.168.2.0/24)
Конфиг Squid (squid.conf)
#слушаются только внутренние адреса
http_port 192.168.1.1:3128
http_port 192.168.2.1:3128
http_port 127.0.0.1:3128
#отключены ICP запроси
icp_port 0
#параметры которые стоят по дефолту
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
Обновленную версию файла блокирующего баннеры можно скачать здесь: lip.kiev.ua/file/banners.acl
Файл со списком юзеров которым запрещен доступ
user-deny
vasia
petya
bla-bla
Конфиг Sarg
Если вы хотите использовать в статистике вывод графики,
у вас должен быть установлен gd пакет
A graphics library for fast creation of images
sarg.conf
language Russian_koi8
#Файл squd где хранится статистика по юзерам
access_log /usr/local/squid/logs/access.log
graphs yes
graph_days_bytes_bar_color red
title "Stats only Internet"
font_face Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
header_font_size 9px
title_font_size 11px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
logo_text_color #000000
image_size 80 45
#директория куда помещаются отчеты
#в апаче нужно прописать этот путь
#типа Alias /sarg "/usr/local/www/sarg/squid-reports"
output_dir /usr/local/www/sarg/squid-reports
user_ip no
#файл где указываются IP или DNS имена сайтов которые мы не хотим считать
#это могут быть локальные etc
exclude_hosts /usr/local/sarg/hosts
date_format e
#задаем квоту на 300 Мб тобиш юзеры которые
#закачали больше 300 Мб попадают в файл
#user-deny который смотрит squid
per_user_limit /home/blabla/user-deny 300
remove_temp_files yes
index yes
overwrite_report yes
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /usr/local/sarg/exclude_codes
max_elapsed 28800000
date_time_by bytes
show_sarg_info yes
show_sarg_logo yes
displayed_values bytes
user_authentication yes
#авторизация в отчеты юзеров можна зайти только каждый в свой отчет
#и нужно создать в файле squid.users юзера admin он
#может заходить в любые отчеты
AuthName "Internet"
AuthType Basic
AuthUserFile /usr/local/etc/squid/squid.users
require user %u
/usr/local/sarg/hosts
192.168.1.1
192.168.2.1
Google.com
Итак конфиги настроены нужно их синхронизировать и автоматизировать.
Делаем файл /home/blabla/sarg.sh , и добавляем его в /etc/crontab
Итак Sarg проанализировав access.log выводит репорт который мы смотрим
через WEB. Юзеры которые провинились попадают в файл /home/blabla/user-deny,
в сквиде мы создали правило юзеры которые находятся в этом файле не пускать
в инет, а пускать только в аську и etc. Каждый месяц я чищу папку
/usr/local/www/sarg и меняю в файле sarg.sh месяц от которого сарж
будет считать трафик.
Есть маленькая проблема нету градации по юзерам, например оному юзеру нужно выделить
30M а другому 300M, я на php написал скрипт если кумуто понадобится он здесь lip.kiev.ua
Смысл этого скрипта: он делает файл user-deny с градацией по лимиту. Его нужно добавить
в крон (ban.sh) и поправить в squid.conf путь к user-deny, тогда уже не надо параметр
per_user_limit /home/blabla/user-deny 300
и скрипт sarg.sh будет выглядеть так
sarg.sh
#!/bin/sh
cd /usr/local/www/sarg/squid-reports
rm -R *
data=`date "+%d/%m/%Y"`
sarg -d 1/01/2006-$data
exit
898 Прочтений • [Настройка автоматического подсчета трафика для Squid при помощи Sarg. (squid sarg traffic statistic)] [08.05.2012] [Комментариев: 0]