Proxy-сервер squid, характеристики, особенности принцип действия

Вид материалаДокументы
Подобный материал:

  1. Proxy-сервер SQUID, характеристики, особенности принцип действия.

SQUID мощный и быстрый объектный сервер кэш. Он обрабатывает HTTP, FTP, gopher, SSL и WAIS proxy, кэширующие запросы. Также кэширует DNS. Но прокси только пишет и читает файлы в кэш-каталоге, что делает его безопасным. Squid работает как не-root пользователь (обычно 'nobody'), так что он довольно надежен. Основная его трудность заключается в правильной настройке. Самое лучшее, это настроить Squid на обслуживание только внутренних систем, чтобы снаружи никто не мог его использовать. К тому же, не помешает firewall. Squid может также использовать как ускоритель HTTP.

Схема работы: после получения запроса от клиента, определяется источник объекта, посылающие аср-запросы соседям; если данного объекта нет, то запрос посылается на родительский объект, если и там информации нет, то обращение идет к первоисточнику (так называемая иерархия прокси). Передается запрос с помощью функций GET и POST.

Установка Squid: Squid надо ставить из packages или ports, тогда есть уверенность, что все его компоненты разложатся по нужным директориям, как это принято именно во FreeBSD. Должно получиться примерно следующее:
    1. Бинарники лежат в /usr/local/sbinа;
    2. В /usr/local/etc появилась директория squid, в которой лежит squid.conf -это как раз его конфиг-файл, его надо будет подправлять.
    3. В /usr/local/etc/rc.d появился файлик squid.sh - это основная запускалка (дело в том, что система при старте просматривает этот каталог, и все, что найдет там типа *.sh запустит автоматом). Но можно его запустить и вручную просто ./squid.sh. Если такого файла нет, то при перезагрузке squid не будет запускаться.
      4. В /usr/local образовалась директория squid, в которой две поддиректории cache - там будет его кэш и logs - логи. Там же должен быть файлик (возможно, он появится после первого запуска) squid.out - это основной лог, в котором и будут сообщения об ошибках, если squid почему-либо не сможет стартовать нормально.

      Если что-то из вышеописанного лежит не там, то надо будет найти.

      Для начала squid.conf можно не сильно не копать. Там стоят значения "по умолчанию", они вполне приемлемы. Единственное - определится, сколько мегабайт диска вы согласны выделить под кэш. По умолчанию 100 МB. Если у Вас напряженка с дисковым пространством, или наоборот, переизбыток, то найдите в squid.conf строчку: cache_swap 100 и поставьте подходящее значение (если строчка закомментирована знаком '#' в начале - раскомментируйте). Максимальный объем можно оценочно определить как объем, который можно прокачать по Вашей линии к провайдеру за сутки.

Формат squid.conf: (даны некоторые параметры данного конфигурационного файла и краткое описание):

сетевые параметры
o http_port 3128 (порт для запросов клиентов);

o https_port порт (обработка SSL/TLS запросов в режиме акселерации; в качестве опций указывается файл с сертификатом, приватный ключ, версия SSL/TLS, тип шифрования);
o icp_port 3130 (если соседей не ожидается, то поставить "icp_port 0");
o htcp_port 4827 (порт для общения с соседями - ICP - через TCP, нужен "--enable-htcp" в configure, иначе его нельзя устанавливать даже в 0);
o tcp_incoming_address 0.0.0.0 (по какому адресу принимать входные пакеты, если хост имеет несколько интерфейсов).


размер кеша
o cache_mem 8 MB (объем оперативной памяти, используемой для хранения обрабатываемых объектов; если требуется, то этот лимит может быть слегка превышен; если осталось свободное место, то оно используется для хранения наиболее часто используемых объектов отрицательных ответов;

o cache_swap_high 95 (при достижении данного уровня заполнения кеша - в процентах - начинается ускоренный процесс удаления старых объектов; для большого кеша эти границы надо поднять, 5% от 8 GB - это 400 MB!);
o cache_swap_low 90 (процесс удаления старых объектов заканчивается, если достигнут данный уровень);
o maximum_object_size 4096 KB (максимальный размер кешируемого объекта; если его увеличишь, то сэкономишь трафик, если уменьшишь, то странички быстрее грузиться будут - хотя можно просто увеличить размер кеша; максимальный размер объекта, который удалось за раз скачать по модему - 8 MB);
o minimum_object_size 0 KB (файлы меньшего размера не сохраняются); maximum_object_size_in_memory 8 KB
o ipcache_size 1024 (размер кеша для IP адресов)
o ipcache_high 95 и ipcache_low 90 (верхний и нижний уровень заполнения IP кеша для алгоритма удаления старых объектов по LRU)
o fqdncache_size 1024 (размер кеша fqdn - полных доменных имен).

имена и размеры файлов
o cache_dir тип имя-директории Mbytes Level-1 Level2[read-only] [max-size=число] (определяет имя, размер и количество поддиректорий на первом и втором уровне кеша на диске - каждый кешируемый объект кладется в отдельный файл, файлы не сваливаются в одно место, а разносятся в двухуровневой иерархии директорий; можно иметь несколько директорий под кеш - особенно полезно иметь их на разных дисках; эксперимент показал, что при кэше в 700 МБ используется только 2 директории первого уровня; при стандартной структуре директорий кеша в него "с комфортом" влезает миллион объектов (9 GB), если их больше, то надо увеличить число директорий верхнего уровня; тип кеша указывается начиная с версии 2.3: ufs (unix file system), aufs (async ufs), diskd (внешние процессы для избежания блокировки squid на дисковом вводе/выводе); директорию верхнего уровня надо создавать самому; поддиректории создаются командой squid -z);
o cache_access_log /usr/local/squid/logs/access.log (журнализируется каждый запрос к кешу);
o cache_log /usr/local/squid/logs/cache.log (журнал запусков процессов);
o cache_store_log /usr/local/squid/logs/store.log (журнал записи объектов в дисковый кеш);
o log_fqdn off (определять и записывать в журнал полные доменные имена источника запроса, вносит дополнительную задержку в обработку запроса);
o client_netmask 255.255.255.255 (при записи в журнал можно обнулять некоторые биты IP-адреса, чтоб защитить частную жизнь клиента).

параметры внешних программ
o ftp_user email-адрес (будет подставляться вместо пароля при анонимном доступе к ftp-серверам; по умолчанию - Squid@, что вызывает проблемы с серверами, которые проверяют синтаксис адреса)

o dns_nameservers список-IP-адресов (будет использоваться вместо того списка DNS-серверов, который опреден в /etc/resolv.conf; по умолчанию - none)
o hosts_file /etc/hosts
o redirect_program none (позволяет подключить программу преобразования URL при каждом запросе; запускается при запуске самого squid и висит в ожидании очередной строки; см.);
o redirect_children 5 (сколько процессов преобразования запускать параллельно);
o authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd authenticate_children 5 (сколько параллельных процессов будут заниматься аутентификацией);
o authenticate_ttl 3600 (сколько секунд кешировать результаты работ программы аутентификации);
o authenticate_ip_ttl 0 (чтобы с нескольких мест не пользовались одним именем).