Граница на замке Антон Карпов, toxa@cterra.ru Спецвыпуск: Хакер, номер #051, стр. 051-030-4 # wget www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE7-20041219.tar.gz # tar xzf squid-2.5.STABLE7-20041219.tar.gz # cd squid-2.5.STABLE7-20041219 # ./configure --prefix=/usr/local/squid --sysconfdir=/etc/squid --enable-storeio="ufs diskd" --enable-poll --enable-pf-transparent --disable-ident-lookups --enable-removal-policies="lru heap" --disable-wccp --enable-err-language=Russian-koi8-r # make %26%26 make install # groupadd -g 515 _squid # useradd -d /nonexistent -s /sbin/nologin -u 515 -g 515 -c "Squid Account" _squid # chown _squid:_squid /usr/local/squid/var/cache # chown _squid:_squid /usr/local/squid/var/logs # chgrp _squid /dev/pf %26%26 chmod g+rw /dev/pf Ключевой момент этих шаманств - поддержка pf transparent, прозрачного проксирования трафика, который мы будем заворачивать на squid с помощью pf. Именно для этого мы даем возможность squid’у читать и писать в /dev/pf (последние строчки). В результате пользователи даже не узнают о том, что их трафик экономит наш кеширующий прокси-сервер. После установки открываем /etc/squid/squid.conf и вносим туда следующие изменения: http_port 127.0.0.1:3128 icp_port 0 http_access deny to_localhost acl our_networks src 192.168.0.0/24 http_access allow our_networks httpd_accel_host virtual httpd_accel_port 0 httpd_accel_with_proxy on httpd_accel_uses_host_header on cache_effective_user _squid cache_effective_group _squid Прописываем автозапуск squid в /etc/rc.local: if [ -x /usr/local/squid/bin/squid ]; then echo -n ' squid'; /usr/local/squid/bin/squid -D fi Первый раз нужно запустить squid с параметром -z для создания кеша: # /usr/local/squid/sbin/squid -z Теперь пришла очередь кеширующего DNS. Вопреки популярной практике мы не будем настраивать dns-сервер BIND, а воспользуемся более безопасным и шустрым dnscache из пакета djbdns. Подробнее о djbdns и установке его составных частей читай в этом номере, а здесь я отмечу лишь одну особенность: укажем dnscache работать в качестве форвардера, пересылая все запросы к dns-серверу провайдера и кешируя результат: # echo prov.dns.serv.ip %26gt; /etc/dnscache/root/servers/@ # echo 1 %26gt; /etc/dnscache/env/FORWARDONLY Из-за недостатков ftp-протокола у пользователей могут возникнуть проблемы при доступе к ftp-серверам, которые решает запускаемая из inetd ftp-proxy, на которую мы будем заворачивать ftp-соединения с помощью pf: # grep ftp-proxy /etc/inetd.conf 127.0.0.1:8021 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy Счет, пожалуйста Пользователи будут в восторге, если ты их порадуешь индивидуальной статистикой потребления трафика. Apache + trafd + mysql могут подарить им такую радость. Ставим trafd и mysql: # pkg_add trafd-3.0.1.tgz # mkdir -p /var/trafd/traffic_plain |