Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Граница на замке

Антон Карпов, 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

Назад на стр. 051-030-3  Содержание  Вперед на стр. 051-030-5