 | Внедрение прокси-сервера
Установка и запуск Squid
В большей части дистрибутивов, Squid может быть установлен при помощи стандартных установочных процедур. Возьмите исходные файлы Squid с web-сайта Squid Web Proxy Cache (ссылку можно найти в Resources). Сборка из исходников требует обычной последовательности действий ./configure; make; make install.
После установки можно просто запустить от имени root /usr/sbin/squid (но squid может оказаться в каком-нибудь другом каталоге, который использует ваш дистрибутив, возможно /usr/local/sbin/). Конечно, чтобы заставить его делать что-то полезное, вам придётся отредактировать файл конфигурации Squid /etc/squid/squid.conf, /usr/local/squid/etc/squid.conf, или где там у вас в системе находится squid.conf. Как и для многих других демонов, можно использовать различные файлы конфигурации, с помощью опции -f.
Порты, IP-адресы, http_access, и ACLи
Наиболее важными опциями конфигурации Squid являются http_port. Если захотеть, то можно наблюдать за этими портами, закрепляя за каждым из них определенный IP-адрес или имя хоста. Порт для Squid, выставленный по умолчанию, 3128, при этом все IP-адреса, что подключаются к серверу Squid, имеют права на его использование. Чтобы кэшировать только для LAN, укажите вместо этого локальный IP-адрес, как показано ниже:
Listing 11. Кэширование Squid только для LAN
# default (disabled)
# http_port 3128
# LAN only
http_port 192.168.2.2:3128
|
Также можно включить кэширование через другие Squid-серверы, с помощью
icp_port и htcp_port. Протоколы IPC и HTCP используются, чтобы кэши взаимодействовали друг с другом, а не с web-серверами или клиентами. Для группового кэширования используется mcast_groups.
Чтобы клиенты могли подключиться к серверу Squid, нужно раздать им соответствующие разрешения. В отличие от web-сервера, Squid не сильно щепетилен со своими ресурсами. В простой ситуации для контроля за правами доступа можно просто использовать пару подсеть/маска сети или шаблоны CIDR (Classless Internet Domain Routing):
Listing 12. Простые права доступа Squid
http_access deny 10.0.1.0/255.255.255.0
http_access allow 10.0.0.0/8
icp_access allow 10.0.0.0/8
|
Директива acl используется для обозначения списков контроля доступа (ACLs). Можно назвать src ACL, что просто указывают диапазоны адресов, как в Listing 12, но можно также создавать и свои типы ACLей. Например:
Listing 13. Тонкая настройка права доступа
acl mynetwork src 192.168/16
acl asp urlpath_regex \.asp$
acl bad_ports port 70 873
acl javascript rep_mime_type -i ^application/x-javascript$
# what HTTP access to allow classes
http_access deny asp # don't cache active server pages
http_access deny bad_ports # don't cache gopher or rsync
http_access deny javascript # don't cache javascript content
http_access allow mynetwork # allow LAN everything not denied
|
Listing 13 показывает только малый набор доступных типов ACL. Образец файла squid.conf содержит много других примеров. Или же взгляните в документацию по контролю доступа (Глава 6) в Руководстве Пользователя Squid (ссылку можно увидеть в Resources).
В Listing 13, принято решение не кэшировать URL, заканчивающиеся на .asp (возможно, они имеют динамическое содержимое), на кэшировать порты 70 и 873, и не кэшировать возвращаемые объекты JavaScript. И, если это не запрещено другими правилами, машины внутри LAN (в диапазоне /16) будут пользоваться кешированием своих запросов. Обратите внимание, что каждый заданный ACL имеет уникальное, хотя и произвольное, имя (используйте осмысленные имена; Squid их не резервирует).
Режимы кэширования
Простейший способ запуска Squid -- это режим прокси. Если это так, клиентов нужно явно настраивать на использование кэша. Клиенты web-браузеры имеют специальные окна настойки, позволяющие указывать адрес прокси и порт, вместо прямого HTTP-соединения. При таком способе настойка Squid очень проста, однако клиентам, если они хотят использовать выгоду от кэша Squid, следует выполнить немного настроек самим.
Также можно настроить Squid на выполнение в качестве прозрачного кэша. Для этого нужно либо настроить марщрутизацию, основанную на политике безопасности ( извне Squid, с помощью ipchains или ipfilter), либо использовать сервер Squid в качестве шлюза. Полагая, что вы можете, направлять внешние запросы через сервер Squid, Squid следует настраивать следующим образом. Может случиться, что вам придется перекомпилировать Squid с опцией --enable-ipf-transparent; однако для большинства дистрибутивов Linux этого не потребуется. Для настройки сервера на прозрачное кэширование (по мере того, как он получит перенаправленные пакеты), нужно добавить в файл squid.conf что-нибудь вроде представленного в Listing 14:
Listing 14. Настройка Squid на прозрачное кэширование
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
|
|  |