Прозрачный прокси со статистикой (squid+pf+sarg) [2007]
Squid 2.6 + pf + sarg
В офисной локалке прокси всегда пригодится. Собственно, прокси позволяет нам немного экономить трафик, и что тоже немаловажно, позволяет отслеживать перемещение сотрудников во всемирной паутине. Вообщем, мы всегда по логам можем определить, какой сотрудник накачал больше всего порнухи или ищет новую работу, вместо того, чтобы выполнять должностные обязанности. Ну и так далее, вообщем, сплошная польза.
Прокси работает на другом порту (чаще всего на 3128) и перенаправляет запросы на порт 80 удаленных серверов. Это его и отличает от NAT-а - он не подменяет ip-адрес, а как бы пробрасывает запрос с одного порта на другой и кеширует. Мутно немного получается:) Любой виндовый админ сделает следующим образом, установит proxy (уж не знаю как оно у MS называется) и заставит всех пользователей через AD настроить Internet Explorer на работу с прокси. Но это не наш метод. Мы сделаем заворот на squid с помощью фаервола pf. Итак, предполагается что pf у нас уже есть. Остальное - устанавливаем:
Установка из пакетов практически не отнимает время. Для любителей устанавливать из портов идем в директории /usr/ports/www/squid26 и /usr/ports/www/sarg и делаем там make install. В моем случае установился:
Сразу прописываем в /etc/rc.conf: squid_enable="YES". Squid - очень мощный прокси сервер, но для запуска в наших примитивных условиях достаточно будет такого конфига (/usr/local/etc/squid/squid.conf):
http_port 127.0.0.1:3128 transparent #Обращаю внимание, что эта строка работает #только в squid 2.6. hierarchy_stoplist cgi-bin ?
Запустился. В настройках любого браузера указываем наш новоиспеченный прокси на порту 3128 и пробуем выйти в интернет. Если не получилось - смотрим логи, маны и думаем. Если прокси выпускает нас в интернет, то самое время завернуть весь http-трафик, проходящий через NAT на прокси. Для pf (конфиг в "/etc/pf.conf") это делается такой строкой:
rdr on $int_if proto tcp from $internal_net to any port 80 -> 127.0.0.1 port 3128
После перезапуска правил фаервола ("pfctl -f /etc/pf.conf") весь веб-трафик будет пропускаться через squid. Весь, кроме https, что, вообще-то, не очень страшно. Теперь можно перейти к настройке sarg. Конфиг располагается в /usr/local/etc/sarg:
language Russian_windows1251 access_log /var/log/squid/access.log temporary_dir /tmp output_dir /www/traf.myserver.ru #директория сайта статистики overwrite_report yes #Перезаписываем результаты после обработки usertab /usr/local/etc/sarg/usertab.txt #Файл таблицы пользователей charset Windows-1251
Ну для удобства можно и подредактировать файл /usr/local/etc/sarg/usertab.txt
После этого страница статистики будет выглядеть заметно приятнее. Кстати, между ip и именем должен быть пробел, а не TAB. Остается только поставить в расписание обработчика логов, тут уж кому как, можно поставить каждые 15 минут, а можно и раз в сутки, чтобы не мучать сервер ("/etc/crontab").
*/15 * * * * root /usr/local/bin/sarg #обновление статистики каждые 15 минут 0 0 * * * root /usr/local/bin/sarg # или эта строка - обновление статистики каждые сутки
Ну и напоследок, чтобы не накапливать уже обработанные логи сквида можно раз в сутки обнулять примерно таким скриптом: