Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 82
Текст из файла (страница 82)
Формат файла squid, con fВ файле squid.conf задаются всевозможные параметры конфигурациипрокси-сервера. Давайте рассмотрим их все по-порядку.15.5.1. Параметры сетиПорт для запросов клиентов (см. рис. 15.1): http_port 3128ГИПЩ•ЗГИ)Рис. 15.1. Параметры прокси-сервераЕсли «соседей» (peer) нет, то установите icp_port Оicp_port 3130Порт для общения с соседями —ICP — через TCP.
При использованииэтого параметра нужно установитьключ —enable-htcp при установкеhtcp_port 4827.Следующий параметр указывает,по какому адресу нужно приниматьвходящие пакеты, если хост имеетнесколько интерфейсов. В версии2.3 этого параметра нет:tcp_incoming_address 0 . 0 . 0 . 0При отправлении информацииуказанный адрес будет использованв качестве исходного:tcp_outgoing_address 0 . 0 . 0 . 0То же, но для ICP:udp_outgoing_address 0 . 0 .
0 . 0 (аналогично, для ICP)То же, но для 1СР'Хпри приеме):udp_incoming_address 0 . 0 . 0 . 0По умолчанию этот режим включен, но если прокси-сервер находится забастионом (firewall), то параметр passive_ftp нужно выключить:passive_ftp on | o f f15.5.2. Параметры соседейОписание соседей производится строками следующего формата:cache_peer hostname type proxy-port icp-port optionsгде: hostnameимя соседа;typeтип соседа: parent — старший, sibling — одного уровня;proxy-portпорт прокси-сервера;icp-portпорт ICP;optionsпараметры.,При этом каждый сосед прописывается отдельной строкой.Parent — при отсутствии запроса в локальном кэше он перенаправляется кparent; тот, если запроса не окажется в его кэше, пересылает его дальше и350Прокси-сервер SQUIDт.д.
Возвращает готовый ответ подчиненному. Если squid получаетTCP^DENIED от parent, то обращение к ресурсу будет идти напрямую.Sibling — при отсутствии запроса в локальном кэше, запрос перенаправляется вsibling; при отсутствии запроса в нем, возвращает сообщение об этом,никаких дополнительных действий не предпринимается.15.5.3. Управление кэшемcache_swap_highчислоПри достижении этого уровня заполнения кэша (в процентном соотношении) начинается ускоренный процесс удаления старых объектов.cache_swap_low 90Процесс удаления прекращается при достижении этого уровня.maximum_object_size 4 0 9 6 KBМаксимальный размер кэшируемого объекта.minimum_object_size О KBФайлы меньшего размера не сохраняются.15.5.4.
ПротоколированиеНиже перечислены режимы протоколирования SQUID с указанием соответствующих журналов. Если какой-то журнал вам не нужен, установитепопе вместо имени файла.cache_access_log / u s r / l o c a l / s q u i d / l o g s / a c c e s s . l o gПротоколируется каждый запрос к SQUID. Журнал называется/usr/local/squid/logs/access.log.cache_log / u s r / l o c a l / s q u i d / l o g s / c a c h e . l o gПротоколируются запуски процессов. Журнал называется / u s r / l o c a l/squid/logs/cache.log.cache_store_log /usr/local/squid/logs/store.logПротоколируются записи объектов в кэш.
Журнал называется/usr/local/squid/logs/store.log.15.5.5. Параметры внешних программftp_user email-адресУказанный здесь email будет использоваться вместо пароля при анонимном доступе к ftp-серверам.dns_nameservers список IP-адресовЗначение данного параметра используется вместо того списка DNS-серверов, который определен в файле /etc/resolv.conf; по умолчанию — попе.cache_dns_program / u s r / l o c a l / s q u i d / b i n / d n s s e r v e rДанный параметр задает программу разрешения IP-адресов в имена(сервер DNS).351Прокси-сервер SQUIDauthenticate_program noneПозволяет производить аутентификацию клиентов, делающих запросы.При этом должен быть определен ACL proxy_auth.authenticate_jprogram / u s r / l o c a l / s q u i d / b i n / n c s a _ a u t h / u s r / l o c a l /squid/etc/passwdТрадиционная программа а у т е н т и ф и к а ц и и . О п р е д е л е н а в../auth_modules/NCSA.15.5.6.
Списки ACLACL (Access Control Lists) — списки контроля доступа. Довольно частовозникает потребность группировки однотипных параметров в единое целоедля их последующей обработки. Для эффективного решения этой задачииспользуются списки контроля доступом (ACL). Например:acl SSL_ports port 4-43 563Эта запись означает, что создается список SSL_ports типа port. Элементами списка являются номера портов 443 и 563.Добавить новый элемент к уже существующему списку (параметр add)можно так:acl add SSL_ports port 999Удалить ненужный элемент можно с помощью параметра del:acl del SSL_ports 999Переименовать список позволяет параметр геп (от rename):acl ren SSL_ports Allowed_portsУдалить все списки вместе с их содержимым позволяет параметр flush:acl f l u s hСтандарт ACL требует, чтобы перед именем списка обязательно былуказан символ $.
Другими словами, все перечисленные выше примеры побольшому счету должны быть неправильными. Например, для созданиясписка нужно использовать запись:acl $SSL_ports port 4 4 3 563Однако большинство фильтров, например SQUID, пренебрегают этимтребованием, и вы можете указывать имена списков без знака доллара.Итак, ACL — это определение списка доступа. Имеет следующий формат:acl имя тип строкагде: тип — это тип объекта;строка — регулярное выражение.Можно использовать список:acl имя тип имя_файлаПеречисление параметров производится по одному параметру в строке.Типы, которые можно использовать при составлении списков ACL, указаныв табл. 15.3.352Прокси-сервер SQUIDТипы ACLТаблица 15.3ТипОписание типаSrc ip-address/netmaskSrc addr1-addr2/netmaskDst ip-address/netmaskЗадает IP-адрес клиентовУказывает диапазон адресовЗадает URL хостовTime [day-abbrevs] [h1:m1-h2:m2]PortPort port1-port2Время, где день — это одна буква из SMTWHFAСписок портовProtoMethodBrowser [-i] regexpДиапазон портовПротокол — HTTP или FTPМетод — GET или POSTСравнивается заголовок User-Agent[-i] — игнорируется регистр букв.15.5.7.
Параметры доступаhttp_access allow|deny aclnameРазрешать доступ к прокси по HTTP.icp_access a l l o w ! d e n y aclnameРазрешать доступ к прокси по ICP.miss_access a l l o w [ d e n y aclnameРазрешить получать ответ MISS от вас.cache_peer_access cache-host a l l o w ] d e n y aclnameОграничить запросы к данному соседу — расширение для cache_peer_domain.proxy_auth_realm Squid proxy-caching web serverСтрока текста, которая будет выдана на экран клиента при запросеимени/пароля доступа к кешу.15.5.8. Параметры администрированияcachejmgr emailДанный параметр задает почтовый адрес, на который будет посланописьмо, если squid перестанет функционировать.cache_effective_user nobodyПри запуске SQUID от имени root изменить UID на указанный впараметре cache_effective_user.cache_effective_groupnogroupПри запуске SQUID от имени root изменить GID на указанный впараметре cache_effective_group.visible_hostname имя_хостаЭто имя будет упоминаться в сообщениях об ошибках.hostname_aliases имяЭтот параметр задает список синонимов для имени хоста.12 Змс.
851353Прокси-сервер SQUID15.6. Отказ от рекламы. Баннерный фильтрВам не хочется тратить лишнее время на загрузку рекламных баннеров?Мне тоже. К счастью, SQUID позволяет достаточно просто решить этупроблему. Просто вставьте следующие строки в свой файл /usr/local/etc/squid/squid.conf:acl good_urlurl_regex"/usr/local/etc/squid/acl/good_url"acl bad_urlpath urlpath_regex "/usr/local/etc/squid/acl/bad_urlpath"acl bad_urlurl_regex"/usr/local/etc/squid/acl/bad_url"http_access deny bad_urlpath !good_urlhttp_access deny bad_url!good_urlСоответственно, нужно будет создать три файла:good_url,bad__url_path и bad_url.
В файл bad_url следует поместить «плохие»URL, например: Ahttp://.*doubleclick/4h t t p : / / . * - a d . f lycast . c o m / s e r v e r / i m g /http: / / 1 0 0 0 . stars . r u / c g i - b i n / 1 0 0 0 . cgiAhttp://1000.stars.ru/cgi-bin/1000.cgiAhttp://12.16.1.10/~web_ani//4А в файл bad_url_path — «плохой» путь, например:88x31.*gif88x31.*GIF100x80.*gif100x80.*GIF100x100.*gif100x100.*GIF120x60.*gif120x60.*GIF179x69.*gif193x72.*gif468x60.*gifОбычно такие имена имеют баннеры.Примеры файлов good_url, bad_url_path и bad_url можно взять намоей домашней страничке — http://dkws.narod.ru15.7.
Разделение каналаДопустим, вам нужно настроить прокси-сервер таким образом, чтобыодна группа компьютеров могла работать с одной скоростью, а другая — сдругой. Это может потребоваться, например, для разграничения пользователей, которые используют канал для работы, и пользователей, которые используют ресурсы канала в домашних целях. Естественно, первым пропускная способность канала важнее, чем вторым. С помощью прокси-сервераSQUID можно разделить канал.354Прокси-сервер SQUIDДля начала в файле конфигурации укажите, сколько пулов, то есть групппользователей, у вас будет:delay_pools 2Затем определите классы пулов. Всего существует три класса:1. Используется одно ограничение пропускной способности канала на всех.2. Одно общее ограничение и 255 отдельных для каждого узла сети класса С.3.
Для каждой подсети класса В будет использовано собственное ограничение иотдельное ограничение для каждого узла.В файл squid.conf добавьте следующие директивы:delay_class 1 1 # определяет первый пул класса 1 для домашних пользователейdelay_class 2 2 # определяет второй пул класса 2 для служащихТеперь задайте узлы, которые будут относиться к пулам:acl home src адресаacl workers src адресаdelay_access 1 allow homedelay_access 1 deny alldelay_access 2 a l l o w w o r k e r sdelay_access 2 deny allЗатем укажите ограничения:delay_parameters I 1 4 4 0 0 / 1 4 4 0 0delay_parameters 2 3 3 6 0 0 / 3 3 6 0 0 16800/33600Как я уже отмечал выше, для пула класса 1 используется одно ограничение для всех компьютеров, входящих в пул — 14400 байт. Первое числозадает скорость заполнения для всего пула (байт/секунду).
Второе — максимальное ограничение.Для пула класса 2, соответственно, используются ограничения на всюподсеть и отдельно на каждого пользователя. Если бы у нас был определенпул класса 3, то для него ограничения выглядели примерно так:delay_parameters 3 1 2 8 0 0 0 / 1 2 8 0 0 0 6 4 0 0 0 / 1 2 8 0 0 0 1 2 8 0 0 / 6 4 0 0 0Первые два числа задают соответственно скорость заполнения и максимальное ограничение для всех. Следующая пара чисел определяет скоростьзаполнения для каждой подсети и максимальное ограничение, а третья —скорость заполнения и максимальное ограничение для индивидуальногопользователя.15.8. Программы для учета трафикаДля мониторинга работы SQUID и вообще для учета трафика можновоспользоваться следующими программами:sqmgrloghttp://www.ineparnet.com.br/orso/index.htmlmrtghttp://www.switch.ch/misc/leinen/snmp/perl/iptrafhttp://dkws.narod.ra^inux/soft/iptraf-2.4.0.tar.gzbandminhttp://www.bandmin.orgwebalizer (анализ работы Apache) ....
http://www.mrunix.net/webalizer/355Прокси-сервер SQUIDВместе с данными программами поставляется довольно читаемая документация, поэтому подробно на их использовании я останавливаться небуду. Программа MRTG описана в п. 8.5.15.9. Настройка клиентовПосле того, как вы настроили прокси-сервер, давайте займемся настройкой клиентов, то есть браузеров пользователя. Я не сомневаюсь, что вызнаете, как настраивать тот или иной браузер, я лишь напомню процедурунастройки для некоторых распостраненных браузеров.Internet Explorer 5Меню Сервис -» Свойстваобозревателя -> вкладка Подключение —> Настройка сети. Впоявившемся окне установитенеобходимые параметры, тоесть имя прокси-сервера и егопорт (см. рис. 15.2).Настройка локальной сети.•wsr,^^^*?« ПрокеиИсЦдьзивзть проксьIIРис.