|
Диалапные радости рыбаков - Рулим модемом в собственной операционке 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/', |