Парные параметры модели squid. Сравнение свободных программ учета трафика SQUID

Linux-сервер своими руками Колисниченко Денис Николаевич

15.1. Что такое SQUID?

15.1. Что такое SQUID?

SQUID - это программа, которая получает HTTP/FTP-запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети (Masquerading - маскарадинг), увеличивает скорость обработки запроса при повторном обращении (кэширование), а также обеспечивает дополнительную безопасность.

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

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

Прокси-сервер Squid образуется несколькими программами, в числе которых: сама программа сервера squid, а также программа dnsserver - программа обработки DNS-запросов. Когда запускается программа squid, то она сначала запускает заданное количество процессов dnsserver, каждый из которых работает самостоятельно и может осуществлять только один поиск в системе DNS. За счет этого уменьшается общее время ожидания ответа DNS.

Из книги Linux-сервер своими руками автора

15 Прокси-сервер SQUID 15.1. Что такое SQUID? SQUID - это программа, которая получает HTTP/FTP-запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети (Masquerading - маскарадинг),

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

15.2. Установка SQUID SQUID может быть установлен из исходных текстов или в виде RPM-пакета. Установка RPM-пакета SQUID очень проста - для этого нужно ввести команду rpm –ih squid-2.3.STABLE2-3mdk.i586.rpmЯ использую версию squid 2.3. Более новая версия доступна в виде исходных кодов. Исходники можно

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

15.3. Настройка SQUID Сервер SQUID использует файл конфигурации squid.conf, который обычно располагается в каталоге /etc/squid (или /usr/local/squid/etc - более ранние версии). Откройте его в любом текстовом редакторе, например, joe/usr/local/squid/etc/squid.conf. Далее выполните следующую последовательность

Из книги автора

15.4. Запуск SQUID Теперь, когда вы выполнили базовую настройку SQUID, его нужно запустить: /usr/local/squid/bin/squid –zПараметр –z необходим для создания (обнуления) каталога, содержащего кэш. Обычно этот параметр нужен только при первом запуске. Некоторые другие полезные параметры SQUID

Из книги автора

15.5. Формат файла squid.conf В файле squid.conf задаются всевозможные параметры конфигурации прокси-сервера. Давайте рассмотрим их все по

Из книги автора

17.1.5. Настройка Squid Установите пакет squid. Осталось настроить и запустить его. Для этого нужно отредактировать файл конфигурации /etc/squid/squid.conf. Сначала укажите адрес прокси провайдера: cach_peer proxy.your_isp.comЗадайте объем ОЗУ, который будет использовать прокси-сервером: cache_memВ том

Из книги автора

Глава 18. Прокси-серверы SQUID и SOCKS 18.1. Что такое прокси-сервер? Прокси-сервер (сервер-посредник) - это программа, которая выполняет HTTP/FTP-запросы от имени клиентов. Применение прокси-сервера дает возможность использовать фиктивные IP-адреса во внутренней сети (IP-маскарадинг),

Из книги автора

18.2. Установка SQUID Я использую версию squid 2.5. Пакет squid входит в состав современных дистрибутивов, а если его у вас почему-то нет, то скачать можно с www.squid-cache.org.При сборке SQUID из исходных кодов первым шагом должна быть команда# ./configure --prefix=/usr/local/squidSQUID будет установлен в каталог,

Из книги автора

18.3. Настройка SQUID Сервер SQUID использует файл конфигурации squid.conf, который обычно располагается в каталоге /etc/squid (или /usr/local/squid/etc - более ранние версии). Подробнее на отдельных настройках мы остановимся чуть позже. А сейчас просто по шагам произведем настройку SQUID.

Из книги автора

18.4. Запуск SQUID Первый раз squid нужно запускать с ключом -z, чтобы создать и очистить каталог кэша:# /usr/local/squid/bin/squid -zЕще несколько полезных ключей, с которыми можно запускать squid, перечислены в таблице 18.2.Ключи запуска squid Таблица 18.2 Ключ Назначение -а порт Задает

Из книги автора

18.5. Расширенные настройки SQUID. Конфигурационный файл squid.conf 18.5.1. Параметры сети В файле squid.conf могут быть заданы следующие параметры сети:? http_port - порт для запросов клиентов. С этого порта прокси-сервер будет ожидать и обрабатывать запросы клиентов. Значение по умолчанию

Из книги автора

18.8. Разделение канала с помощью SQUID Допустим, вам нужно настроить прокси-сервер таким образом, чтобы одна группа компьютеров работала в Интернете с одной скоростью, а другая - с другой. Это может потребоваться, например, для разграничения пользователей, которые

Из книги автора

9.3. squid Как я уже сказал, самым распространенным прокси-сервером является squid. Этот сервер имеет достаточно длинную историю, и за время его существования в нем реализовано много возможностей. Еще не было ничего такого, что я не смог бы получить с помощью squid.Основной

Из книги автора

9.4. Права доступа к squid Это самая больная тема для любого администратора. Да, и в squid тоже есть права доступа, и они также описываются в конфигурационном файле /etc/squid/squid.conf. Но мы рассматриваем права отдельно, потому что основной упор делаем на безопасность. Именно поэтому

Из книги автора

9.5. Замечания по работе squid Сейчас нам предстоит немного поговорить о некоторых вопросах безопасности сервиса squid и дополнительных возможностях, которые могут ускорить работу в

Из книги автора

12.5.4. Журнал прокси-сервера squid Основным журналом прокси-сервера squid является /var/log/squid/access.log. Это текстовый файл, в котором каждая строка состоит из следующих полей:? время начала соединения или события;? продолжительность сессии;? IP-адрес клиента;? результат обработки

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

Что такое proxy-сервер и что такое squid

Начну с основ. squid является кэширующим прокси сервером для HTTP, FTP и др. протоколов. Прокси сервер для HTTP - это программа, выполняющая HTTP-запросы от имени клиентской программы (будь то браузер или другой софт). Proxy может быть кэширующим или не кэширующим . Кэширующий, соответственно, сохраняет все запросы в какое-либо хранилище для более быстрой отдачи клиентам, а не кэширующий - просто транслирует HTTP, ftp или другие запросы. Ранее, кэширование трафика позволяло добиться довольно значительной экономии трафика, но в настроящее время с ростом скоростей интернета это немного утеряло актуальность. Прокси серверА можно выстраивать в иерархии для обработки запросов. При этом, прокси серверА взаимодействуют между собой по протоколу ICP .

Squid разработан и может работать на большинстве операционных систем (как unix, так и windows). Лицензируется под лицензией GNU GPL. Способен обрабатывать и кэшировать HTTP, FTP, gopher, SSL и WAIS (убрано в 2.6) запросы, а так же DNS. Наиболее частые запросы хранит в оперативной памяти. На текущий момент существуют 2 стабильные версии squid : 2.7 и 3.1 . С отличиями можно ознакомиться в ссылках в конце статьи. Все зависимости при установке из пакетов у них одинаковые. Конфигурационный файл версии 2 совместим с версией 3, но в 3 версии добавлены новые параметры. В статье я буду рассматривать версию squid3 . Стоит так же заметить, что если устанавливать squid3 , то он свои конфигурационные файлы будет держать в /etc/squid3 , а так же логи по умолчанию в squid3 лежат в каталоге /var/log/squid3/ , а не /var/log/squid/ , как "любят считать" многие анализаторы логов.

Кучу раз упомянуто слово "кэширование ". А что же это, собственно, такое - кэширование ? Это способ хранения запрошенных из Интернет объектов на сервере, находящемся ближе к запрашивающему компьютеру нежели исходный. Интернет-объект это файл, документ или ответ на обращение к какому-либо сервису предоставляемому в Интернет (например, FTP, HTTP, или gopher). Клиент запрашивает интернет-объект из кеша прокси-сервера; если объект ещё не кеширован, то прокси-сервер получает объект (либо от узла сети указанного по запрошенному адресу URL, либо от родительского или соседнего кеша) и доставляет его клиенту.

Режимы работы прокси-сервера Squid

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

Прозрачный режим

В этом режиме HTTP соединение осуществляемое клиентами перенаправляется на прокси-сервер без их ведома или явной конфигурации. В этом режиме не требуется настройка клиентов. Недостатки данного способа : необходима конфигурация NAT и перенаправления трафика, аутентификация клиентов не работает, не перенаправляются FTP и HTTPS запросы.

Аутентифицирующий режим

Для работы в этом режиме клиенты должны быть настроены для работы с прокси-сервером (в настройках соединения должен быть прописан адрес прокси-сервера). Может выполняться аутентификация и авторизация клиентов через Kerberos, Ldap, NTLM, IP и Radius. Возможно построение взаимодействия с серверами Microsoft Active Directory путем аутентификации клиентов – членов домена, используя протокол Kerberos, и последующей авторизации членов групп домена используя LDAP в прозрачном режиме (пользователь вводит свой пароль только при регистрации в домене). Для авторизированных групп возможно применение различных настроек контроля доступа и QoS (delay pools).

Обратный прокси-сервер

Прокси-сервер кэширует исходящие данные. Обратный прокси-сервер Squid получает данные у HTTP сервера от имени клиента и передает их обратно клиенту (например, в Интернет). Этот режим позволяет осуществить:

  • Использование кэширования, которое снижает нагрузку на HTTP сервера;
  • Распределение нагрузки между HTTP серверами;
  • Маскировку HTTP серверов и их характеристик;
  • Предотвращение web атак на сервера.

Схемы режимов работы SQUID

transparent режим

обратный режим

режим аутентификации

На приведенных схемах зелеными стрелками обозначены потоки проксируемого трафика. Движение данных потоков в Linux чаще всего регулируется силами и настройками браузера. Кроме того, очень часто, функции маршрутизатора и прокси выполняет одна машина.

Установка SQUID

Перед установкой и настройкой squid необходимо и убедиться, что машина, на которой будет работать squid имеет доступ во внешнюю сеть и клиенты, которые будут использовать данный прокси имеют доступ к данной машине. Установка прокси-сервера squid как и другого ПО в Linux возможна различными способами, описанными в статье . Я затрону способ установки из репозитория в Debian. Итак, для установки squid необходимо установить пакет squid3, для этого выполнить вот такую команду:

Gw ~ # aptitude install squid3 Следующие НОВЫЕ пакеты будут установлены: libltdl7{a} squid-langpack{a} squid3 squid3-common{a} 0 пакетов обновлено, 4 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено. Необходимо получить 2 157 kB архивов. После распаковки 10,3 MB будет занято. Хотите продолжить? y Получить:1 http://ftp.ru.debian.org/debian/ squeeze/main libltdl7 i386 2.2.6b-2 Получить:2 http://ftp.ru.debian.org/debian/ squeeze/main squid-langpack all 20100628-1 Получить:3 http://ftp.ru.debian.org/debian/ squeeze/main squid3-common all 3.1.6-1.2+squeeze2 Получить:4 http://ftp.ru.debian.org/debian/ squeeze/main squid3 i386 3.1.6-1.2+squeeze2 Получено 2 157 kБ в 9с (238 kБ/с) Выбор ранее не выбранного пакета libltdl7. (Чтение базы данных... на данный момент установлено 41133 файла и каталога.) Распаковывается пакет libltdl7 (из файла.../libltdl7_2.2.6b-2_i386.deb)... Выбор ранее не выбранного пакета squid-langpack. Распаковывается пакет squid-langpack (из файла.../squid-langpack_20100628-1_all.deb)... Выбор ранее не выбранного пакета squid3-common. Распаковывается пакет squid3-common (из файла.../squid3-common_3.1.6-1.2+squeeze2_all.deb)... Выбор ранее не выбранного пакета squid3. Распаковывается пакет squid3 (из файла.../squid3_3.1.6-1.2+squeeze2_i386.deb)... Обрабатываются триггеры для man-db ... Настраивается пакет libltdl7 (2.2.6b-2) ... Настраивается пакет squid-langpack (20100628-1) ... Настраивается пакет squid3-common (3.1.6-1.2+squeeze2) ... Настраивается пакет squid3 (3.1.6-1.2+squeeze2) ... Creating Squid HTTP proxy 3.x spool directory structure 2012/02/15 21:29:41| Creating Swap Directories Restarting Squid HTTP Proxy 3.x: squid3Creating Squid HTTP Proxy 3.x cache structure ... (warning). 2012/02/15 21:29:43| Creating Swap Directories .

Как видно, при установке пакета, была попытка создания каталога кэша , но т.к. он не настроен, то вывалилось предупреждение. Так же, squid добавлен в автозагрузку, запущен и принимает подключения на всех интерфейсах . Но т.к. он не настроен, доступ к интернет-страницам через сервер ограничен. Конфиг сквида расположен в /etc/squid3/squid.conf и состоит из более чем 5,5 тысяч строк и синтаксис его практически не отличается от конфига любого другого сервиса. Бросаться менять какие-то настройки срезу - не стоит. Потом не разгребете. Давайте рассмотрим конфиг, который нам предлагается по умолчанию без комментариев и пустых строк:

Gw ~ # grep -v ^# /etc/squid3/squid.conf | grep -v ^$ acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320

Как видно, в конфигурации по умолчанию, прокси-сервер работает и разрешает обращения только с адресов 127.0.0.0/8. Следует внимательно просмотреть весь список и закомментировать строки с портами не нужных или не используемых сервисов. Более полное понимание данного конфига будет после прочтения следующих разделов. Т.о. если мы запустим консольный браузер lunx с указанием на наш прокси, то сможем увидеть заданную страницу:

Gw ~ # # запускаем бреузер с указанием страницы ya.ru: gw ~ # http_proxy=http://127.0.0.1:3128 lynx ya.ru Идет поиск "ya.ru" сначала gw ~ # # в логе видим обращение к заданной странице: gw ~ # cat /var/log/squid3/access.log 1329527823.407 110 127.0.0.1 TCP_MISS/200 9125 GET http://ya.ru/ - DIRECT/93.158.134.203 text/html

Некоторыепараметры в конфигурационом файле squid могут применяться несколько раз (например acl). Некоторые параметры, особенно имеющие одно значение могут использоваться только один раз. При этом, при использовании такого параметра 2 и более раз - будет использовано последнее значение. Например:

Logfile_rotate 10 # Несколько значений - кончное будет равно 5 logfile_rotate 5

Управление squid

Параметры, с которыми был собран squid Вашего дистрибутива можно посмотреть командой squid3 -v. Например, в Debian squeezу squid собран с параметрами, приведенными ниже:

Prefix=/usr - префикс для других ключей: --mandir=${prefix}/share/man - каталог хранения man-страниц --libexecdir=${prefix}/lib/squid3 - каталог с исполняемыми модулями (в том числе и хелперы) --sysconfdir=/etc/squid3 - каталог хранения конфигурации --with-logdir=/var/log/squid3 - каталог хранения журналов и мн. др...

Настройка squid

Описание настроек squid3 начну с основных настроек , которые желательно произвести при настройке любой конфигурации прокси-сервера. Конфиг сквида расположен в /etc/squid3/squid.conf , это основной конфигурационный файл, в котором содержатся все настройки. (В дистрибутивах Debian и RedHat так же при запуске просматриваются параметры из стартовых файлов настроек /etc/default/squid3 и /etc/sysconfig/squid3 , соответственно). Так же, я упоминал, что там более 5 тысяч строк и что сразу рваться настраивать что-то не разобравшись - не стоит. Синтаксис конфига squid3 классический: строки с # - это комментарии, параметры представляют собой строки "параметр значение ", возможно использование . Конфигурационный файл разбит на разделы для удобства, но важно помнить, что разбор параметров производится "сверху вниз" в порядке очередности. Так же, с помощью параметра include можно подключать внешние конфигурационные файлы.

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

Visible_hostname myproxy

По умолчанию, squid принимает подключения на всех интерфейсах. Если у нас сервер одним из сетевых интерфейсов смотрит во внешний мир, то желательно ограничить подключения только на интерфейсе локальной сети (допустим, 10.0.0.10/24). За это отвечает параметр http_port :

Http_port 10.0.0.10:3128

Как работают данные параметры можно увидеть в следующем листинге:

Gw ~ # # проверяем работу демона до настройки: gw ~ # netstat -antp | grep squ tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 25816/(squid) gw ~ # # внесенные изменения: gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.10:3128 gw ~ # # перечитываем измененный конфиг gw ~ # /etc/init.d/squid3 reload Reloading Squid HTTP Proxy 3.x configuration files. done. gw ~ # # проверяем работу с измененным конфигом: gw ~ # netstat -antp | grep squ tcp 0 0 10.0.0.10:3128 0.0.0.0:* LISTEN 25816/(squid)

Как видно, теперь демон работает только на интерфейсе заданной сети. Стоит так же отметить, что новые версии squid (<3.1) поддерживают задание нескольких параметров http_port. При этом, у разных параметров могут быть указанны дополнительные ключи такие как intercept, tproxy, accel и др., например:

Gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.10:3128 http_port 10.0.0.10:3129 tproxy

Данные параметры задают режи работы прокси-сервера. Например tproxy (старый синтаксис - transparent) задает режим . Данные режимы достойны отдельных статей и в будущем возможно будет рассмотрены.

Теперь необходимо настроить клиентский компьютер и пользоваться интернетом. Но по умолчанию, доступ разрешен только с локалхоста и при попытке доступа к веб пользователь получит ошибку "Доступ запрещен". В логе /var/log/squid3/access.log будет примерно такое сообщение:

1329649479.831 0 10.0.1.55 TCP_DENIED/403 3923 GET http://ya.ru/ - NONE/- text/html

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

Настройка доступа squid

Фактически настройка доступа заключается в описании объекта доступа через параметр acl , а затем разрешении или запрете работы описанному объекту acl при помощи параметра “http_access” . Простейший формат данных настроек имеет следующий вид:

Acl имя_списка тип_отбора характеристики_типа_отбора

где acl - параметр описывающий список контроля доступа , имя которого задается значением имя_списка . Имя чувствительно к регистру букв. тип_отбора задает тип, которому будет соответствовать заданная далее характеристика_типа_отбора . Данная характеристика может принимать такие часто используемые значения, как src (от source) - источник запроса, dst - адрес назначения, arp - МАС-адрес, srcdomain и dstdomain - доменное имя источника и назначения соответственно, port - порт, proto - протокол, time - время и многие другие . Соответственно, значение характиристики_типа_отбора будут формироваться в зависимости от типа_отбора .

Можно указывать несколько строк acl с одинаковыми именами и типами_отбора, в таком случае, данные acl будут объеденены в один список с логической операцией ИЛИ. Например:

Acl site dstdomain site.com acl site dstdomain site.org # аналогичен записи: acl site dstdomain site.com site.org

Словами это звучит так: списку доступа с именем site принадлежат все запросы, отправленные на сайт site.com ИЛИ site.org. Кроме того, имена_спаска чувствительны к регистру, то есть acl site и acl Site это 2 разных списка доступа.

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

Http_access allow|deny [!]имя_списка

где, http_access - параметр задающий последующее правило разрешения (allow ) или запрещения (deny ) доступ, указанному далее имени_списка . При этом, необязательный восклицательный знак инвертирует значение имени списка. То есть при восклицательном знаке значение имени_списка будет звучать как все, кроме тех, кто в принадлежит данному списку . Кроме того, можно задавать несколько списков через пробел, тогда доступ будет разрешен при условии принадлежности ко всем заданным спискам. При этом, все разрешающие правила необходимо указывать до запрещающего ВСЁ правила:

Http_access deny all

Может возникнуть резонный вопрос: зачем задавать данное правило, если мы, например, разрешим доступ к сквиду только избранным acl? Ведь остальные, кто не попадают в данный acl итак "проходят мимо"... Все просто. По-умолчанию, squid использует разрешающее/запрещающее правило противоположное последнему. Например:

# у нас есть единственное разрешеющее правило для некоторого acl user: http_access allow user # если при доступе к squid, клиент не попал в этот acl, то к нему будет применено действие deny. # А если у нас есть два правила http_access allow user http_access deny user2 # и клиент не входит ни в acl user, ни в acl user2, то к нему применится allow. # То есть действие противоположное последнему http_access deny user2

Это, как говориться - основы основ. Давайте рассмотрим простой пример. Предположим, у нас есть 2 сети 10.0.1.0/24 и 10.0.0.0/24, а так же хост 10.0.4.1, которым необходимо разрешить доступ к интернету. Для разрешения доступа необходимо создать описание нового списка доступа в секции "ACCESS CONTROL" файла squid.conf:

Acl lan src 10.0.1.0/24 10.0.0.0/24 acl lan src 10.0.4.1

Для бОльшего удобства, можно задать эти правила в отдельном файле, указав путь к нему в место характеристики_типа_отбора . Вот:

Gw ~ # # создадим отдельный каталог для хранения списков доступа gw ~ # mkdir /etc/squid3/acls/ gw ~ # # занесем наши подсети и хосты в отдельный файл gw ~ # vim /etc/squid3/acls/lan.acl gw ~ # cat /etc/squid3/acls/lan.acl 10.0.1.0/24 10.0.0.0/24 10.0.4.1 gw ~ # # опишем созданный файл в конфиге (путь необходимо заключить в кавычки) gw ~ # grep lan.acl /etc/squid3/squid.conf acl lan src "/etc/squid3/acls/lan.acl"

Разрешим созданному списку доступа lan доступ в интернет и скажем сквиду перечитать конфигурационный файл:

Gw ~ # grep lan /etc/squid3/squid.conf | grep acce http_access allow lan gw ~ # service squid3 reload Reloading Squid HTTP Proxy 3.x configuration files. done.

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

Настройка параметров кэша squid

Важным моментом настройки squid является настройка параметров кэширования в squid . Место размещения кэша задается параметром cache_dir в squid.conf. Формат параметр следующий:

Cache_dir тип путь размер L1 L2

где, тип - это алгоритм формирования кэша, может быть: ufs (unix file system), aufs (async ufs), diskd (внешние процессы для избежания блокировки squid на дисковом вводе/выводе). Рекомендуется использовать ufs , хотя некоторые хвалят aufs . Путь - задает место размещения кэша в файловой системе (должен существовать и иметь права доступа на запись для пользователя, под которым работает squid - обычно proxy). Размер - задает максимальный размер, после которого кэш начнет очищаться. В сети существует множество холиваров по этому параметру. Идеальный размер кеша - от 2 до 10 ГБ в зависимости от числа клиентов. Приблизительно 1 ГБ кеша на каждые 100 тысяч запросов/день. Я придерживаюсь значения в 5 Гб. В Squid каждый кешируемый объект располагается в отдельном файле, сами файлы не сваливаются в одно место, а используется двухуровневая иерархия каталогов. Количество каталогов 1 и 2 уровней и определяют параметры L1 и L2 . Эти значения можно оставить по умолчанию. Но для ориентирования в ситуации приведу цитату с bog.pp.ru:

Эксперимент показал, что при кэше в 700 МБ используется только 2 директории первого уровня. То есть для при стандартной структуре директорий кеша в него "с комфортом" влезает миллион объектов (9 GB), если их больше, то надо увеличить число директорий верхнего уровня

Можно использовать несколько cache_dir . Это положительно сказывается на производительности, особенно, если разместить кэш на разных дисках. Еще больше ускорить работу кэша можно, разместив кэш в tmpfs. Для каждого параметра cache_dir можно в разделе options определить параметр read-only (только чтение) и max-size (максимальный размер объекта).

Максимальный размер объекта в кэше определяется параметром maximum_object_size , значение по умолчанию - 4 Мб. Я данное значение увеличил до 60 Мб, т.к. сотрудникам в локальной сети часто приходится скачивать однотипные файлы до указанного размера:

Maximum_object_size 61440 KB

Аналогично? есть и параметр minimum_object_size отвечающий за минимальный размер объекта, по умолчанию его значение “0” то есть отключен. Я рекомендую значение этого параметра увеличить до 2-3 Кб, что снизит нагрузку на диск при поиске маленьких объектов.

Объем ОЗУ , используемый сквидом задается в параметре cache_mem , значение по умолчанию 256 Мб (в версии 3.1). Данное значение я оставил по умолчанию. Менять это значение стоит лишь в том случае, если сквид вас об этом попросит в логах. После данных изменений, необходимо перезапустить сквид, при этом будет создана структура каталогов:

Gw ~ # service squid3 start Starting Squid HTTP Proxy 3.x: squid3Creating Squid HTTP Proxy 3.x cache structure ... (warning). 2012/02/19 22:58:21| Creating Swap Directories 2012/02/19 22:58:21| /var/spool/squid3 exists 2012/02/19 22:58:21| Making directories in /var/spool/squid3/00 2012/02/19 22:58:21| Making directories in /var/spool/squid3/01 2012/02/19 22:58:21| Making directories in /var/spool/squid3/02 2012/02/19 22:58:21| Making directories in /var/spool/squid3/03 2012/02/19 22:58:21| Making directories in /var/spool/squid3/04 2012/02/19 22:58:21| Making directories in /var/spool/squid3/05 2012/02/19 22:58:21| Making directories in /var/spool/squid3/06 2012/02/19 22:58:21| Making directories in /var/spool/squid3/07 2012/02/19 22:58:21| Making directories in /var/spool/squid3/08 2012/02/19 22:58:21| Making directories in /var/spool/squid3/09 2012/02/19 22:58:21| Making directories in /var/spool/squid3/0A 2012/02/19 22:58:21| Making directories in /var/spool/squid3/0B 2012/02/19 22:58:21| Making directories in /var/spool/squid3/0C 2012/02/19 22:58:21| Making directories in /var/spool/squid3/0D 2012/02/19 22:58:21| Making directories in /var/spool/squid3/0E 2012/02/19 22:58:21| Making directories in /var/spool/squid3/0F .

Много интересных вопросов и ответов на них по использованию кэша и памяти squid"ом описано . На этом, можно считать типовое решение по настройке прокси-сервера законченным.

Пример настройки прозрачного прокси squid

Что есть прозрачный прокси ? Это режим работы прокси сервера, когда клиент не настраивается на работу через прокси и посылает запросы в сеть по протоколу HTTP, как если бы клиент браузер работал напрямую с веб-сервером. При этом, силами (в linux - ) исходящие запросы на HTTP направляются на порт, на котором запущен прокси. Прокси-сервер же, в свою очередь, преобразовывает HTTP запросы в запросы протокола прокси-сервера и посылает ответы клиенту, как веб сервер. Т.о. для клиента прозрачно происходит взаимодействие с прокси-сервером.

Важно понимать и знать! Данный метод поддерживает только HTTP протокол , и не поддерживает gopher, FTP или другое проксирование. А так же, Squid не умеет одновременно работать в прозрачном режиме и в режиме аутентификации.

Для настройки прозрачного режима, необходимо:

1. Задать прозрачный режим в настройках прокси. Это делается в параметре http_port , например:

Http_port ip:port transparent

2. Завернуть пользователей соответствующим правилом на нужный порт силами iptables:

Iptables -t nat -A PREROUTING -i имя_входящего_интерфейса -s подсеть_локльной_сети -p tcp --dport 80 -j REDIRECT --to-port порт_squid, пример: iptables -t nat -A PREROUTING -i eth1 -s 10.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

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

Траблешуттинг

В первую очередь, диагностика работы squid заключается в просмотре журналов , расположенных в /var/log/squid3 . Большинство проблем решается данным способом. Если это не помогло решить проблему, то переключив демона в дебаг режим командой squid3 -k debug проблему будет найти проще. Собственно, что из себя представляет лог сквида? Файлы логов содержат различную информацию о загрузке и производительности Squid. В log пишутся кроме информации о доступе, /preеще и системные ошибки и информация о потреблении ресурсов, таких, например, как память или дисковое пространство.

Формат log файлов Squid представляет собой строку из значений, разделенных одним или несколькими пробелами:

Время.мс время_отклика ip_src Squid_req_status/HTTP_status byte_snd метод URL user squid_her_status/ip_dst MIME

  • время - время в формате unix (Количество секунд от 00:00 1970.01.01)
  • мс - миллисекунды с точностью до 3х знаков
  • время_отклика - время отклика, миллисекунд
  • ip_src - IP адрес источника
  • Squid_req_status - статус запроса у squid (например, TCP_HIT для ранее кешируемых объектов, TCP_MISS если запрашиваемый объект взят не из локального кеша, UDP_HIT и UDP_MISS то же для братских запросов)
  • HTTP_status - статус http протокола (200 для удачных, 000 для UDP запросов, 403 для перенаправлений, 500 для ошибок)
  • byte_snd - передано, байт в ответ включая HTTP заголовок
  • метод - метод запроса GET или POST
  • URL - запрошенный url-адрес
  • user - имя авторизованного пользователя
  • squid_her_status - статус иерархии squid - Результат запросов к братским/родительским кешам
  • ip_dst - IP адрес запрашиваемого узла
  • MIME - mime-type

Рассмотрим на примере:

1329732295.053 374 10.0.1.55 TCP_MISS/200 1475 GET http://www.youtube.com/live_comments? - DIRECT/173.194.69.91 text/xml

Как видно, запрос сделан в 1329732295.053, ответ удаленного сервера составил 374 мс, хост, запросивший страницу имеет IP 10.0.1.55, запрошенный объект был передан не из локального кэша (TCP_MISS), код ответа сервера - 200, клиенту передано 1475 байт методом GET, был запрошен URL http://www.youtube.com/live_comments?, имя пользователя не определено, объект был получен напрямую от сервера с IP 173.194.69.91, был передан текст, т.к. mime - text/xml. Вот.

Некоторые заключительные моменты о squid3

В статье я рассмотрел основные принципы работы прокси сервера, а так же, базовые настройки, позволяющие реализовать простейший кэширующий сервер, а так же организовать работу squid в прозрачном (transparent) режиме. Squid поддерживает несколько вариантов авторизации (по IP, через LDAP, MySQL, NTLM и др.), возможности ограничения пропускной способности канала и контроля доступа к ресурсам интернет. Работу сквида с методами различной авторизации и примеры контроля трафика я рассмотрю в следующих статьях.


В этой части я расскажу вам про то, какие основные параметры необходимо менять, хотя и не обязательны, ведь разработчики самого сквида выставили довольно хорошо львиную долю значений. Итак, начнем по порядку...
Так как я часто работаю через ssh соединение, иногда на некоторых серверах бывает отвратительная скорость, в связи с этой проблемой рекомендую писать все в самом начале конфига, что дает ему довольно хорошо читаемый вид, и не нужно поиском искать все значения. Хотя, хочу заметить, что все второстепенные параметры(кроме списков доступов ACL и парочки других) не задаются в конфиге по умолчанию. На деле же прописан дефолтный параметр, и он имеет комментарий. Так что нам не придется искать каждый параметр. НО(!!!) если вы уже правили, то не нужно начинать писать все в самом верху, необходимо найти рас комментированные значения и менять их. Поехали.

Первое что я советую сметить, хотя бы на время тестирования это параметр shutdown_lifetime по дефолту он имеет значение 30 секунд, что очень долго. Приведу пример, иногда бывает такое, что ты что-то накосячил, и инет у всего офиса пропал, ты быстро изменил свою ошибку, но сам сквид после того как ты ему послал SIGTERM или SIGHUP(перезагружаешь) ждет время, которое стоит в этом параметре, в течении которого новые соединения не будут устанавливаться, а старые должны закончить закачку. Я обычно ставлю:
shutdown_lifetime 5
Слудущими параметрами будут параметры описывающие кеш cache_dir, maximum_object_size
Итак, если у нас стоит нормальный шлюз, которые проксирует инет, и в организации хватает компов >30, то нужно ставить минимум 2 гига, хотя два в принципе и достаточно большинству. У параметра cache_dir много параметров, я не хочу на них останавливаться, ибо все это отлично описано в манах. Я привиду лишь, то что считаю наиболее рациональным, стандартные 256 Мб ни куда не годятся:)
cache_dir ufs /var/squid/cache 2048 16 256
после этого необходимо пересоздать каталоги командой Squid -z , что сотрет весь наш предедуший кеш.

maximum_object_size говорит сквиду стоит ли записывать файлы размером больше определенного.
maximum_object_size 10024 , мне кажется что этого вполне хватит, потом некоторые можно будет выуживать из кеша. Иногда полезно если у вас работники качают свежую версию, например Adobe Flash Player.

visible_hostname "%Имя хоста%"

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

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

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

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

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

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

Состав Squid

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

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

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

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

Однако установка Squid на Windows — задача, решаемая вполне оперативно. Необходимо найти на или релевантных ему ресурсах дистрибутив, содержащий файлы типа.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 Для того чтобы найти его, необходимо выбрать пункт меню 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. Все четыре компонента имеют огромное значение для решения задач, которые стоят перед системными администраторами в аспекте оптимизации ресурсов локальной сети.