Диалапные радости рыбаков - Рулим модемом в собственной операционке

Andrushock

Xakep, номер #050, стр. 050-072-5


$ wget http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE7-src.tar.gz

Разворачиваем архив:

$ tar zxvf squid-2.4.STABLE7-src.tar.gz

Переходим в созданный каталог:

$ cd squid-2.4STABLE7

Знакомимся со всеми возможными вариантами инсталляции:

$ ./configure --help | more

Конфигурируем:

$ CFLAGS="-O2 -Wall" ./configure --prefix=/usr/local/squid --sysconfdir=/etc/squid --disable-wccp --enable-err-language=Russian-koi8-r --enable-poll --disable-ident-lookups --enable-ssl

Здесь мы указываем пути для бинариков и конфигов; отключаем протокол wccp, позволяющий кискам определять работоспособность прокси; сообщаем, какой нужно использовать язык и кодировку для сообщений об ошибках; используем функцию poll() вместо select(), т.к. poll() быстрее; отключаем поддержку identd и добавляем возможность работы с защищенным протоколом Secure Socket Layer.

Собираем:

$ make

Устанавливаем:

# make install

Создаем новую группу и учетную запись для нашего проксика:

# groupadd -v -g 99 squid

# useradd -v -c "Squid web cache daemon" -d /var/empty -g squid -u 99 -s /sbin/nologin squid

И займемся подготовкой рабочей среды для него:

# mkdir /var/squid /var/squid/cache /var/squid/logs

# chown -R squid:squid /var/squid

# rm -rf /usr/local/squid/logs

Теперь можно переходить непосредственно к процессу конфигурирования squid'а, который сводится к редактированию файла /etc/squid/squid.conf:

/* задаем порт, на который должен подвеситься squid */

http_port 3128

/* отключаем протокол ICP, используемый при передаче данных между группой кэширующих проксей */

icp_port 0

/* описываем, какие запросы не будем кэшировать */

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY

/* объем ОЗУ, выделяемый для хранения объектов */

cache_mem 24 MB

/* указываем тип кэша, путь к нему, его размер, а также число подкаталогов первого и второго уровней */

cache_dir ufs /var/squid/cache 200 16 256

/* определяем пути к логам и файлу с идентификатором процесса squid'а */

cache_store_log none

cache_log /var/squid/logs/cache.log

cache_access_log /var/squid/logs/access.log

pid_filename /var/run/squid.pid

/* путь к нашему резаку баннеров и количество запущенных паралелльно процессов баннеронарезалки */

redirect_program /usr/local/squid/bin/redirector

redirect_children 3

/* IP-адрес нашего DNS-сервера */

dns_nameservers 127.0.0.1

/* создаем списки контроля доступа */

acl localhost src 127.0.0.1/255.255.255.255

acl all src 0.0.0.0/0.0.0.0

acl Safe_ports port 21 80 443 563 1025-65535

acl CONNECT method CONNECT

http_access allow localhost

http_access deny !Safe_ports

http_access deny all

/* указываем, что squid должен запускаться от имени непривилегированного пользователя */

cache_effective_user squid

cache_effective_group squid

Настала очередь препарировать жестокую нарезалку баннеров, представляющую собой небольшую программу на перле:

# vi /usr/local/squid/bin/redirector

#!/usr/bin/perl

$0 = redirector ;

$| = 1 ;

@banners = ('reklama\.ru/cgi-bin/banner/',

Назад на стр. 050-072-4  Содержание  Вперед на стр. 050-072-6