Squid настраиваем контроль доступа и оптимизируем кэш. Squid оптимизация


Настройка Squid для начинающих. Как настроить на Squid прокси-сервер

Squid — распространенное в среде программистов, системных администраторов и энтузиастов компьютерных сетей решение для создания эффективного прокси-сервера и управления им. Программа особенно привлекательна тем, что она кроссплатформенная. То есть устанавливать и запускать ее можно как в Linux и иных ОС, соответствующих архитектуре Unix, так и в Windows. Возможности данного инструмента — самые выдающиеся. Каким образом их можно задействовать? Есть ли особенности в настройке программы в зависимости от конкретной ОС?

Общие сведения о Squid

Что такое Squid? Под этим названием известен особо производительный прокси-сервер, используемый чаще всего с веб-клиентами. С его помощью можно организовывать одновременный доступ к Интернету для нескольких пользователей. Другое примечательное свойство Squid заключается в том, что он может кэшировать различные запросы. Это позволяет ускорять получение файлов, так как повторно скачивать их из Интернета не нужно. Прокси-сервер Squid также может регулировать скорость интернет-канала при соотнесении ее с фактической нагрузкой.

Squid адаптирован для использования на Unix-платформах. Однако есть версии Squid для Windows и многих других популярных ОС. Данная программа, так же как и многие операционные системы, основанные на концепции Unix, бесплатна. Она поддерживает протоколы HTTP, FTP, SSL, позволяет настраивать гибкий контроль над доступом к файлам. Squid также записывает в кэш DNS-запросы. При этом можно настроить и прозрачный Squid-прокси, то есть работу сервера в формате, когда пользователь не знает, что обращается к Сети через него, а не напрямую. Таким образом, Squid — это мощный инструмент в руках системного администратора или поставщика коммуникационных услуг.

Практическая полезность Squid

В каких случаях Squid может быть наиболее полезным? Например, это может быть задача, при которой необходимо осуществить эффективную интеграцию нескольких компьютеров в сеть и обеспечить для них доступ в Интернет. Целесообразность использования прокси-сервера в данном случае заключается в том, что запросы между ним и браузером конкретного ПК осуществляются быстрее, чем в случае взаимодействия пользователя с Интернетом напрямую. Также при использовании Squid кэш в самом браузере можно отключить совсем. Подобная функция очень востребована в среде пользователей.

Состав Squid

Решение, о котором идет речь, состоит из нескольких компонентов. Фактически это пакет программного обеспечения. В его структуре — приложение, с помощью которого запускается сервер, а также дополняющая его программа для работы с DNS. Интересная ее особенность состоит в том, что она запускает процессы, каждый из которых функционирует независимо от других. Это позволяет оптимизировать взаимодействие сервера с DNS.

Установка программы

Установка Squid обычно никаких сложностей не вызывает. Очень легко ставится программа на Linux: достаточно ввести команду $ sudo apt-get install squid.

Что касается Squid для Windows, здесь все немного сложнее. Дело в том, что данная программа не имеет исполняемых файлов — основных элементов приложений для ОС от Microsoft.

Однако установка Squid на Windows — задача, решаемая вполне оперативно. Необходимо найти на сайте squid-cache.org или релевантных ему ресурсах дистрибутив, содержащий файлы типа .bat, которые в чем-то близки традиционным для Windows исполняемым. После этого следует скопировать их в отдельную папку на диске. Затем необходимо запустить Squid в качестве системной службы. После этого программу можно использовать как прокси через браузер ПК. Можно сказать, что на этом установка Squid завершена.

В дистрибутиве прокси-сервера практически всегда содержится конфигурационный файл типа .conf. Он является главным инструментом настройки доступа к Интернету с компьютера пользователя и иных устройств, объединенных в локальную сеть при задействовании Squid.

Нюансы настройки

Какие нюансы может включать в себя настройка Squid? Windows — это операционная система, в которой работа с прокси-сервером будет осуществляться посредством редактирования конфигурационных файлов.

В случае с Linux можно задействовать командную строку для некоторых процедур. Но в целом в данной операционной системе, так же как и в том случае, если ОС, в которой ведется настройка Squid, — Windows, чаще всего задействуется файл squid.conf. В нем прописываются определенные выражения («команды»), в соответствии с которыми сервер выполняет управление подключениями к сети.

Рассмотрим, таким образом, как осуществляется настройка Squid, подробнее. Первым делом необходимо разрешить пользователям сети доступ к серверу. Для этого следует выставить в файле squid.conf соответствующие значения в http_port, а также в http_access. Также полезно будет создать список, предназначенный для контроля доступа, или ACL. Настройки http_port имеют для нас значение, так как наша задача — подготовить Squid только для обслуживания конкретной группы компьютеров. В свою очередь, такой параметр, как http_access, важен, так как с помощью него мы сможем регулировать доступ к конкретным ресурсам Сети, запрашиваемым с тех или иных адресов (возможны и иные критерии — протоколы, порты и иные свойства, содержащиеся в ACL).

Каким образом выставить необходимые настройки? Сделать это очень просто.

Допустим, мы создали компьютерную сеть с диапазоном адресов, начинающимся с 192.168.0.1 и заканчивающимся 192.168.0.254. В этом случае в ACL-настройках следует выставить следующий параметр: src 192.168.0.0/24. Если нам нужно настроить порт, то в файле конфигурации надо сделать запись http_port 192.168.0.1 (только следует указать правильный IP-адрес) и ввести номер порта.

Для того чтобы ограничить доступ к создаваемому с помощью Squid прокси (не считая компьютеров, входящих в локальную сеть), необходимо внести изменения в http_access. Это делается просто — с помощью выражений («команд» - условимся называть их так, хотя, строго говоря, в тексте они таковыми не являются, но в строке терминала вполне соответствовали бы им) allow LocalNet и deny all. Очень важно расположить первый параметр выше второго, так как Squid распознает их по очереди.

Работа с ACL: запрет доступа к сайтам

Собственно, настройки доступа возможны в Squid в очень широком спектре. Рассмотрим примеры полезных в практике управления локальными сетями.

Достаточно востребован элемент src. С его помощью можно зафиксировать IP-адрес компьютера, который осуществил запрос к прокси-серверу. Сочетая элемент src с http_access можно, например, разрешать доступ к сети конкретному пользователю, но запрещать аналогичные действия для всех остальных. Это делается очень просто.

Пишем ACL (название группы пользователей) src (интервал IP-адресов, попадающих под регулирование). Строчкой ниже — ACL (название конкретного компьютера) src (IP-адрес соответствующего ПК). После этого работаем уже с http_access. Устанавливаем разрешение на вход в сеть для группы пользователей и отдельного ПК посредством команд http_access allow. Строчкой ниже фиксируем, что доступ остальным компьютерам в сеть закрыт командой deny all.

Настройка прокси Squid также предполагает задействование другого полезного элемента, предусмотренного системой контроля доступа, — dst. Он позволяет зафиксировать IP-адрес сервера, к которому желает подключиться пользователь прокси.

С помощью рассматриваемого элемента мы можем, например, ограничить доступ к той или иной подсети. Для этого можно задействовать команду ACL (обозначение сети) dst (IP-адрес подсети), строчкой ниже — http_access deny (имя конкретного компьютера в сети).

Еще один полезный элемент — dstdomain. Он позволит нам зафиксировать домен, к которому желает подключиться пользователь. Задействуя рассматриваемый элемент, мы можем ограничить доступ того или иного пользователя, например, к внешним ресурсам Интернета. Для этого можно задействовать команду: ACL (группа сайтов) dstdomain (адреса сайтов), строчкой ниже — http_access deny (имя компьютера в сети).

Есть и иные примечательные элементы в структуре системы контроля доступа. В числе таковых — SitesRegex. С помощью данного выражения можно ограничить доступ пользователей на интернет-домены, содержащие определенное слово, например mail (если стоит задача запретить сотрудникам компании обращаться на сторонние почтовые серверы). Для этого можно задействовать команду ACL SitesRegexMail dstdom_regex mail, затем ACL SitesRegexComNet dstdom_regex \.com$ (это значит, что доступ будет закрыт для соответствующего типа доменов). Строчкой ниже — http_accesss deny с указанием компьютеров, с которых выход на внешние почтовые сервера нежелателен.

В некоторых выражениях может использоваться ключ -i. С помощью него, а также такого элемента, как, например, url_regex, предназначенного для создания шаблона для веб-адресов, мы можем запретить доступ к файлам с заданным расширением.

Например, с помощью команды ACL NoSwfFromMail url_regex -i mail.*\.swf$ мы регулируем возможность обращения к почтовым сайтам, в структуре которых присутствуют Flash-ролики. Если нет необходимости включать в алгоритмы доступа доменное имя сайта, то можно задействовать выражение urlpath_regex. Например, в виде команды ACL media urlpath_regex -i \.wma$ \.mp3$.

Запрет доступа к программам

Настройка Squid позволяет запрещать доступ пользователей к тем или иным программам при задействовании ресурсов прокси-сервера. Для этой цели может использоваться команда ACL (название программы) port (интервал портов), строчкой ниже — http_access deny all (имя программы).

Задействование стандартов и протоколов

Настройка Squid также позволяет системному администратору задать предпочтительный протокол использования интернет-канала. Например, если есть необходимость в том, чтобы человек с конкретного ПК выходил в сеть через протокол FTP, то можно задействовать следующую команду: ACL ftpproto proto ftp, строчкой ниже — http_access deny (имя компьютера) ftpproto.

С помощью элемента method мы можем указать то, каким способом должен осуществляться HTTP-запрос. Всего их 2 — GET и POST, но в ряде случаев предпочтителен именно первый, а не второй, и наоборот. Например, возможна ситуация, при которой конкретный сотрудник не должен просматривать почту через mail.ru, однако его работодатель не будет возражать, если человек захочет читать на указанном сайте новости. Для этого системный администратор может задействовать следующую команду: ACL sitemailru dstdomain .mail.ru, строчкой ниже — ACL methodpost method POST, далее — http_access deny (имя компьютера) methodpost sitemailru.

Таковы нюансы, которые включает в себя настройка Squid. Ubuntu используется, Windows или другая совместимая с прокси-сервером ОС, — рассмотренные нами особенности задания нужных параметров в целом характерны для любой программной среды функционирования Squid. Работа с данным ПО - невероятно увлекательный процесс и одновременно несложный в силу логичности и прозрачности основных алгоритмов настройки программы.

Отметим некоторые ключевые моменты, характерные для настройки Squid.

На что обратить внимание при настройке?

Если есть сложности в обнаружении файла squid.conf, который является основным инструментом конфигурирования сервера, то можно попробовать проверить каталог etc/squid.

Лучше всего, если при работе с файлом, о котором идет речь, вы будете использовать самый простой текстовый редактор: не нужно, чтобы в строки, отвечающие за настройку прокси-сервера, попали какие-либо элементы форматирования.

В ряде случаев может возникнуть необходимость в том, чтобы при работе указан был прокси-сервер провайдера. Для этого существует команда cache_peer. Вписывать ее нужно так: cache_peer (адрес прокси-сервера провайдера).

В ряде случаев полезно фиксировать величину оперативной памяти, которую будет задействовать Squid. Это можно сделать посредством команды cache_mem. Также полезно указать каталог, в котором будут храниться кэшированные данные, делается это с помощью выражения cache_dir. В первом случае полностью команда будет выглядеть как cache_mem (объем ОЗУ в байтах), во втором – как cache_dir (адрес каталога, количество мегабайтов дискового пространства). Желательно размещать кэш на самых высокопроизводительных дисках, если есть выбор.

Может понадобиться указание компьютеров, которые имеют доступ к прокси-серверу. Это можно сделать с помощью команд ACL allowed hosts src (интервал IP-адресов компьютеров), а также ACL localhost src (локальный адрес).

Если в подключениях задействуются порты типа SSL, то их также можно зафиксировать с помощью команды ACL ssl_ports port (указание порта). Одновременно можно запретить использование метода CONNECT для остальных портов, кроме тех, что указаны в защищенном соединении SSL. Это сделать поможет выражение http_access deny CONNECT! SSL_Ports.

Squid и pfSense

В ряде случаев вместе с рассматриваемым прокси-сервером используется интерфейс pfSense, применяемый в качестве эффективного межсетевого экрана. Каким образом организовать их совместную работу? Алгоритм решения данной задачи не слишком сложный.

Для начала нам нужно поработать в интерфейсе pfSense. Squid, настройка которого уже осуществлена нами, необходимо будет инсталлировать посредством SSH-команд. Это один из самых удобных и безопасных способов работы с прокси-серверами. Для этого необходимо активизировать в интерфейсе пункт Enable Secure Shell. Для того чтобы найти его, необходимо выбрать пункт меню System, затем — Advanced, после — Admin Access.

После этого нужно скачать PuTTY - удобное приложение для работы с SSH. Далее, используя консоль, необходимо инсталлировать Squid. Это легко сделать с помощью команды -pkg install squid. После этого необходимо также установить прокси через веб-интерфейс pfSense. Squid (настройка его параметров на данном этапе не производится) можно инсталлировать, выбрав пункт меню System, затем Packages, после — Available Packages. В соответствующем окне должен быть доступен пакет Squid Stable. Выбираем его. Необходимо выставить следующие настройки: Proxy Interface: LAN. Напротив строки Transparent Proxy можно поставить галочку. Выбираем адрес для лога и отмечаем русский язык как предпочтительный. Нажимаем Save.

Инструмент оптимизации ресурсов

Настройка Squid позволяет системным администраторам эффективно распределять ресурсы серверов. То есть в данном случае речь не идет о запретах доступа на какой-либо сайт, однако интенсивность задействования канала тем или иным пользователем или их группой может требовать контроля. Рассматриваемая программа позволяет решить данную задачу несколькими способами. Во-первых, это задействование механизмов кэширования: за счет этого повторная загрузка файлов из Интернета не потребуется, так как снизится нагрузка на трафик. Во-вторых, это ограничение доступа к сети по времени. В-третьих, это установление предельных значений для скорости обмена данными в сети в отношении действий тех или иных пользователей или конкретных типов загружаемых файлов. Рассмотрим указанные механизмы подробнее.

Оптимизация сетевых ресурсов посредством кэширования

В структуре сетевого трафика присутствует множество типов файлов, задействуемых в неизменном виде. То есть, однажды закачав их на компьютер, пользователь может не повторять соответствующую операцию. Программа Squid позволяет осуществлять гибкую настройку механизма распознавания подобных файлов сервером.

Достаточно полезная опция исследуемого нами прокси-сервера — проверка возраста файла, находящегося в кэше. Объекты, слишком долго располагающиеся в соответствующей области памяти, следует обновлять. Задействование этой опции возможно при использовании команды refresh_pattern. Так, полностью выражение может выглядеть как refresh_pattern (минимальная длительность времени — в минутах, максимальная доля «свежих» файлов — в %, максимальный период). Соответственно, если файл находится в кэше дольше установленных критериев, то, возможно, потребуется загрузка его новой версии.

Оптимизация ресурсов посредством ограничений доступа по времени

Другой вариант, который можно задействовать благодаря возможностям Squid-Proxy, — это ограничение доступа пользователей к сетевым ресурсам по времени. Устанавливается оно с помощью очень простой команды: ACL (имя компьютера) time (день, час, минута). Доступ можно ограничивать для любого дня недели, подставив вместо «день» первую букву слова, соответствующую его названию в английском алфавите. Например, если это понедельник — то M, если вторник, то T. Если в команде нет слова «день», то соответствующий запрет будет установлен на всю неделю. Интересно, что можно также регулировать расписание вхождения в сеть, осуществляемого пользователями с помощью тех или иных программ.

Оптимизация ресурсов посредством ограничения скорости

Достаточно распространенный вариант — оптимизация ресурсов с помощью регулирования допустимой скорости обмена данными в рамках компьютерной сети. Изучаемый нами прокси-сервер — удобнейший инструмент для решения данной задачи. Регулирование скорости обмена данными в сети осуществляется с помощью таких параметров, как delay_class, delay_parameters, delay_access, а также посредством элемента delay_pools. Все четыре компонента имеют огромное значение для решения задач, которые стоят перед системными администраторами в аспекте оптимизации ресурсов локальной сети.

fb.ru

заметки на полях: Оптимизация кэша squid

Оригинал http://www.ylsoftware.com/news/403 и еще вот http://www.papercut.com/kb/Main/ConfiguringSquidProxyToAuthenticateWithActiveDirectory

Стандартно шаблоны выглядят так:

refresh_pattern ^ftp: 1440 20% 10080 

refresh_pattern ^gopher: 1440 0% 1440 

refresh_pattern . 0 20% 4320Для начала закомментируем имеющиеся правила.

Далее настроим более жёсткое кэширование для определённых типов файлов:

refresh_pattern \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

refresh_pattern \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

Далее на очереди реклама. Конечно её можно вырезать с помощью bfilter и/или adzapper, но ни один фильтр не может убрать всей рекламы, потому на всякий случай добавим правила для кэширования рекламы:

refresh_pattern http://ad\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://ads\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://adv\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://click\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://count\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://counter\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://engine\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://img\.readme\.ru 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern http://userpic\.livejournal\.com 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.ru/bf-analyze 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern \.ru/bf-si 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern /advs/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

refresh_pattern /banners/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache 

refresh_pattern /cgi-bin/iframe/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

Наконец можно написать правила для адресов, не подпадающих под остальные шаблоны. Используем дефолтные правила с небольшой модификацией:

refresh_pattern ^ftp: 1440 20% 10080 

refresh_pattern ^gopher: 1440 0% 1440 

refresh_pattern . 0 80% 14400

При наличии достаточного количества места на сервере так же имеет смысл увеличить размер кэша и максимальный размер объекта, попадающего в кэш. За размер кэша отвечает параметр cache_dir:

# cache_dir ufs /var/spool/squid 100 16 256 

cache_dir ufs /var/spool/squid 10240 16 256 # 10240 Мб - 10 Гб

За максимальный размер объекта в кэше отвечает параметр maximum_object_size:

# maximum_object_size 4096 KB 

maximum_object_size 20480 KB 

Настройка сообщений squid на русском языке:error_directory /usr/share/squid/errors/ru

Закончив изменения сохраняем файл и даём команду squid перечитать настройки:

silver979.blogspot.com

FAQed: Настройка Squid для начинающих

Вступление

Многие администраторы сталкиваются с проблемой разумного использования времени и канала для выхода в сеть Интернет, задумываются о возможности экономии времени и денег, об ограничении скорости для отдельных видов файлов или личностей, в конце концов об экономии всего, что связано с теми или иными аспектами выхода в глобальную сеть.

Я, с помощью этой статьи, попытаюсь наглядно и доходчиво объяснить о настройках самого распространенного прокси сервера - Squid.

Начальные настройки Squid для доступа пользователей

Мы не будем вдаваться в процесс установки прокси сервера Squid, а перейдем сразу к его настройке.

Самое элементарное, что нам после установки следует сделать, так это разрешить доступ пользователям нашей локальной сети. Для этого служат параметры http_port, http_access. Кроме этого, мы заведем acl (список контроля доступа) для нашей локальной сети.

И так, http_port нам нужен постольку, поскольку наш прокси сервер Squid должен обслуживать только компьютеры нашей локальной сети и быть невидимым для внешнего мира, дабы исключить возможность "плохим людям" внешней сети воспользоваться нашим каналом или трафиком, а в случае, если будут обнаружены "дыры" в коде прокси сервера Squid, воспользоваться ими.

Параметр http_access используется для разрешения или запрещения доступа к определенным ресурсам, определенным адресам либо с определенных адресов, к определенным сайтам, по определенным протоколам, портам и всему тому, что непосредственно указано с помощью Acl (списков контроля доступа).

Таблица N 1. Некоторые подсети.

Диапазон адресов

Полная форма

Краткая форма

192.168.0.1-192.168.0.254

192.168.0.0/255.255.255.0

192.168.0.0/24

192.168.20.1-192.168.20.254

192.168.20.0/255.255.255.0

192.168.20.0/24

192.168.0.1-192.168.254.254

192.168.20.0/255.255.0.0

192.168.20.0/16

10.0.0.1-10.254.254.254

10.0.0.0/255.0.0.0

10.0.0.0/8

Предположим, что у Вас сеть с адресами от 192.168.0.1 до 192.168.0.254, тогда добавим новый Acl (см. таблицу N1):

        acl LocalNet src 192.168.0.0/24

Предположим, что у Вас прокси сервер Squid расположен по адресу 192.168.0.200 на порту 3128, тогда пишем в файле конфигурации:

        http_port 192.168.0.200:3128Следующим нашим действием будет запрет использования нашего прокси сервера, кроме как пользователями нашей локальной сети:

        http_access allow LocalNet        http_access deny all

В данном случае слово allow является разрешением, а слово deny запрещением, то есть мы разрешаем доступ к прокси серверу Squid с адресов нашей локальной сети и запрещаем доступ всем остальным.

Будьте внимательны, указывая http_access, так как Squid использует их в порядке указания Вами.

Изучаем ACL (Списки контроля доступа)Система управления доступом в прокси сервере Squid является очень гибкой и обширной. Она состоит из элементов со значениями и списков доступа c указанием allow (разрешение) или deny (запрещение).

Формат Acl следующий:

        acl   имя   элемент   список

Формат списка доступа:

        http_access   указание   имя_acl 

Мы рассмотрим некоторые элементы, которые позволяет использовать прокси сервер Squid, конечно же с примерами: 

* acl   имя   src   список

С помощью этого элемента (src) мы указываем IP-адрес источника, то есть клиента от которого пришел запрос к нашему прокси серверу.

В следующем примере мы разрешим Васе Пупкину (Pupkin) и отделу программирования (Progs) доступ к нашему прокси серверу, а всем остальным запретим:

        acl  Progs   src    192.168.0.1-192.168.0.9        acl  Pupkin  src    192.168.0.10        http_access  allow  Progs        http_access  allow  Pupkin        http_access  deny   all

* acl   имя   dst   список

Данный элемент (dst) указывает IP-адрес назначения, то есть IP-адрес того сервера, доступ к которому желает получить клиент прокси сервера.

В следующем примере мы запретим Васе доступ к подсети 194.67.0.0/16 (к примеру, в ней находится тот же aport.ru):

        acl  Net194   dst    194.67.0.0/16        http_access   deny   Pupkin   Net194

* acl  имя  dstdomain  список

С помощью этого элемента (dstdomain) мы указываем домен, доступ к которому желает получить клиент прокси сервера.

В следующем примере мы запретим Васе доступ к варезным сайтам nnm.ru и kpnemo.ru:

        acl  SitesWarez  dstdomain  .nnm.ru  .kpnemo.ru         http_access   deny   Pupkin   SitesWarez

В случае, если будет необходимо указать домен источника, то используйте srcdomain.

* acl  имя [-i] srcdom_regex  список* acl  имя [-i] dstdom_regex  список

Данные элементы отличаются от srcdomain и dstdomain лишь тем, что в них используются регулярные выражения, которые в данной статье мы не рассматриваем, но пример всё-таки приведём:

        Acl  SitesRegexSex     dstdom_regex    sex        Acl  SitesRegexComNet  dstdom_regex  .com$ .net$        http_access   deny   Pupkin   SitesRegexSex        http_access   deny   Pupkin   SitesRegexComNet

В данном примере мы запретили доступ Пупкину Василию на все домены, содержащие слово sex и на все домены в зонах .com и .net.

Ключ -i призван игнорировать регистр символов в регулярных выражениях.

* acl  имя  [-i]  url_regex  списокС помощью этого элемента (url_regex) мы указываем шаблон регулярного выражения для URL.

Пример указания файлов с расширением avi, начинающихся на слово sex:

        acl  NoAviFromSex  url_regex  -i  sex.*.avi$

В случае, если Вы желаете указать шаблон только для пути URL, то есть исключая протокол и имя хоста (домена), то используйте urlpath_regex.

Пример для указания музыкальных файлов:

        acl media urlpath_regex -i .mp3$ .asf$ .wma$

* acl имя_acl port список

Указание номера порта назначения,  то есть порта, к которому желает подключится клиент нашего прокси сервера.

Как пример, запретим всем использование программы Mirc через наш прокси сервер:

        Acl   Mirc   port   6667-6669   7770-7776        http_access   deny   all   Mirc

* acl имя_acl proto список

Указание протокола передачи.

Как пример, запретим вышеупомянутому Васе использование протокола FTP через наш прокси сервер:

        acl   ftpproto   proto   ftp        http_access   deny   Pupkin   ftpproto

* acl имя_acl method список

Указание метода http запроса клиентом (GET, POST).

Возьмем ситуацию, когда следует запретить Васе Пупкину просматривать его почту на сайте mail.ru, но при этом разрешить прогуливаться по сайту без запретов, то есть запретить Васе возможность войти в свой почтовый ящик через форму входа на сайте:

        acl  SiteMailRu  dstdomain  .mail.ru        acl  methodpost  method      POST        http_access  deny  Pupkin  methodpost  SiteMailRu

Ограничения пользователейДостаточно часто в нашей стране возникает ситуация, что канала доступа в глобальную сеть Интернет на всех пользователей не хватает и возникает желание дать каждому по максимуму, но при этом не дать каналу "загнуться" из-за любителей позагружать файлы.

Средства прокси-сервера Squid позволяют этого добится несколькими путями:

Ограничения по времениОграничить пользователей по времени можно следующим образом:

        acl   имя   time  дни   чч:мм-ЧЧ:ММ

Где день: M - Понедельник, T - Вторник, W - Среда, H - Четверг, F - Пятница, A - Суббота, S - Воскресенье.

При этом чч:мм должно быть меньше чем ЧЧ:ММ, то есть можно указать с 00:00-23:59, но нельзя указать 20:00-09:00.

Давайте запретим всё тому же Васе иметь доступ в сеть Интернет с 10 до 15 часов каждый день:

        acl  TimePupkin  time  10:00-15:00        http_access  deny  Pupkin  TimePupkinЕсли хочется разрешить Васе пользоваться программой Mirc с 13 до 14 часов, то пишем:

        acl  TimePupkin  time  13:00-14:00        http_access  allow  Pupkin  TimePupkin  Mirc        http_access  deny   Pupkin  Mirc

А что делать, если необходимо запретить или разрешить в определенные дни недели? Squid также позволяет это сделать, к примеру с 13 до 14 в понедельник и в воскресенье:

        acl  TimePupkin  time  MS 13:00-14:00

Как видите, ничего сложного в этом нет.

Ограничения по скоростиРегулировка скорости в прокси сервере Squid осуществляется с помощью пулов. Пул - это своего рода бочонок с пивом, в который пиво постоянно заливают до краёв, а клиенты наливают в свои стаканы или иные ёмкости для дальнейшего внутреннего потребления по мере надобности через свои персональные краны.

Пулы регулируются с помощью трех параметров: delay_class, delay_parameters, delay_access. Количество пулов указывается с помощью параметра delay_pools.

Пулы могут быть трёх классов:

  1. Весь поток пива ограничен одним краном (на всю сеть).

  2. Весь поток пива ограничен одним краном, но при этом кран делится на подкранчики (на каждый IP).

  3. Весь поток пива ограничен одним краном, но кран делится на подкранчики (на подсети), которые также делятся на мини кранчики (на  каждый IP).

Форматы:

        delay_pools       количество_объявленных_пулов        delay_access     номер_пула  действие   имя_aclДействие может быть allow (разрешить) и deny (запретить). При этом, данный пул действует на тех, кому он разрешен и не действует на тех, кому он запрещен. В случае, если указано allow all, а затем deny Pupkin, то на Пупкина данный класс всё-равно подействует, т.к. IP-адрес Пупкина объявленный в acl Pupkin, входит в список адресов acl all. Имейте это ввиду.

        delay_class                  номер_пула  класс_пула        delay_parameters        номер_пула  параметры

Параметры отличаются в зависимости от класса пула:

для первого класса:

        delay_parameters 1  байт_на_всю_сеть

для второго класса:

        delay_parameters 1  на_всю_сеть на_клиента

для третьего класса:

        delay_parameters 1  на_всю_сеть на_подсеть на_клиента

Для примера, у нас канал на 128 Кбит (в среднем 15 Кбайт в секунду) и мы желаем Васе (Pupkin) дать всего 4 Кбайта/сек (на все про всё один маленький бокальчик), отделу программирования (Prog) дать всего 10 Кбайт/сек и на каждого всего по 5 Кб/сек (всего два бокальчика), всех остальных ограничить в 2 Кбайта/сек на каждого и 10 Кб/сек на всех, а файлы mp3 (media) ограничить в 3 Кбайта в секунду на всех (на всю бочку пива такой маленький кран). Тогда пишем:

        acl Prog    src    192.168.0.1-192.168.0.9        acl Pupkin  src    192.168.0.10        acl LocalNet src    192.168.0.0/255.255.255.0        acl media   urlpath_regex -i .mp3$ .asf$ .wma$

        delay_pools 4        # сначала ограничим mp3        delay_class 1 1        delay_parameters 1 3000/3000        delay_access 1 allow media        delay_access 1 deny all        # ограничим бедного Васю        delay_class 2 1        delay_parameters 2 4000/4000        delay_access 2 allow Pupkin        delay_access 2 deny all        # ограничим отдел программирования        delay_class 3 2        delay_parameters 3 10000/10000 5000/5000        delay_access 3 allow Prog        delay_access 3 deny all        # а теперь ограничим остальных (второй класс пула)        delay_class 4 2        delay_parameters 4 10000/10000  2000/2000        delay_access 4 deny media        delay_access 4 deny Pupkin        delay_access 4 deny Prog        delay_access 4 allow LocalNet        delay_access 4 deny all

Часто возникает вопрос, а как лучше всего использовать столь малый канал, чтобы он автоматически делился между всеми теми, кто в данный момент что-либо загружает? На этот вопрос имеется однозначный ответ - средствами прокси сервера Squid этого сделать не возможно, но всё-таки кое-что предпринять можно:

        delay_class 1 2        delay_parameters 1   -1/-1   5000/15000        delay_access 1 allow LocalNet        delay_access 1 deny all

Таким образом мы выделяем на всю нашу сеть и на подсети максимальный канал (-1 означает неограниченность), а каждому пользователю даем скорость максимум в 5 Кб/сек после того, как он скачает на максимальной скорости первые 15 Кбайт документа.

Таким образом клиент не съест весь канал, но достаточно быстро получит первые 15 Кбайт.

Оптимизируем кэширование объектов в Squid

Существует множество типов файлов, которые обновляются не достаточно часто, чтобы позволить прокси серверу реагировать на заголовки от вебсерверов о том, что данный объект не подлежит кешированию либо он был на удивление только что изменён. Это довольно частая ситуация.

Для разрешения таких ситуаций призван параметр refresh_pattern в файле настроек прокси-сервера Squid, но полностью с формулами и т.п. мы его рассматривать не будем.

Формат:

        refresh_pattern [-i] строка МИНВ процент МАКСВ параметры

Данный параметр используется для того, чтобы определить возраст объекта (считайте файла) в кеше, следует ли его обновлять или нет. 

МИНВ (минимальное время) - время в минутах, когда объект, имеющийся в кеше считается свежим.

МАКСВ (максимальное время) - максимальное время в минутах, когда объект считается свежим.

Параметры - это один или несколько следующих параметров:

И так, мы подошли к самом главному. Ну, так какие же типы файлов реже всех обновляются? Как правило, это разнообразные музыкальные файлы и картинки.

Установим свежесть объектов, для этого для картинок и музыкальных файлов укажем, скажем так для примера, целых 30 дней (43200 минут):

        refresh_pattern -i .gif$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .png$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .jpg$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .jpeg$ 43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .pdf$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .zip$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .tar$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .gz$   43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .tgz$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .exe$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .prz$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .ppt$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .inf$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .swf$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .mid$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .wav$  43200 100% 43200 override-lastmod override-expire         refresh_pattern -i .mp3$  43200 100% 43200 override-lastmod override-expire 

Показанные Выше настройки лишь пример, для того, чтобы была понятна суть.

Теперь можете проверить эффективность своего прокси сервера, она уж точно возрастет.

ЗаключениеПрокси сервер Squid не является одним лишь распространенным  прокси сервером, существуют и другие. Но как показывает статистика, большинство используют именно этот прокси сервер, но при этом всё равно у многих начинающих возникают проблемы с настройкой.

Страница сгенерирована за 0,0739 s

faqed.ru

ru - Squid оптимизация скорости

Добрый день!

Поставил squid, но не радуют задержки при открытии страниц. До компьютера, на котором стоит squid канал 3Мбит/с, ping 150-160. Периодически случаются жестокие висяки при загрузке страниц, либо картинки не все прогружаются. В общем нужно как-то мониторить где происходят задержки и оптимизировать настройки.

По сему, посоветуйте, пожалуйста, программы для мониторинга, плюс не помешал бы подсчет трафика.

-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
> канал 3Мбит/с, ping 150-160.

150-160 - это очень большие задержки. На глаз такие задержки очень видны. Ширина канала тут не поможет.

Мониторить можно с использованием tail -f на журнале squid. Есть плагины для munin, например. Опять же, непонятно, что именно вы хотите мониторить.

Подсчёт трафика ищется поисковиками легко, в сети много описаний...

-- Dmitry Agafonov ~ http://agafonov.pp.ru/-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

пинги понятно заметные. Но что-то подгружается нормально, а что-то подвисает минут на 5, а это слишком :) Вот хочется отследить что и почему подвисает  :)12 августа 2010 г. 16:02 пользователь Dmitry Agafonov <[hidden email]> написал:> канал 3Мбит/с, ping 150-160.150-160 - это очень большие задержки. На глаз такие задержки оченьвидны. Ширина канала тут не поможет.

Мониторить можно с использованием tail -f на журнале squid. Естьплагины для munin, например. Опять же, непонятно, что именно вы хотитемониторить.

Подсчёт трафика ищется поисковиками легко, в сети много описаний...

--Dmitry Agafonov ~ http://agafonov.pp.ru/--ubuntu-ru mailing list[hidden email]https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

12 августа 2010 г. 16:48 пользователь Тарас Перебейносов [hidden email]> написал: > пинги понятно заметные. Но что-то подгружается нормально, а что-то подвисает > минут на 5, а это слишком :) Вот хочется отследить что и почему подвисает >  :)

Ну так вы попингуйте с сервера это что-то. Может там еще 2000 ms и потери. Да, еще команда mtr очень хороша для определения проблем в маршрутах...

> > 12 августа 2010 г. 16:02 пользователь Dmitry Agafonov > [hidden email]> написал: >> >> > канал 3Мбит/с, ping 150-160. >> >> 150-160 - это очень большие задержки. На глаз такие задержки очень >> видны. Ширина канала тут не поможет. >> >> Мониторить можно с использованием tail -f на журнале squid. Есть >> плагины для munin, например. Опять же, непонятно, что именно вы хотите >> мониторить. >> >> Подсчёт трафика ищется поисковиками легко, в сети много описаний... >> >> -- >> Dmitry Agafonov ~ http://agafonov.pp.ru/>> -- >> ubuntu-ru mailing list >> [hidden email] >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru> > > -- > ubuntu-ru mailing list > [hidden email] > https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru> >

-- Dmitry Agafonov ~ http://agafonov.pp.ru/-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

webmin

В Чтв, 12/08/2010 в 15:22 +0400, Тарас Перебейносов пишет:

Добрый день! Поставил squid, но не радуют задержки при открытии страниц. До компьютера, на котором стоит squid канал 3Мбит/с, ping 150-160. Периодически случаются жестокие висяки при загрузке страниц, либо картинки не все прогружаются. В общем нужно как-то мониторить где происходят задержки и оптимизировать настройки. По сему, посоветуйте, пожалуйста, программы для мониторинга, плюс не помешал бы подсчет трафика.

-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

+1Тоже самое, только у меня squid еще используется для раздачи общего pppoe соединения, которое поднято на том же компе что и squid. И соединение периодически отваливается. Но тогда видно - в браузер выкидывает страницу ошибки squid'a, где написано что указанный узел недоступен. А со стороны squid'a другие проблемы - когда вдруг штук 5 страниц с разных серверов подвисает, а потом вдруг все разом начинают грузиться. Кэширование отключено. Правда я грешу на то что памяти на машинке мало - всего 128 мегабайт. Система - ubuntu server 8.04 12 августа 2010 г. 15:58 пользователь Dmitry Agafonov <[hidden email]> написал:12 августа 2010 г. 16:48 пользователь Тарас Перебейносов<[hidden email]> написал:> пинги понятно заметные. Но что-то подгружается нормально, а что-то подвисает > минут на 5, а это слишком :) Вот хочется отследить что и почему подвисает >  :)Ну так вы попингуйте с сервера это что-то. Может там еще 2000 ms и потери.Да, еще команда mtr очень хороша для определения проблем в маршрутах... > > 12 августа 2010 г. 16:02 пользователь Dmitry Agafonov > [hidden email]> написал: >> >> > канал 3Мбит/с, ping 150-160. >> >> 150-160 - это очень большие задержки. На глаз такие задержки очень >> видны. Ширина канала тут не поможет. >> >> Мониторить можно с использованием tail -f на журнале squid. Есть >> плагины для munin, например. Опять же, непонятно, что именно вы хотите >> мониторить. >> >> Подсчёт трафика ищется поисковиками легко, в сети много описаний... >> >> -- >> Dmitry Agafonov ~ http://agafonov.pp.ru/ >> -- >> ubuntu-ru mailing list >> [hidden email] >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru > > > -- > ubuntu-ru mailing list > [hidden email] > https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru > >--

-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

Ну так подскажет кто-нибудь куда копать?Открываю браузер, в нем 2 вкладки. И если в одной из них загрузка страницы застопорилась в ожидании одной картинки, в другой вкладке тоже ничего не грузится. А потом всё разом стартует... Что это?14 августа 2010 г. 15:06 пользователь Виктор Волков <[hidden email]> написал: +1Тоже самое, только у меня squid еще используется для раздачи общего pppoe соединения, которое поднято на том же компе что и squid. И соединение периодически отваливается. Но тогда видно - в браузер выкидывает страницу ошибки squid'a, где написано что указанный узел недоступен. А со стороны squid'a другие проблемы - когда вдруг штук 5 страниц с разных серверов подвисает, а потом вдруг все разом начинают грузиться. Кэширование отключено. Правда я грешу на то что памяти на машинке мало - всего 128 мегабайт. Система - ubuntu server 8.04 12 августа 2010 г. 15:58 пользователь Dmitry Agafonov <[hidden email]> написал: 12 августа 2010 г. 16:48 пользователь Тарас Перебейносов<[hidden email]> написал:> пинги понятно заметные. Но что-то подгружается нормально, а что-то подвисает > минут на 5, а это слишком :) Вот хочется отследить что и почему подвисает >  :)Ну так вы попингуйте с сервера это что-то. Может там еще 2000 ms и потери.Да, еще команда mtr очень хороша для определения проблем в маршрутах... > > 12 августа 2010 г. 16:02 пользователь Dmitry Agafonov > [hidden email]> написал: >> >> > канал 3Мбит/с, ping 150-160. >> >> 150-160 - это очень большие задержки. На глаз такие задержки очень >> видны. Ширина канала тут не поможет. >> >> Мониторить можно с использованием tail -f на журнале squid. Есть >> плагины для munin, например. Опять же, непонятно, что именно вы хотите >> мониторить. >> >> Подсчёт трафика ищется поисковиками легко, в сети много описаний... >> >> -- >> Dmitry Agafonov ~ http://agafonov.pp.ru/ >> -- >> ubuntu-ru mailing list >> [hidden email] >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru > > > -- > ubuntu-ru mailing list > [hidden email] > https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru > >--

--ubuntu-ru mailing list[hidden email]https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

-- ubuntu-ru mailing list [hidden email] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

ubuntu.5.x6.nabble.com

Squid настраиваем контроль доступа и оптимизируем кэш — Linux портал

 

Статья из журнала Взломщик

В конце ссылка на видео

Если нужно предоставить кооперативный доступ сервисам нескольким пользователям с возможностью кэширования трафика, то поначалу вспоминают о кэширующем прокси-сервере Squid. Это очень гибкое решение, которое употребляют как в малых кабинетах с несколькими пользователями, так и в корпоративных сетях со сложной топологией. Предлагаю разобрать, как настроить в Squid самые популярные функции – контроль доступа и работу с кэшем.

 

Установка Squid

Поначалу пару слов о самом Squid для новичков. Squid (www.squid-cache.org) — приложение позволяющее организовать прокси/кэширующий сервер для HTTP, FTP и некоторых других фаворитных протоколов.

Поддерживается работа с защищенными TLS/SSL соединениями, кэширование DNS, может быть внедрение Squid в качестве прозрачного или реверсного прокси. Распространяется по лицензии GNU GPL. Работает во всех фаворитных вариантах Unix систем — GNU/Linux, *BSD, Mac OS X, SunOS/Solaris, и некоторых других.

Есть версия для Windows.Для примера буду использовать Ubuntu, но все произнесенное касается и всех других дистрибутивов или ОС, не считая особенностей установки в определенном решении. Хотелось бы также отметить, что сейчас параллельно развивается две ветки: 2-x и 3-x.

3-я ветка перешла в разряд STABLE в конце прошедшего года и рекомендуема к использованию. По чертам описываемых далее различий у их практически нет, поэтому все описанное касается обоих версий, отличия будут оговорены раздельно.

В репозитарии Ubuntu 6.06 LTS Dapper Drake находится пакет с версией Squid 2.5, в последнем 7.10 – 2.6.14. Также репозитариях всех Ubuntu начиная от Festy Fawn (7.04) есть и пакеты с третьей версией Squid. Об различиях поведано здесь. Установка Squid в Ubuntu вообщем то проста:

$ sudo apt-get install squid squid-commonИли для Squid 3:

$ sudo apt-get install squid3 squid3-common

После установки Squid будет запущен с установками по умолчанию.

 

 

Временами в процессе запуска появляется ошибка:

FATAL: Could not determine fully qualified hostname. Please set ‘visible_hostname’

По умолчанию разрешение имени узла, на котором работает Squid, происходит при помощи gethostname(), зависимо от установок DNS, он временами не может однозначно отыскать имя, которое будет фигурировать в журналах и выводах об ошибках “ Generated … by server.com (squid/3.0.STABLE2) ”. И просит тебя ему помочь.Все функции Squid производятся в единственном файле /etc/squid/squid.conf, черт внутри очень много, но кидаться поменять их все и слету не стоит. Просмотреть список черт, убрав пустые и закомментированные строки, можно при помощи команды:

$ sudo grep -v «^#» /etc/squid/squid.conf | sed -e ‘/^$/d’

 

 

Формат squid.conf стандартен для Unix, неважно какая запись состоит из строк вида:

параметр значение

Может быть внедрение переменных. Cтроки начинающиеся со знака решетки (#) являются комментариями. Для удобства функции, все свойства разбиты по секциям.

Такое разбиение чисто условно и можно прописывать свои свойства в хоть какое место файла, лишь бы было понятно. Может быть подключение внешнего файла с опциями при помощи include.

Единственное о чем следует держать в голове – установки употребляются в порядке очередности. После установки в /usr/share/doc/squid найдешь документацию и примеры конфигурационных файлов.Для начала запустим Squid, устранив ошибку обозначенную выше. Заносим в этот файл строку с именованием сервера Squid, оно не обязательно должно совпадать с DNS:

visible_hostname mysquid

И запускаем:

$ sudo /etc/init.d/squid start

В настройках по умолчанию сквид принимает входящие сообщения на 3128 порту. При необходимости другой порт можно указать в параметре http_port. Проверяем введя команду “netstat –ant | grep 3128”слушается ли этот порт.

Если все нормально, настраиваем веб-браузер для работы через прокси-сервер и выходим в Интернет. Но сейчас это может быть только с localhost. При попытке подключиться другого компьютера в сети, получаем:

$ sudo cat /var/log/squid/access.log | grep 192.168.0.10

1206182759.796 Один 192.168.0.10 TCP_DENIED/403 Одна тыща триста девяносто три GET http://www.tux.in.ua/

Чтобы в Интернет могли попасть другие пользователи сети, нужно установить соответствующие разрешения, используя контроль доступа.

Настраиваем доступ

Если на компьютере есть некое количество интерфейсов, изменив параметр http_port ограничим доступ к Squid только внутренней сетью:

http_port 192.168.0.1:3128

Хотя Ip-адрес в http_port не является неотклонимым, можно просто указать порт.Чтобы разрешить всем пользователям сетей 192.168.0.0, 172.16.0.0 и компьютера 192.168.1.1 подключаться к Squid, добавляем описание нового списка доступа в секцию “ACCESS CONTROL”:

acl localnet src 192.168.0.0/24 172.16.0.0/12acl localnet src 192.168.1.1

2-ая строка – это название нового списка доступа. Переменные чувствительны к регистру, но использовав параметр “acl –i” можно поменять это поведение. Сейчас в этом необходимости нет, чуть дальше покажу как.

Если нужно настроить доступ не для всей сети, а отдельных ее узлов, проще записать их адреса в файл (по одному в строке), который и указать в качестве последнего параметра. 3-я строка – тип списка доступа. В нашем случае использован src (от source).

При помощи других черт можно указать внешний адрес (dst), МАС-адрес (arp), доменное имя (srcdomain, dstdomain), порт (port), протокол (proto), время (time) и многие другие. Фактически работа по организации доступа сводится с описания объекта в acl, а позже разрешении или запрете работы объекта при помощи “http_access” с такими параметрами. Например, чтобы указать рабочее время, используем такую конструкцию:

acl work_hours time M T W T F 9:00-18:00

В описании употребляются 1-ые буквы английского языка, соответствующие дням недели. В секции “ACCESS CONTROL” уже описаны некоторые ACL, а конкретно описываются номера некоторых портов (привожу не все) и ACL соответствующий всем адресам:

acl SSL_ports port Четыреста 40 три 563 873acl Safe_ports port Восемьдесят 21 Четыреста 40 три 563 1025-65535

acl all src 0.0.0.0/0.0.0.0

 

Следует внимательно просмотреть весь список, и закомментировать строки с портами не подходящих или неиспользуемых сервисов.Когда списки составлены, при помощи параметра http_access разрешаем или запрещаем доступ обозначенному ACL. Общий формат вызова такой:

http_access allow|deny [!]название_ACL

Восклицательный знак инвертирует значение списка, другими словами звучит как “все не считая”. По умолчанию употребляется правило:

http_access deny all

Его мы обязательно помещаем в конец списка правил. В этом случае все соединения которые разумеется тобой не разрешены, будут блокированы. Майнтайнеры собирающие пакеты в дистрибутивах, обычно, добавляют и несколько собственных правил.Чтобы разрешить подключение к Squid с обозначенных адресов и работу только с подходящими портами пишем:

http_access allow localnethttp_access deny !Safe_portshttp_access deny !SSL_ports

Сохраняем результат и перезапускаем Squid:

$ sudo /etc/init.d/squid restart

И проверяем. Если все нормально, идем дальше. Чтобы не перестраивать клиентские системы проще использовать iptables:

iptables -t nat -A PREROUTING -i eth2 -p tcp -m tcp —dport Восемьдесят -j DNAT —to-destination 192.168.0.1:3128

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp —dport Восемьдесят -j REDIRECT —to-ports 3128

 

Очередной пример, нам нужно, чтобы компютеры определенными IP могли соединяться только в рабочее время. Без заморочек:

acl workip src 192.168.1.100 192.168.1.200-192.168.1.210http_access deny !work_hours workip

Можно расписать это правило на два, сделав его более читабельным:

http_access allow work_hours workiphttp_access deny workip

1-ая строка разрешит доступ при совпадении 2-ух ACL: рабочее время и Ip-адрес. 2-ая запретит доступ всех записанных в ACL workip при несовпадении с первым правилом, другими словами в другой временной просвет.

Режем баннеры и сайты

Одна из функций присущих сквиду, которая делает его необходимым – возможность запрета доступа к определенным ресурсам Интернет. Это реализовано на той же сладкой парочке: acl и http_access. Зная адрес ресурса, можно просто закрыть доступ к определенному адресу или целой подсети:

 

Похожие статьи

hpunix.org

Оптимизация кэша squid - Linux - Каталог статей

Развивая тему экономии трафика с помощью прокси-сервера squid нельзя не упомянуть про возможности дополнительной настройки кэша, а так же возможность задания правил кэширования для разных адресов (которые можно задавать шаблонами).

Все описанные здесь изменения делаются в файле squid.conf, который в большинстве дистрибутивов расположен в /etc/squid/

Сначала вспомним про очень полезную опцию: reload_into_ims. По умолчанию она выключена. Если ещё включить, то вместо reload squid будет посылать запрос If-Modified-Since. Это нарушение стандарта HTTP, однако большинство серверов корректно обрабатывают этот запрос, потому включаем:

reload_into_ims on

Далее находим параметр refresh_pattern. Он задаёт параметры кэширования. Стандартно шаблоны выглядят так:

refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern . 0 20% 4320

Обычно используется эта инструкция так:

refresh_pattern regex min percent max options

Опции означают следующее:

regex Регулярное выражение. Описывает адреса, к которым применимо это правило.
min Минимальное время, в течении которого объект в кэше считается новым. Рекомендуется использовать 0, чтобы корректно отображались динамические страницы.
percent Процент от возраста объекта с явным указание срока актуальности, в течении которого объект считается новым.
max Указывает верхний предел времени, в течении которого объекты без явного указания времени актуальности считаются новыми.
options Дополнительные опции, перечисляемые через пробел. Самые интересные из них:
  • override-expire: заставляет игнорировать факт истечения времени актуальности объекта.
  • override-lastmod: заставляет игнорировать переданное сервером время последней модификации объекта.
  • ignore-reload: заставляет игнорировать запрос reload от клиента и выдавать версию объекта из кэша.
  • ignore-no-cache: заставляет игнорировать заголовок no-cache с сервера и принудительно кэшировать объект.

Правила обрабатываются сверху вниз до первого сработавшего правила. Потому правило для "." должно идти последним.

Пишем правила. Для начала закомментируем имеющиеся правила. Вместо них мы будем писать свои:

#refresh_pattern ^ftp: 1440 20% 10080#refresh_pattern ^gopher: 1440 0% 1440#refresh_pattern . 0 20% 4320

Далее настроим более жёсткое кэширование для определённых типов файлов:

refresh_pattern \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache#refresh_pattern . 0 20% 4320

Уже это даёт солидную экономию. Далее на очереди реклама. Конечно её можно вырезать с помощью bfilter и/или adzapper, но ни один фильтр не может убрать всей рекламы, потому на всякий случай добавим правила для кэширования рекламы:

refresh_pattern http://ad\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://ads\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://adv\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://click\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://count\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://counter\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://engine\. 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://img\.readme\.ru 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern http://userpic\.livejournal\.com 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.ru/bf-analyze 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern \.ru/bf-si 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern /advs/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern /banners/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cacherefresh_pattern /cgi-bin/iframe/ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

Далее полезно ещё раз изучить логи squid. Возможно вы напишите какие-то свои дополнительные правила.

Наконец можно написать правила для адресов, не подпадающих под остальные шаблоны. Используем дефолтные правила с небольшой модификацией:

refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern . 0 80% 14400

При наличии достаточного количества места на сервере так же имеет смысл увеличить размер кэша и максимальный размер объекта, попадающего в кэш.

За размер кэша отвечает параметр cache_dir:

# cache_dir ufs /var/spool/squid 100 16 256cache_dir ufs /var/spool/squid 10240 16 256

За максимальный размер объекта в кэше отвечает параметр maximum_object_size:

# maximum_object_size 4096 KBmaximum_object_size 10240 KB

Закончив изменения сохраняем файл и даём команду squid перечитать настройки:

squid -k reconfigure

На этом всё. Если вы используете sarg для анализа логов squid то вы наверняка заметите рост эффективности кэша. (У автора использование кэша увеличилось с 6% до 28%)

Источник: http://ylsoftware.com/?action=news&na=viewfull&news=403

opensource.ucoz.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта