ACCESS CONTROLS Фильтрация трафика может осуществляться средствами squid с помощью ACL и директив http_access.
Я не претендую на уникальность сведений и не описываю ничего нового. Подробнее о подобных настройках можно почитать и в ЧаВо по squid и в других местах. Все описанное ниже приводится только для примера, поэтому описаны только некоторые фильтры и в сокращенном варианте.
В squid.conf в разделе ACCESS CONTROLS добавляем несколько строк:
# ACCESS CONTROLS # ----------------------------------------------------------------------------- # Определяем рабочее время: с понедельника по пятницу с 9 до 17. acl WORK_TIME_MAIN time MTWHF 9:00-17:00 # Определяем дополнительное рабочее время: с понедельника по пятницу с 8 до 18. acl WORK_TIME_EXTD time MTWHF 8:00-18:00 # Просто "хорошие" сайты -- для "обхода" фильтров acl GOOD_URL-sites url_regex -i "/usr/local/etc/squid/lst/address-allow" ### Запрещенные расширения ## Audio-video acl NOT_LOAD_audio-video urlpath_regex -i "/usr/local/etc/squid/lst/ext-media-deny" ## Aрхивы acl NOT_LOAD_archivefile urlpath_regex -i "/usr/local/etc/squid/lst/ext-arc-deny" # Запрещаем аудио-видео с 8:00 до 18:00 http_access deny NOT_LOAD_audio-video WORK_TIME_EXTD # Запрещаем закачку архивов (кроме "хороших" сайтов) с 9:00 до 17:00 http_access deny NOT_LOAD_archivefile !MONA_URL-sites WORK_TIME_MAIN
Создаем файлы-списки ACL. В address-allow содержались строки
referat.*\.zip$ и т.д. и т.п.
В ext-media-deny:
\/.*\.avi$ \/.*\.mp3$ \/.*\.divx$
В ext-arc-deny:
\/.*\.zip$ \/.*\.rar$ \/.*\.arj$
Недостатки такой системы:
К "плюсам" можно отнести:
У меня эта схема исправно проработала более двух лет.
Технология фильтрации Запросы от клиента обрабатываются в следующей последовательности:
Примечание. В access.log в любом случае записыватся URL_от_клиента!!! Определить что же именно получил клиент, можно анализируя логи редиректора, или, если access.log ведется стандартным способом, по IP-адресу хоста, на который ссылается URL_от_редиректора. Т.е. проверить откуда пришел ответ на самом деле.
Вот только это была именно "фильтрация", а не редиректинг. ПОЭТОМУ вернемся к редиректорам.
Форматы access.log Стандартный формат. Задается в squid.conf директивой:
emulate_httpd_log off
Что пишется (пример):
1) 11086437012.162 - время окончания запроса, в мсек 2) 16237 - время запроса, в мсек 3) 10.100.1.7 - IP адрес клиента 4) TCP_MISS/200 - тип / код возврата http 5) 4450 - размер, байт 6) GET - метод 7) http://www.yadro.ru/show/51/banner/37.gif - URL 8) user7 - логин (если есть) или "-" 9) DIRECT/www.yadro.ru — иерархия / хост, откуда пришел ответ 10) image/gif - MIME тип/подтип
Эмуляция httpd. Включается там же, в squid.conf директивой:
emulate_httpd_log on
Что пишется (пример):
1) 10.100.1.7 - IP-адрес клиента 2) user7 - логин (если есть) или "-" 3) - - 4-5) [05/Jun/2004:15:08:49 +0300] - [местные_дата:время часовой_пояс] 6-8) "GET http://www.news.dn.ua/Images/kursi.gif HTTP/1.1" - "метод URL протокол" 9) 200 - код возврата http 10) 3242 - размер, байт 11) TCP_MISS:FIRST_UP_PARENT - тип_http:иерархия
Как видно из примера, в первом случае мы получаем больше информации , а во втором "читабельное" время. Кому что нужнее...