WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Прокси-серверы, с их способностью к экономии полосы пропускания, улучшения
безопасности, улучшения скорости веб-серфинга, становятся все более и более
популярными. В настоящее время на рынке есть только несколько программных
прокси-серверов. Они имеют два основных недостатка: они коммерческие и не
поддерживают ICP (ICP используется для обмена информацией о наличии URL в
соседнем кэше). Squid это лучший выбор для кэширующего прокси-сервера, так
как он надежный, бесплатный и поддерживает ICP. Производный от кэширующего программного обеспечения ARPA-funded Harvest
research project, разработанного в National Laboratory for Applied Network
Research and funded by the National Science Foundation, Squid предлагает
высокопроизводительное кэширование для веб-клиентов, он также поддерживает
FTP, Gopher и HTTP-объекты данных. Squid хранит часто используемые объекты в
RAM, поддерживает надежную базу данных объектов на диске, имеет комплексный
механизм контроля доступа и поддерживает SSL-протокол для посредничества в
безопасных соединениях. В дополнение к этому, он поддерживает иерархические
связи с другими прокси-серверами, базирующимися на Squid. В нашем случае мы настроим Squid на запуск как httpd-акселератор для
лучшей производительности нашего веб-сервера. В режиме акселератора Squid
выступает как обратный кэширующий прокси: он принимает запросы клиентов, если
это возможно, то удовлетворяет их из кэша, а если невозможно, то организует
запросы к оригинальному серверу для которого выступает как обратный прокси.
Также, мы покажем конфигурацию Squid, как кэширующего прокси-сервера, которая
позволит всем пользователям корпоративной сети использовать Squid
для доступа в Интернет. Эти инструкции предполагают. Пакеты. Архивы. После инсталляции:
Для получения списка установленных файлов:
Раскройте архив:
Шаг 1.
Прокси-сервер Squid не должен запускаться из-под пользователя root, и по
этой причине мы создаем специального пользователя, не имеющего оболочки,
для запуска Squid. Первое, мы добавляем пользователя squid. Затем создаем каталог /cache,
если этот каталог не существует. В заключение, мы изменяем владельца каталога
cache на squid. ЗАМЕЧАНИЕ. Обычно мы не нуждаемся в выполнении команды mkdir /cache
потому, что мы уже создали этот каталог, когда разбивали наш жесткий диск при
инсталляции Linux. Если этот раздел не существует, мы должны выполнить эту
команду для создания каталога. Шаг 2. Переместитесь в новый каталог Squid и выполните следующие команды
на Вашем терминале. Редактируйте файл Makefile.in (vi +18 icons/Makefile.in) и
измените следующие строки:
Мы изменили переменную sysconfdir на libexecdir. Благодаря этому, каталог
icons будет размещаться в иерархии /usr/lib/squid. Редактируйте файл Makefile.in (vi +34 src/Makefile.in) и
измените следующие строки:
Мы изменили месторасположение принятое по умолчанию для файлов cache.log,
access.log и store.log на каталог /var/log/squid. Затем, мы разместили
pid-файл для Squid в каталоге /var/run, и в заключение, разместили каталог
icons в /usr/lib/squid/icons. Если Вы страдаете от ограничения памяти на Вашей системе, то
производительность кэша Squid будет пониженной. Для решения этой проблемы Вы
можете связать Squid с внешней библиотекой malloc, такой как GNU malloc.
Чтобы Squid использовал GNU malloc как внешнюю библиотеку,
выполните следующие шаги: Пакеты. Шаг 1.
Компилируйте и инсталлируйте GNU malloc на Вашей системе,
выполнив следующие команды: Шаг 2.
Копируйте файл libmalloc.a в каталог с Вашими системными библиотеками
под именем libgnumalloc.a. Шаг 3.
Копируйте файл malloc.h в каталог с системными заголовочными файлами
под именем gnumalloc.h. Squid автоматически определит файлы libgnumalloc.a и gnumalloc.h и будет
использовать их для улучшения производительности кэша. Шаг 1.
Перейдите в каталог с исходными кодами Squid и введите следующие команды
на Вашем терминале: Эти опции говорят Squid: Шаг 2.
Сейчас мы должны скомпилировать и инсталлировать Squid на сервере: Команда make -f будет компилировать все исходные файлы в исполняемые
двоичные, make install будет инсталлировать все исполняемые и сопутствующие
им файлы в необходимые места. Команда mkdir создаст новый каталог squid под
каталогом /var/log. Команда rm -rf удалит каталог /var/logs, так как этот
каталог был создан для хранения файлов регистрации, связанных со Squid,
которые были перемещены в каталог /var/log/squid. Команда chown изменит
владельца /var/log/squid на пользователя squid, а chmod изменит права доступа
к каталогам squid и cache (0750/drwxr-x---) из соображений безопасности.
Заметим, что мы удаляем небольшие скрипты RunCache и RunAccel, которые
запускают Squid в режиме кэширования или акселератора, так как мы используем
лучший скрипт squid, расположенный в каталоге /etc/rc.d/init.d. Команда strip
уменьшит размер двоичных файлов для оптимизации их производительности. Очистка после работы. Команды rm будет удалять все файлы с исходными кодами, которые мы
использовали при компиляции и инсталляции Squid и GNU malloc. Также будут
удалены сжатые архивы Squid и GNU malloc из каталога /var/tmp. Все программное обеспечение, описанное в книге, имеет определенный каталог
и подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы для
всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную
воспроизводить файлы из книги, чтобы создать свои файлы конфигурации.
Скопируйте файлы, связанные с Squid из архива, измените их под свои
требования и поместите в нужное место так, как это описано ниже. Файл с
конфигурациями Вы можете скачать с адреса:
http://www.openna.com/books/floppy.tgz. Для запуска Squid в режиме httpd-акселератора следующие файлы должны быть
созданы или скопированы на Ваш сервер. Копируйте squid.conf в каталог /etc/squid. Для запуска Squid в режиме кэширующего прокси-сервера следующие файлы
должны быть созданы или скопированы на Ваш сервер. Копируйте squid.conf в каталог /etc/squid. Вы можете взять эти файлы из нашего архива floppy.tgz. Файл squid.conf используется для установки и конфигурирования всех опций
для Вашего прокси-сервера Squid. В конфигурационном файле, приведенном ниже,
мы будем настраивать Squid на работу в режиме httpd-акселератора. В этом
режиме, если веб-сервер запущен на том же сервере, где Squid, то Вы должны
настроить демон на порт 81. В случае с веб-сервером Apache, Вы можете сделать
это назначив вместо 80 порта 81 в файле httpd.conf. Если веб-сервер запущен
на других серверах Вашей сети, Вы можете оставить тот же номер порта (80) для
Apache, так как Squid подключен на другом IP-адресе, где
порт 80 не используется. Редактируйте файл squid.conf (vi /etc/squid/squid.conf) и
добавьте/измените следующие опции: Эти опции обозначают следующее: http_port 80 icp_port 0 acl QUERY urlpath_regex cgi-bin \? и no_cache deny QUERY cache_mem 16 MB cache_dir ufs /cache 200 16 256 emulate_httpd_log on redirect_rewrites_host_header off replacement_policy GDSF acl all src 0.0.0.0/0.0.0.0 and http_access allow all cache_mgr admin cache_effective_user squid и cache_effective_group squid httpd_accel_host 208.164.186.3 и httpd_accel_port 80 log_icp_queries off cachemgr_passwd my-secret-pass all buffered_logs on Внеся небольшие изменения в файл squid.conf, используемый для запуска
Squid как http-акселератора, мы запустим его как кэширующий прокси-сервер.
Если Squid запущен как кэширующий прокси-сервер, все пользователи Вашей
корпоративной сети смогут использовать его для доступа в интернет. В этой
конфигурации мы будем иметь полный контроль над проходящим трафиком и сможем
определять политику просмотра, доступа и выкачивания. Вы также сможете
контролировать использование полосы пропускания, времени соединения и т. д.
Кэширующий прокси-сервер может быть настроен на запуск как автономный сервер
Вашей корпорации или использование разделяемой иерархии кэшей с
другими серверами в Интернет. В первом примере, приведенном ниже, мы покажем как настроить Squid как
автономный сервер, а затем немного поговорим о конфигурации иерархических
кэшей, где два или более серверов кооперируются для предоставления
документов друг другу. Редактируйте файл squid.conf (vi /etc/squid/squid.conf) и
добавьте/измените следующие опции для запуска кэширующего прокси-сервера,
как автономного сервера: Большие отличия от конфигурации для режима httpd-акселератора вносит
использование списков контроля доступа (ACL). Эта возможность позволяет
ограничивать доступ базируясь на исходном IP-адресе (src), IP-адресе
получателя (dst), исходном домене, домене назначения, времени и т. д. Много
типов контроля существует благодаря этой возможности, и Вы должны посмотреть
оригинальный файл Squid.conf для получения полного списка. Ниже приведены
четыре основных типа: Как пример, ограничим доступ к прокси-серверу только внутренними клиентами
и определим диапазон портов, к которым можно обращаться: Эти acl будут разрешать доступ всем внутренним клиентам из диапазона
приватных адресов класса C 192.168.1.0, также разрешается доступ с IP-адреса
localhost (специальный IP-адрес, используемый для доступа к самому себе).
Затем мы выбираем диапазон портов (80=http, 443=https, 210=wais, 119=nntp,
70=gopher и 21=ftp), к которым внутренние клиенты могут обращаться, мы
запрещаем метод CONNECT для предотвращения попыток подключения внешних
пользователей к прокси-серверу, и в заключение мы запрещаем доступ со
всех IP-адресов. Второй метод работы кэширующего прокси это так называемый "Multi-level Web
Caching", при котором Вы сотрудничаете с большим числом других кэшей в
Интрнет. В этом случае Ваша организация использует кэши других
прокси-серверов, а другие серверы используют Ваш кэш. Следует заметить, что в
этой ситуации кэширующие прокси играют две различные роли в иерархии. Они
могут быть настроены, как кэши, имеющие одного родителя (sibling) и иметь
возможность выдавать документы, которые уже имеют, или настроены как
родительские серверы и иметь возможность брать документы из других кэшей
или непосредственно с серверов. ЗАМЕЧАНИЕ. Хорошей стратегией для предотвращения большого сетевого
трафика при отсутствии веб-кэширования будет настройка нескольких
sibling-кэшей и только небольшого числа родительских кэшей. Настроим скрипт /etc/rc.d/init.d/squid для запуска и остановки кэширующего
прокси-сервера Squid. Этот скрипт изменит установки кэша подкачки на /cache
вместо /var/spool/squid. Создайте скрипт squid (touch /etc/rc.d/init.d/squid) и добавьте в него:
Сейчас сделайте этот скрипт исполняемым и измените права доступа:
Создайте символическую ссылку в rc.d для Squid следующей командой:
По умолчанию скрипт squid не будет автоматически запускать прокси-сервер
на Red Hat Linux, когда Вы перезагружаете сервер. Вы можете изменить
это следующей командой:
Запустите ваш новый прокси-сервер Squid вручную:
Настроим файл /etc/logrotate.d/squid для автоматической ротации файлов
регистрации каждую неделю. Создайте файл squid (touch /etc/logrotate.d/squid) и добавьте в него: Если Вы создаете кэш-каталог для Squid в независимом разделе Вашей
Linux-системы (например, /cache), подобно тому как мы делали во время
инсталляции, тогда Вы можете использовать опции noexec, nodev и nosuid для
улучшения и укрепления безопасности кэша. Эти параметры могут быть
установлены в файле /etc/fstab и дают указания системе не исполнять любые
двоичные файлы (noexec), не интерпретировать символьные и блочные специальные
устройства (nodev) и не позволять действовать битам set-user-identifier или
set-group-identifier (nosuid) на смонтированной файловой системе (/cache,
например). Примените эту процедуру на разделе, где располагается кэш Squid,
чтобы предотвратить возможность DEV, SUID/SGID и выполнения с него
любых двоичных файлов. Например, предположим на разделе /dev/sda8 располагается каталог /cache.
Вы должны отредактировать файл fstab (vi /etc/fstab) и изменить строку,
связанную с /dev/sda8: ЗАМЕЧАНИЕ. Вы должны перезагрузить систему, чтобы
изменения вступили в силу. Как мы знаем, бит постоянства может быть использован для предотвращения
удаления, переписывания или создания символической ссылки к файлу. Так как
файл squid.conf уже настроен, хорошей идеей будет иммунизировать его: Атрибуты atime и noatime могут быть использованы, чтобы немного улучшить
производительность кэша Squid. Смотрите главу 4 в этой книге "Общая системная
оптимизация", для большей информации по этой теме. Наиболее важный ресурс для Squid, это физическая память. Вам не нужен
очень быстрый процессор. Ваша дисковая система будет основным узким местом,
так что быстрые диски важны для кэша. Утилита cachemgr.cgi, доступная по умолчанию, когда Вы скомпилировали и
инсталлировали Squid на вашей системе, создана для запуска через
веб-интерфейс, и выводит различную статистику о конфигурации и работе Squid.
Эта программа располагается в каталоге /usr/lib/squid, и Вы должны
переместить ее в Ваш каталог cgi-bin (например, /home/httpd/cgi-bin).
Следующие шаги помогут Вам настроить программу для использования. Шаг 1.
Переместите программу cachemgr.cgi в Ваш каталог cgi-bin:
ЗАМЕЧАНИЕ. Я подразумеваю, что Ваш каталог cgi-bin расположен в
каталоге /home/httpd/cgi-bin, возможны и другие пути. Этот cgi-bin будет
существовать, если Вы инсталлировали веб-сервер Apache. Шаг 2.
После того, как Вы переместили скрипт cachemgr.cgi в cgi-bin, Вы можете
обратится к нему, введя в Вашем браузере следующий адрес:
http://my-web-server/cgi-bin/cachemgr.cgi. Здесь my-web-server определяет адрес Вашего веб-сервера Apache, а
cachemgr.cgi это утилита, которую Вы только что переместили в каталог cgi-bin
для получения информации и конфигурации прокси-сервера Squid. Если Вы настраивали файл squid.conf, то используйте парольную
аутентификацию для доступа к cachemgr.cgi, Вам будет предложено ввести имя
кэша (Cache Host), порт кэша (Cache Port), имя администратора (Manager name)
и пароль (Password) перед тем, как допустят к программе cachemgr.cgi.
Смотрите конфигурационный файл /etc/squid/squid.conf, приведенный выше, для
получения большей информации. После того, как Вы прошли аутентификацию на сервере, Вы увидите в Вашем
браузере интерфейс Cache Manager menu, где сможете изучать и анализировать
различные опции, связанные с прокси-сервером Squid. Если Вы решили использовать Squid как кэширующий прокси-сервер и позволять
всем пользователям использовать его для доступа в Интернет, Вы должны
настроить соответствующим образом браузеры пользователей, чтобы они брали
информацию со Squid, вместо прямого обращения в Интернет. Для Netscape выполните следующие шаги:
Глава 18. Серверное программное обеспечение (прокси-сервис)
Прокси-сервер Squid
Краткий обзор.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
Squid версии 2.3.STABLE2.
Домашняя страница Squid:
http://www.squid-cache.org,
FTP-сервер Squid: 204.144.128.89,
Вы должны скачать: squid-2.3.STABLE2-src.tar.gz.
Хорошей идеей будет создать список файлов, установленных в Вашей системе до
инсталляции Squid и после, в результате, с помощью утилиты diff, Вы сможете
узнать, какие файлы были установлены. Например, до инсталляции:
find /* > Squid1
find /* > Squid2
diff Squid1 Squid2 > Squid-Installed
[root@deep /]# cp squid-version.STABLEz-src.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf squid-version.STABLEz-src.tar.gz
Настройка и оптимизация
[root@deep /]# useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1
[root@deep /]# mkdir /cache/
[root@deep /]# chown -R squid.squid /cache/
DEFAULT_ICON_DIR = $(sysconfdir)/icons
Должна быть:
DEFAULT_ICON_DIR = $(libexecdir)/icons
DEFAULT_CACHE_LOG = $(localstatedir)/logs/cache.log
Должна быть:
DEFAULT_CACHE_LOG = $(localstatedir)/log/squid/cache.log
DEFAULT_ACCESS_LOG = $(localstatedir)/logs/access.log
Должна быть:
DEFAULT_ACCESS_LOG = $(localstatedir)/log/squid/access.log
DEFAULT_STORE_LOG = $(localstatedir)/logs/store.log
Должна быть:
DEFAULT_STORE_LOG = $(localstatedir)/log/squid/store.log
DEFAULT_PID_FILE = $(localstatedir)/logs/squid.pid
Должна быть:
DEFAULT_PID_FILE = $(localstatedir)/run/squid.pid
DEFAULT_SWAP_DIR = $(localstatedir)/cache
Должна быть:
DEFAULT_SWAP_DIR = /cache
DEFAULT_ICON_DIR = $(sysconfdir)/icons
Должна быть:
DEFAULT_ICON_DIR = $(libexecdir)/icons
Использование библиотеки GNU malloc для
улучшения производительности Squid
Домашняя страница GNU malloc:
http://www.gnu.org/order/ftp.html, Вы должны скачать: malloc.tar.gz.
[root@deep /]# cp malloc.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf malloc.tar.gz
[root@deep tmp]# cd malloc
[root@deep malloc]# export CC=egcs
[root@deep malloc]# make
[root@deep malloc]# cp libmalloc.a /usr/lib/libgnumalloc.a
[root@deep malloc]# cp malloc.h /usr/include/gnumalloc.h
Компиляция и оптимизация
CC="egcs"
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro |
-march=pentiumpro -fomit-frame-pointer -fno-exceptions"
./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/sbin \
--libexecdir=/usr/lib/squid --localstatedir=/var \
--sysconfdir=/etc/squid --enable-delay-pools \
--enable-cache-digests --enable-poll --disable-ident-lookups \
--enable-truncate --enable-heap-replacement
[root@deep squid-2.3.STABLE2]# make -f makefile
[root@deep squid-2.3.STABLE2]# make install
[root@deep squid-2.3.STABLE2]# mkdir -p /var/log/squid
[root@deep squid-2.3.STABLE2]# rm -rf /var/logs/
[root@deep squid-2.3.STABLE2]# chown squid.squid /var/log/squid/
[root@deep squid-2.3.STABLE2]# chmod 750 /var/log/squid/
[root@deep squid-2.3.STABLE2]# chmod 750 /cache/
[root@deep squid-2.3.STABLE2]# rm -f /usr/sbin/RunCache
[root@deep squid-2.3.STABLE2]# rm -f /usr/sbin/RunAccel
[root@deep squid-2.3.STABLE2]# strip /usr/sbin/squid
[root@deep squid-2.3.STABLE2]# strip /usr/sbin/client
[root@deep squid-2.3.STABLE2]# strip /usr/lib/squid/dnsserver
[root@deep squid-2.3.STABLE2]# strip /usr/lib/squid/unlinkd
[root@deep squid-2.3.STABLE2]# strip /usr/lib/squid/cachemgr.cgi
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf squid-version/ squid-version.STABLEz-src.tar.gz
[root@deep tmp]# rm -rf malloc/ malloc.tar.gz
(если Вы используете внешнюю библиотеку GNU malloc).
Конфигурации
Копируйте squid в каталог /etc/rc.d/init.d.
Копируйте squid в каталог /etc/logrotate.d.
Копируйте squid в каталог /etc/rc.d/init.d.
Копируйте squid в каталог /etc/logrotate.d.Конфигурация файла /etc/squid/squid.conf для режима httpd-акселератора
http_port 80
icp_port 0
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
cache_dir ufs /cache 200 16 256
emulate_httpd_log on
redirect_rewrites_host_header off
replacement_policy GDSF
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_mgr admin@openna.com
cache_effective_user squid
cache_effective_group squid
httpd_accel_host 208.164.186.3
httpd_accel_port 80
log_icp_queries off
cachemgr_passwd my-secret-pass all
buffered_logs on
Опция http_port определяет номер порта, на котором Squid слушает HTTP-запросы
клиентов. Если Вы установите его в 80, у клиента будет создаваться иллюзия,
что он соединяется с веб-сервером Apache. Так как мы запускаем Squid в режиме
акселератора, мы должны слушать 80 порт.
Опция icp_port определяет номер порта, на который Squid будет посылать и
принимать ICP-запросы от соседних кэшей. Мы должны установить эту опцию в
0, чтобы отключить эту возможность, так как мы настраиваем Squid для работы в
режиме акселератора для веб-сервера. Возможность ICP нужна только в
многоуровневых кэш-окружениях с несколькими братскими и родительскими кэшами.
Использование ICP в режиме акселератора будет добавлять нежелательные
издержки в работе Squid.
Опции acl QUERY urlpath_regex cgi-bin \? и no_cache deny QUERY используются
для того, чтобы некоторые объекты никогда не кэшировались, например, файлы из
каталога cgi-bin. Эта функция нужна для безопасности.
Опция cache_mem определяет количество памяти (RAM), используемое для
кэширования вызовов In-Transit objects, Hot Objects и Negative-Cached
objects. Это оптимизационная возможность. Важно заметить, что Squid может
использовать намного больше памяти, чем значение этого параметра, и из этих
соображений, если Вы имеете для Squid 48 MB, Вы должны
здесь выделить 48/3=16 MB.
Опция cache_dir определяет по порядку: тип используемой системы хранения
(ufs), имя каталога для кэша (/cache), объем дискового пространства,
выделяемый под этот каталог (200 Mbytes), число подкаталогов первого уровня,
создаваемых в каталоге кэша (16 Level-1), и число подкаталогов второго
уровня, создаваемых под каждым каталогом первого уровня (256 Level-2). В
режиме акселератора эта опция напрямую связана с размером и количеством
файлов, которое Вы хотите обслуживать Вашим веб-сервером Apache.
Опция emulate_httpd_log, если установлена в ON, определяет, что Squid должен
эмулировать формат файлов регистрации веб-сервера Apache. Это очень полезно,
если Вы хотите использовать программы третьих разработчиков, подобные
Webalizer, для анализа файлов регистрации веб-сервера (httpd).
Опция redirect_rewrites_host_header, если установлена в OFF, говорит Squid не
переписывать любые хосты: заголовки в перенаправленных пакетах. Здесь
рекомендуется установить значение OFF, если Вы запускаете
Squid в режиме акселератора.
Опция replacement_policy определяет политику кэша Squid, используемую для
определения, какие объекты в кэше должны быть заменены, когда прокси нужно
освободить дисковое пространство. Политика Squid LRU используется по
умолчанию, если во время компиляции не определили опцию
--enable-heap-replacement. В нашей конфигурации мы выбрали GDSF (Greedy-Dual
Size Frequency), как политику по умолчанию. Смотрите
http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html и
http://fog.hpl.external.hp.com/techreports/98/HPL-98-173.html
для большей информации.
Опции acl и http_access определяют списки доступа, применяемые на
прокси-сервере Squid. Наши acl и http_access не ограничивающие, они позволяют
всем соединяться с прокси-сервером, так как мы используем его для ускорения
работы публичного веб-сервера Apache. Смотрите документацию по Squid для
получения большей информации об использовании Squid в режиме кэширования.
Опция cache_mgr определяет почтовый адрес администратора, отвечающего за
работоспособность прокси-сервера Squid. Этот адресат будет получать почту,
если при работе Squid возникнут проблемы. Вы можете задать имя или
полный почтовый адрес.
Опции cache_effective_user и cache_effective_group определяют UID/GID, под
которыми будет запущен кэш. Не забудьте, никогда не запускайте Squid как
root. В нашей конфигурации мы используем UID squid и GID squid.
Опции httpd_accel_host и httpd_accel_port определяют IP-адрес и номер порта
реального HTTP-сервера (например, Apache). В нашей конфигурации реальный HTTP
веб-сервер имеет адрес 208.164.186.3 (www.openna.com) и порт (80).
www.openna.com это другой сервер в нашей сети, и так как прокси сервер Squid
не находится на одном компьютере с веб-сервером Apache, мы используем порт
80 для нашего прокси-сервера и порт 80 для веб-сервера Apache.
Опция log_icp_queries определяет, хотите ли Вы регистрировать ICP (ICP
используется для обмена информации о наличии в соседних кэшах URL) запросы в
файле access.log или нет. Так как мы не используем ICP в режиме акселератора,
мы можем спокойно установить ее в OFF.
Опция cachemgr_passwd определяет пароль, который будет требоваться для
доступа к операциям из утилиты cachemgr.cgi. Эта CGI-утилита создана для
запуска через веб-интерфейс и вывода статистических данных о конфигурации и
работе Squid. my-secret-pass задает пароль, который Вы выбрали, ключевое
слово all определяет, что он будет один и тот же для всех действий, доступных
из этой программы. Смотрите раздел "Утилита cachemgr.cgi", приведенный ниже в
этой главе, для получения большей информации.
Опция buffered_logs, если установлена в ON, может немного увеличить скорость
записи некоторых файлов регистрации. Это оптимизационная возможность.Конфигурация файла /etc/squid/squid.conf для режима кэширующего прокси
http_port 8080
icp_port 0
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
cache_dir ufs /cache 200 16 256
redirect_rewrites_host_header off
replacement_policy GDSF
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
cache_mgr admin@openna.com
cache_effective_user squid
cache_effective_group squid
log_icp_queries off
cachemgr_passwd my-secret-pass all
buffered_logs on
acl имя тип данные
| | | |
acl some-name src a.b.c.d/e.f.g.h # ACL на основе IP-адреса отправителя
acl some-name dst a.b.c.d/e.f.g.h # ACL на основе IP-адреса получателя
acl some-name srcdomain foo.com # ACL на основе имени домена отправителя
acl some-name dstdomain foo.com # ACL на основе имени домена назначения
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
Многоуровневое веб-кэширование
Настройка скрипта /etc/rc.d/init.d/squid для всех типов конфигураций
#!/bin/bash
# squid Этот скрипт отвечает за запуск и остановку
# Squid Internet Object Cache
#
# chkconfig: - 90 25
# описание: Squid Internet Object Cache. Internet object caching это путь
# для хранения запрошенных объектов из Интернет (например, данные,
# доступные через протоколы HTTP, FTP и gopher), на системах, находящихся
# ближе к требуемым серверам, чем организатор запроса. Веб-браузеры могут
# затем использовать локальный кэш как прокси HTTP-сервер, сокращая
# время доступа и сохраняя полосу пропускания.
# pid файл: /var/run/squid.pid
# конфигурационный файл: /etc/squid/squid.conf
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
# Библиотека исходных функций.
. /etc/rc.d/init.d/functions
# Исходная сетевая конфигурация.
. /etc/sysconfig/network
# Проверка, что сеть работает.
[ ${NETWORKING} = "no" ] && exit 0
# проверка наличия конфигурационного файла squid
[ -f /etc/squid/squid.conf ] || exit 0
# определения имени двоичного файла squid
[ -f /usr/sbin/squid ] && SQUID=squid
[ -z "$SQUID" ] && exit 0
# определения cache_swap каталога
CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \
grep cache_dir | sed -e 's/cache_dir//' | \
cut -d ' ' -f 2`
[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/cache
# опции squid по умолчанию
# -D отключение проверки dns при инициализации. Если Вы скорее всего
# не будете иметь соединения с Интернет во время старта squid,
# раскомментируйте это
#SQUID_OPTS="-D"
RETVAL=0
case "$1" in
start)
echo -n "Starting $SQUID: "
for adir in $CACHE_SWAP; do
if [ ! -d $adir/00 ]; then
echo -n "init_cache_dir $adir... "
$SQUID -z -F 2>/dev/null
fi
done
$SQUID $SQUID_OPTS &
RETVAL=$?
echo $SQUID
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID
;;
stop)
echo -n "Stopping $SQUID: "
$SQUID -k shutdown &
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/$SQUID
while : ; do
[ -f /var/run/squid.pid ] || break
sleep 2 && echo -n "."
done
echo "done"
else
echo
fi
;;
reload)
$SQUID $SQUID_OPTS -k reconfigure
exit $?
;;
restart)
$0 stop
$0 start
;;
status)
status $SQUID
$SQUID -k check
exit $?
;;
probe)
exit 0;
;;
*)
echo "Usage: $0 {start|stop|status|reload|restart}"
exit 1
esac
exit $RETVAL
[root@deep /]# chmod 700 /etc/rc.d/init.d/squid
[root@deep /]# chkconfig --add squid
[root@deep /]# chkconfig --level 345 squid on
[root@deep /]# /etc/rc.d/init.d/squid start
Starting squid: init_cache_dir ufs... squid
Конфигурация файла /etc/logrotate.d/squid
/var/log/squid/access.log
{
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}
/var/log/squid/cache.log
{
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}
/var/log/squid/store.log
{
weekly
rotate 5
copytruncate
compress
notifempty
missingok
# This script asks squid to rotate its logs on its own.
# Restarting squid is a long process and it is not worth
# doing it just to rotate logs
postrotate
/usr/sbin/squid -k rotate
endscript
}
Организация защиты Squid
Больший контроль над смонтированным кэш-каталогом Squid
/dev/sda8 /cache ext2 defaults 1 2
должна быть:
/dev/sda8 /cache ext2 noexec,nodev,nosuid 1 2
Иммунизация важных конфигурационных файлов
[root@deep /]# chattr +i /etc/squid/squid.conf
Оптимизация Squid
Атрибуты atime и noatime
Физическая память
Утилита cachemgr.cgi
[root@deep /]# mv /usr/lib/squid/cachemgr.cgi /home/httpd/cgi-bin
Конфигурация Netscape для работы с прокси-сервером Squid
Инсталлированные файлы
> /etc/squid
> /etc/squid/mib.txt
> /etc/squid/squid.conf.default
> /etc/squid/squid.conf
> /etc/squid/mime.conf.default
> /etc/squid/mime.conf
> /etc/squid/errors
> /etc/squid/errors/ERR_ACCESS_DENIED
> /etc/squid/errors/ERR_CACHE_ACCESS_DENIED
> /etc/squid/errors/ERR_CACHE_MGR_ACCESS_DENIED
> /etc/squid/errors/ERR_CANNOT_FORWARD
> /etc/squid/errors/ERR_CONNECT_FAIL
> /etc/squid/errors/ERR_DNS_FAIL
> /etc/squid/errors/ERR_FORWARDING_DENIED
> /etc/squid/errors/ERR_FTP_DISABLED
> /etc/squid/errors/ERR_FTP_FAILURE
> /etc/squid/errors/ERR_FTP_FORBIDDEN
> /etc/squid/errors/ERR_FTP_NOT_FOUND
> /etc/squid/errors/ERR_FTP_PUT_CREATED
> /etc/squid/errors/ERR_FTP_PUT_ERROR
> /etc/squid/errors/ERR_FTP_PUT_MODIFIED
> /etc/squid/errors/ERR_FTP_UNAVAILABLE
> /etc/squid/errors/ERR_INVALID_REQ
> /etc/squid/errors/ERR_INVALID_URL
> /etc/squid/errors/ERR_LIFETIME_EXP
> /etc/squid/errors/ERR_NO_RELAY
> /etc/squid/errors/ERR_ONLY_IF_CACHED_MISS
> /etc/squid/errors/ERR_READ_ERROR
> /etc/squid/errors/ERR_READ_TIMEOUT
> /etc/rc.d/rc4.d/S90squid
> /etc/rc.d/rc5.d/S90squid
> /etc/rc.d/rc6.d/K25squid
> /etc/logrotate.d/squid
> /usr/lib/squid
> /usr/lib/squid/dnsserver
> /usr/lib/squid/unlinkd
> /usr/lib/squid/cachemgr.cgi
> /usr/lib/squid/icons
> /usr/lib/squid/icons/anthony-binhex.gif
> /usr/lib/squid/icons/anthony-bomb.gif
> /usr/lib/squid/icons/anthony-box.gif
> /usr/lib/squid/icons/anthony-box2.gif
> /usr/lib/squid/icons/anthony-c.gif
> /usr/lib/squid/icons/anthony-compressed.gif
> /usr/lib/squid/icons/anthony-dir.gif
> /usr/lib/squid/icons/anthony-dirup.gif
> /usr/lib/squid/icons/anthony-dvi.gif
> /usr/lib/squid/icons/anthony-f.gif
> /usr/lib/squid/icons/anthony-image.gif
> /usr/lib/squid/icons/anthony-image2.gif
> /usr/lib/squid/icons/anthony-layout.gif
> /usr/lib/squid/icons/anthony-link.gif
> /usr/lib/squid/icons/anthony-movie.gif
> /usr/lib/squid/icons/anthony-pdf.gif
> /usr/lib/squid/icons/anthony-portal.gif
> /usr/lib/squid/icons/anthony-ps.gif
> /usr/lib/squid/icons/anthony-quill.gif
> /usr/lib/squid/icons/anthony-script.gif
> /etc/squid/errors/ERR_SHUTTING_DOWN
> /etc/squid/errors/ERR_SOCKET_FAILURE
> /etc/squid/errors/ERR_TOO_BIG
> /etc/squid/errors/ERR_UNSUP_REQ
> /etc/squid/errors/ERR_URN_RESOLVE
> /etc/squid/errors/ERR_WRITE_ERROR
> /etc/squid/errors/ERR_ZERO_SIZE_OBJECT
> /etc/rc.d/init.d/squid
> /etc/rc.d/rc0.d/K25squid
> /etc/rc.d/rc1.d/K25squid
> /etc/rc.d/rc2.d/K25squid
> /etc/rc.d/rc3.d/S90squid
> /usr/lib/squid/icons/anthony-sound.gif
> /usr/lib/squid/icons/anthony-tar.gif
> /usr/lib/squid/icons/anthony-tex.gif
> /usr/lib/squid/icons/anthony-text.gif
> /usr/lib/squid/icons/anthony-unknown.gif
> /usr/lib/squid/icons/anthony-xbm.gif
> /usr/lib/squid/icons/anthony-xpm.gif
> /usr/sbin/RunCache
> /usr/sbin/RunAccel
> /usr/sbin/squid
> /usr/sbin/client
> /var/log/squid
Найди своих коллег! |