Proxy-сервер SQUID, характеристики, особенности принцип действия. SQUID мощный и быстрый объектный сервер кэш. Он обрабатывает HTTP, FTP, gopher, SSL и WAIS proxy, кэширующие запросы. Также кэширует DNS. Но прокси только пишет и читает файлы в кэш-каталоге, что делает его безопасным. Squid работает как не-root пользователь (обычно 'nobody'), так что он довольно надежен. Основная его трудность заключается в правильной настройке. Самое лучшее, это настроить Squid на обслуживание только внутренних систем, чтобы снаружи никто не мог его использовать. К тому же, не помешает firewall. Squid может также использовать как ускоритель HTTP. Схема работы: после получения запроса от клиента, определяется источник объекта, посылающие аср-запросы соседям; если данного объекта нет, то запрос посылается на родительский объект, если и там информации нет, то обращение идет к первоисточнику (так называемая иерархия прокси). Передается запрос с помощью функций GET и POST. Установка Squid: Squid надо ставить из packages или ports, тогда есть уверенность, что все его компоненты разложатся по нужным директориям, как это принято именно во FreeBSD. Должно получиться примерно следующее: Бинарники лежат в /usr/local/sbinа;В /usr/local/etc появилась директория squid, в которой лежит squid.conf -это как раз его конфиг-файл, его надо будет подправлять. В /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 (чтобы с нескольких мест не пользовались одним именем).