Появилась задачка, посмотреть куда же ходят любимые сотрудники вместо работы, ну и увеличить скорость загрузки фишек и прочих айфанов. Но при этом не менять структуру сети и не прописывать прокси в браузере.
Решение - Squid в режиме прозрачности и LightSquid для отчетов. Крутиться это все добро будет на виртуалке. Поставим туда Debian 6.
1. Поднимаем Squid
apt-get install squid
На данный момент в репозитариях лежит 2.7 версия, что меня вполне устроила.
/etc/squid/squid.conf
acl all src all
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src адрес локальной сети
http_access allow localhost
http_access allow localnet
icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid 80000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern .
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
memory_pools_limit 768 MB
coredump_dir /var/spool/squid
2. Настраиваем правила.
Мне повезло, у меня роутер, который позволяет вводить команды напрямую.
Router part:
iptables -t mangle -A PREROUTING -j ACCEPT -p tcp --dport 80 -s адрес Squid
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp --dport 80
ip rule add fwmark 3 table 2
ip route add default via адрес Squid dev интерфейс lan table 2
Я до конца не разобрался в этих командах, честно - просто брал примеры из документации. Плюс - при такой схеме сохраняются IP адреса машин, сделавших запрос.
В таком случае все запросы на 80-й порт будут перенаправляться на 80-й порт нашего Squid. В таком случае на squid тоже надо сделать перенаправление:
Squid part:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Перезапускаем Squid и роутер. После этого все должно работать. Проверить - просто просмотреть файл /var/log/squid/access.log на наличие записей.
3. Настраиваем отчеты:
apt-get install lighttpd
/etc/lighttpd/lighttpd.conf
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_cgi"
# "mod_rewrite",
)
server.port = 8080
server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
" index.lighttpd.html","index.cgi" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
include_shell "/usr/share/lighttpd/use-ipv6.pl"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/x-javascript", "text/css", "text/html", "text/plain" )
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
#### CGI module
cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl" )
Скачиваем и настраиваем LightSquid по его инструкции, благо, она очень простая.
Только не забудьте поправить пути в lightsquid.cfg.
Перезапускаем lighttpd и получаем страничку с отчетами на порту 8080.