Установка Squid — Энциклопедия хостинга. Начальная настройка прокси-сервера Squid Особенности интеграции с Active Directory

  • 25.01.2022

Сегодня мы поговорим о прокси-серверах.

Прокси-сервер - это такая штука, обеспечивающая доступ нескольких компьютеров из одной сети в другую сеть (но не путать с маршрутизаторами - это совсем разные вещи, прокси-сервер работает на прикладном уровне). Наиболее расспространенная задача прокси-сервера - обеспечить доступ в интернет для ПК, на которых его нет через один ПК, который имеет доступ в глобальную сеть. Рассмотрим эту задачу в случае использования Windows-компьютера в качестве шлюза в интернет.

Для решения этой задачи можно пользоваться проприетарными решениями с визуальным интерфейсом - например, UserGate.Но у меня не получилось заставить его корректно работать на ПК с Windows 7 да и он платный:) Поэтому лучшим решением я считаю доставшийся нам с *nix-ов Squid. Скачать сие творение можно по адресу: Squid 2.7 (последняя версия на момент написания статьи)

Скачиваем и распаковываем желательно в корень диска. Не пытайтесь что-нибудь запустить оттуда - в этой программе нет графического интерфейса - и пусть вас это не пугает:)
Далее открываем консоль - Win+R / сmd / переходим в папку с установленным сквидом (далее я буду писать для пути установки c:\squid)

c:\
cd c:\squid\sbin

Теперь необходимо установить сквид как службу Windows командой:

squid -i -f c:/squid/etc/squid.conf -n Squid27

Где Squid27 - имя службы, которое в принципе может быть любое допустимое.

Теперь надо подредактировать файл настроек squid.conf, который находится в папке c:/squid/etc/ советую забекапить оригинальный файл. Далее удаляем из этого файла весь текст и прописываем следующее:

http_port 3128
acl localnet src 192.168.3.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny all

cache_log none
cache_store_log none

где

  • http_port 3128 - номер порта на сервере, через который работает скви д. Т. е. в настройках клиентов будем указывать адрес сервера и этот порт;
  • acl localnet src 192.168.0.0/255.255.0.0 - эта строчка указывает диапазон ip-адресов, для которых возможно подключение к нашему прокси. Маску можно указывать как /8, /16, /24 (для 255.0.0.0, 255.255.0.0, 255.255.255.0 соответсвенно), а localnet - это имя. По сути, этой строчкой мы объявляем переменную, с которой дальше будем работать. следующая строчка аналогично объявляет переменную all, где указаны все существующие ip;
  • http_access allow localnet - этой строкой мы разрешаем доступ с ip, указанных в переменной localnet к нашему прокси;
  • http_access deny all - запрещаем всем остальным доступ к прокси. Эти разрешения работают сверху-вниз, потому эту строчку нужно указывать последней! Иначе никто до проксика не достучится:)
  • cache_log none - нужна, как и следующая строка, чтобы логи не разрослись в гигабайты)
Еще можно внести следующие параметры:
  • cache_mem 32 MB - определяет размер дополнительного кеша сквида в оперативной памяти;
  • cache_dir ufs c:/squid/var/cache 100 16 256 - определяет путь к папке кеша, размер его в Мб (100) и количество подпапок (зачем последнее - я так и не понял:))
Теперь надо в той же папке убрать ".default" в названии файла mime.conf или просто создать пустой текстовый файл с таким именем. Это нужно для формирования кеша. В консоли набираем команду (находясь в папке sbin):

squid -z -f c:\squid\etc\squid.conf

Вот, в принципе, мы и готовы к запуску нашего прокси. Пишем в командной строке (или можно зайти в Службы и запустить мышкой:)

net start Squid27

Остановка:

net stop squid27

Переконфигурация:

squid -n Squid27 -f с:/squid/etc/squid.conf -k reconfigure

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

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. Все четыре компонента имеют огромное значение для решения задач, которые стоят перед системными администраторами в аспекте оптимизации ресурсов локальной сети.

Обновляем систему:

Добавляем правило в firewalld:

firewall-cmd --permanent --add-port=3128/tcp

* где 3128 — порт, на котором будет настроен наш прокси-сервер .

и перезапускаем firewalld:

firewall-cmd --reload

Установка и настройка Squid

Устанавливаем прокси-сервер следующей командой:

yum install squid

И открываем на редактирование конфигурационный файл:

vi /etc/squid/squid.conf

Если сеть клиентских компьютеров отличается от стандартной (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8), необходимо ее добавить в acl, например:

acl localnet src 217.66.157.0/24

или через файл:

acl localnet src "/etc/squid/acl_localnet"

* кавычки обязательны
** после необходимо создать файл /etc/squid/acl_localnet и с каждой строчки перечислить разрешенные IP-адреса.

Чтобы разрешить весь трафик, добавляем следующую строчку:

http_access allow all

* важно, чтобы она была выше запрещающей — http_access deny all

Настраиваем директорию для кэша :

cache_dir ufs /var/spool/squid 4096 32 256

* где ufs файловая система (ufs для SQUID является самой подходящей); /var/spool/squid — директория хранения кэша; 4096 — объем пространства в мегабайтах, которое будет выделено под кэш; 32 — количество каталого первого уровня, которое будет создано для размещение кэша; 256 — количество каталого второго уровня, которое будет создано для размещение кэша.

Теперь создаем структуру папок под кэш следующей командой:

И уже можно запускать squid:

systemctl start squid

Не забываем разрешить его автозапуск:

systemctl enable squid

Проверка

Заходим в настройки браузера и настраиваем использование прокси-сервера. Например, в Mozilla Firefox настройки нужно выставить такими:

* где 192.168.163.166 — IP-адрес моего прокси-сервера.

Теперь открываем сайт 2ip.ru . После его загрузки мы увидем внешний IP-адрес — он должен соответствовать той сети, от которой работает настроенный SQUID.

Прозрачный прокси

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

vi /etc/squid/squid.conf

Находим строчку:

И приводим ее к следующему виду:

http_port 3128 transparent

И перезагружаем squid:

systemctl restart squid

Squid + HTTPS

Специально настраивать https для squid в CentOS 7 мне не пришлось — все заработало по умолчанию.

Авторизация по логину и паролю

Открываем конфигурационный файл:

vi /etc/squid/squid.conf

Вставляем следующее:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/auth_users
auth_param basic children 25
auth_param basic realm SQUID PROXY
auth_param basic credentialsttl 3 hours
acl auth_users proxy_auth REQUIRED

* где /usr/lib64/squid/basic_ncsa_auth — расположение ncsa_auth (в зависимости от системы может находиться в другом каталоге); /etc/squid/auth_users — файл с логинами и паролями; children 25 разрешает 25 одновременных подключений; SQUID PROXY — произвольная фраза для приветствия; credentialsttl 3 hours будет держать сессию 3 часа, после потребуется повторный ввод логина и пароля.

http_access deny !Safe_ports

Добавляем:

http_access allow auth_users

Создаем файл с пользователями и создаем первую пару логина и пароля:

htpasswd -c /etc/squid/auth_users user1

* если система вернет ошибку «bash: htpasswd: command not found » установим htpasswd командой yum install httpd-tools

Создаем второго пользователя:

htpasswd /etc/squid/auth_users user2

И перезагружаем squid:

systemctl restart squid

Исходящий сетевой интерфейс

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

Squid - это полнофункциональное приложение кэширующего прокси сервера, которое предоставляет сервисы кэширования и прокси для HTTP , FTP и других популярных сетевых протоколов. Squid может осуществлять кэширование и проксирование SSL запросов и кэширование результатов DNS поиска, а также выполнять прозрачное кэширование. Squid также поддерживает широкий набор кэширующих протоколов, таких как ICP (кэширующий интернет протокол), HTCP (гипертекстовый кэширующий протокол), CARP (протокол кэширования маршрутизации) и WCCP (кэширующий протокол перенаправления контента).

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

Установка

В терминале введите следующую команду для установки сервера Squid:

Sudo apt-get install squid

Настройка

Squid настраивается редактированием директив, содержащихся в конфигурационном файле /etc/squid/squid.conf. Следующие примеры иллюстрируют некоторые директивы, которые могут быть изменены для воздействие на поведение сервера Squid. Для более глубокой настройки Squid смотрите раздел .

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

Скопируйте файл /etc/squid/squid.conf и защитите его от записи следующими командами в терминале:

Sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original sudo chmod a-w /etc/squid/squid.conf.original

1. Для настройки вашего сервера Squid на прослушивание порта 8888 вместо стандартного 3128, измените директиву http_port как показано здесь:

Http_port 8888

2. Измените директиву visible_hostname для того, чтобы присвоить серверу Squid определенное имя хоста (hostname). Это имя необязательно должно быть именем хоста компьютера. В примере оно определено как weezie:

Visible_hostname weezie

3. Используя контроль доступа Squid, вы можете настроить, чтобы использование интернет сервиса прокси было доступно только пользователям с определенных IP адресов. Например, мы проиллюстрируем доступ пользователей только из подсети 192.168.42.0/24:

ACL

Acl fortytwo_network src 192.168.42.0/24

http_access вашего файла /etc/squid/squid.conf:

Http_access allow fortytwo_network

4. Используя великолепные возможности контроля доступа Squid, вы можете настроить возможность использования интернет сервиса прокси только в обычные рабочие часы. Например, мы покажем как настроить доступ сотрудников, которые работают с 9:00 до 17:00 с понедельника по пятницу из подсети 10.1.42.0/24:

Добавьте следующее в конец секции ACL вашего файла /etc/squid/squid.conf:

Acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00

Затем добавьте следующее в начало секции http_access вашего файла /etc/squid/squid.conf:

Http_access allow biz_network biz_hours

После внесения изменений в файл /etc/squid/squid.conf сохраните его и перегрузите приложение сервера squid, чтобы изменения вступили в силу, следующей командой в терминале: sudo /etc/init.d/squid restart

Настройка прокси сервера Squid

Очень часто нам нужен прокси. Например у вас серый IP или вы счастливый пользователь спутникового интернета. Скачать что-то с сайтов подобных Rapidshare нереально. Здесь нас и выручит squid.

Для установки proxy необходим сервер на виртуализации KVM. На других виртуализациях размещение proxy-серверов запрещено.

Более расширенный вариант моей статьи можно найти на сайте Курского LUG , где я так же рассмотрел возможность использования squid домашними пользователями, а также интеграцию системы сжатия траффика Globax или Toonel каскадом в squid.

Установка squid

cd /usr/ports/www/squid && make BATCH=yes install

Настройка squid

Немного об acl и правилах

Сердцем конфигурирования squid являются acl (access control list) и правила.
Для начала надо усвоить принципы работы acl. ACL имеют сделующий формат:

Acl <имя> <тип> <содержание>

Например этот acl описывает две пользовательские машины с айпишниками (тип src) 192.168.0.1 и 192.168.0.2

Acl comps src 192.168.0.1/32 192.168.0.2/32

Теперь рассмотрим правила.
Правила имеют следующий формат:

<тип_правила> <действие>

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

Acl all src 0/0 acl vasya src 192.168.1.12/32 http_access allow vasya http_access deny all

Правила типа http_access это правила разрешающие или запрещающие доступ по http. Рассмотри действие вышеописанного отрывка. acl all указывает нам на все айпишники. А acl vasya указывает на один ip 192.168.1.12
Проверка будет проходить так:
1) http_access allow vasya Если через прокси сидит пользователь с этого айпишника то разрешим ему доступ. Проверка будет остановлена, четвертая строка даже не будет проверена.
2) если прокси использует пользователь не с этого айпи, то правило на строке 3 не выполнится и мы перейдем к правилу на строке 4. Поскольку под acl all подходит любой айпи, то данное правило выполнится и мы заблокируем доступ. дальнейшие правила проверяться не будут . Таким образом мы запретили пользоваться прокси всем кроме Васи.

Рассмотрим частую ошибку на основе прошлого примера:

Acl all src 0/0 acl vasya src 192.168.1.12/32 http_access deny all http_access allow vasya

В данном случае даже Вася не сможет пользоваться прокси. Так как правилом на строке 3 мы заблокировали доступ всем, оно выполнилось, и правило на строке 4 даже не будет проверяться. Внимательно следите за порядком правил одного типа.

Создаем конфиг squid

Приступим к написанию конфига. Разберу на примере своего конфига.

Для начала в папке /etc/squid создадим папку acls. В ней я создал 3 файла: banners, nobanners, 1banners
В файле banners хранятся регулярные выражение реклам и баннеров которые будут вырезаны. В nobanners хранятся исключения, то есть те страницы и картинки которые будут грузиться даже если в banners есть правило под которое они попадают. В файле 1banners хранятся регулярные выражения описывающие те баннеры которые будут вырезаться в первую очередь. Содержимое своих файлов фильтрации рекламы приведу в конце статьи.

С root правами создадим файл /etc/squid/squid.conf и начинаем добавлять в него строки:

Укажем порт на котором будет работать прокси: (ВНИМАНИЕ!! Никогда не ставьте стандартные порты вроде 8080 80 или 3128 если не хотите чтобы ваш прокси легко можно было обнаружить)

Http_port 1234

Укажем имя нода на котором стоит squid. Узнать свое имя можно выполнив uname -n

Visible_hostname dimon4eg

Отключим icp

Icp_port 0

Через acl с регулярными выражениями укажем страницы которые не будут кешироваться

Acl donocache urlpath_regex cgi-bin user submit no_cache deny donocache

Создадим папку /var/spool/squid и сделаем chmod 777 /var/spool/squid
Опишем обьем "быстрого" кеша и кеша на жестком диске. Объем быстрого кеша рекомендуется ставить не более 32 метров для экономии оперативной памяти.

Cache_mem 32 MB cache_dir ufs /var/spool/squid 1000 16 256

Аналогично создадим папки /var/log/squid и укажем где хранить логи

Cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log

Таблица mime и pid процесса

Mime_table /etc/squid/mime.conf pid_filename /var/run/squid.pid

Настройки фтп через прокси

Ftp_user anonymous@ ftp_list_width 32 ftp_passive on ftp_sanitycheck on

Служебные acl

Acl all src 0/0 acl SMTP port 25

Список айпи с которых разрешен прокси. Обязательно указать 127.0.0.1 и адрес самого сервера в локалке. Далее укажем всех пользователей кто имеет доступ. (ВНИМАНИЕ, обязательно отключите доступ всем кому попало.)

Acl doallow src 192.128.0.2/32 127.0.0.1/32

Зададим порты которые разрешены

Acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 5190 5552 acl Safe_ports port 777

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

Acl banners url_regex -i "/etc/squid/acls/banners" acl 1banners url_regex -i "/etc/squid/acls/1banners" acl nobanners url_regex -i "/etc/squid/acls/nobanners"

Теперь опишем правила

Http_access deny 1banners http_access deny banners !nobanners http_access deny !Safe_ports http_access deny SMTP http_access allow doallow http_access deny all

Запретим доступ icp

Icp_access deny all

Приложения

Полный текст моего squid.conf

http_port 1234 visible_hostname dimon4eg icp_port 0 acl donocache urlpath_regex cgi-bin user submit no_cache deny donocache
cache_mem 32 MB cache_dir ufs /var/spool/squid 1000 16 256
cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log
mime_table /etc/squid/mime.conf pid_filename /var/run/squid.pid
ftp_user anonymous@ ftp_list_width 32 ftp_passive on ftp_sanitycheck on
acl server src 192.168.0.2/32
acl all src 0/0 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl SSL_ports port 443 563 acl SMTP port 25
acl doallow src 192.128.0.2/32 127.0.0.1/32
acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 acl Safe_ports port 777 acl CONNECT method CONNECT
acl banners url_regex -i "/etc/squid/acls/banners" acl 1banners url_regex -i "/etc/squid/acls/1banners" acl nobanners url_regex -i "/etc/squid/acls/nobanners"
http_access deny 1banners http_access deny banners !nobanners http_access deny !Safe_ports http_access deny SMTP http_access allow doallow http_access deny all
icp_access deny all
never_direct allow all

Мои правила для нарезки рекламы

/etc/squid/acls/banners

.?(count(\d|er|\.rbc)|hitbox|advertising|linkexchange|click\d|\dcount|adriver) .*(/ad(s|v)|\.adnet\.ru|banview|banner|adriver|\dcount|bnr|bans\.|/sale|/pagead) .*exaccess\.ru/asp/. .*(spylog|warlog\.info|ipz.ru/cgi-bin/cm\.cgi\?|c\.mystat-in\.net|c\.bigmir\.net|online\.mirabilis|top\.winrate\.net|vipelita\.ru|cnews\.ru.*/informres).* .*(brs\.trilan\.ru/images|google-analytics\.com|/informer|bantex\.ru|100-100\.ru).* .?(hotlog|tours|sharereactor|&rand=|livejournal\.com/userpic).* ^(www\.)?ad\d?\..* .?images\.rambler\.ru/upl.* .*s1\.adward\.ru/\?r.* .*(bhanvad)\.com.* .*(dosugonline|blogonline|all-web|otvali|loveplanet|ziza|body\.imho|meganame)\.ru.* .?(clx|gold-music)\.ru/.* .*(nnm.ru|rambler|realcoding|kpnemo\.ru/advimg).*\.swf .*/ad?.* .?re(k|c)lama.* .^(www\.)?(1001tur|jmp\.net|kmindex.ru/.*/\?|kreis\.trl\.ru|rot\.goup\.ru/\?|au-au\.ru).* .?r\.mail\.ru/b.*\.swf .?bs\.yandex\.ru/show.* .?br\.gcl\.ru/cgi-bin/br.* .?m1.nedstatbasic.net/basic.js .*\.doubleclick\.net .*an.yandex.ru/* .*/adserver/*