Меню
Бесплатно
Главная  /  ПО  /  Пример сквид с двумя конфигами. Установка и настройка Squid на CentOS

Пример сквид с двумя конфигами. Установка и настройка Squid на CentOS

Вступление

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

Я, с помощью этой статьи, попытаюсь наглядно и доходчиво объяснить о настройках самого распространенного прокси сервера - 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 имя_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.

Ограничения по времени

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

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.

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

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

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

    Весь поток пива ограничен одним краном, но кран делится на подкранчики (на подсети), которые также делятся на мини кранчики (на каждый 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] строка МИНВ процент МАКСВ параметры

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

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

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

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

    override-expire - игнорировать информацию об истечении свежести объекта и использовать МИНВ.

    override-lastmod - игнорировать информацию о дате изменения файла использовать МИНВ.

    reload-into-ims - вместо запроса клиентского запроса "не кешировать документы" (no-cache) посылать запрос "Если изменен с" (If-Modified-Since)

    ignore-reload - игнорировать запросы клиентов "не кешировать документы" (no-cache) или "перезагрузить документ" (reload).


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

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

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

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

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

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

Добавляем правило в 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, TLS, SSL, Internet Gopher и HTTPS. А еще эта штука может быть очень полезной при медленном интернет-соединении. Первоначально Squid был разработан как Unix демон, но потом было выпущено несколько портов для WIndows. Squid распространяется под лицензией GNU General Public License.

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

Есть несколько способов установки Squid в Ubuntu, один из самых распространенных - установка из официальных репозиториев с помощью утилиты apt.

Сначала откройте терминал сочетанием клавиш Ctrl+Alt+T и обновите индекс пакетов:

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

sudo apt install squid

Затем утилита спросит нужно ли продолжать установку, введите Y и дождитесь окончания загрузки и установки:

Затем можно переходить к настройке.

Настройка Squid

Конфигурационный файл сервера находится в директории /etc/squid. В зависимости от версии Squid название папки и самого файла может отличаться, например, /etc/squid3/squid.conf или /etc/squid/squid.conf. Все настройки находятся в этом файле. Давайте его рассмотрим.

vim /etc/squid3/squid.conf

Когда откроется файл вы увидите что то похожее:

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

Контроль доступа

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

Для это используется acl список. это обычный список объектов, сейчас он вообще ничего не значит. Это могут быть ip адреса, порты и т д. Потом мы укажем программе что нужно делать с этим списком, разрешать или запрещать доступ. Синтаксис создания acl списка такой:

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

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

  • src - ip адрес откуда исходит соединение, адрес клиента;
  • dst - ip адрес назначения соединения, адрес сервера, к которому хочет получить доступ клиент;
  • dstdomain - домен назначения соединения;
  • srcdomain - домен клиента;
  • arp - MAC адрес сетевой карты клиента;
  • time - время, когда выполняется соединение;
  • port - порт, к которому пытается получить доступ клиент;
  • proto - протокол, по которому устанавливается соединение;
  • method - метод передачи данных, например, GET - передача данных HTTP, POST - передача данных форм в HTTP, CONNECT - запрос соединения с сервером;
  • http_status - ответ сервера;
  • browser - браузер клиента;
  • url_regex - url адрес, к которому пытаются получить доступ.

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

Добавим список, для доступа к серверу из локальной сети:

acl localnet src 192.168.0.0/16

Создадим список Safe_ports, чтобы разрешить трафик на порты основных сетевых служб, а также незарегистрированные порты выше 1024:

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

Создадим еще два списка - SSL_ports и connect, чтобы разрешить использовать метод connect только для ssl соединений. Это запретит клиенту использовать другие прокси-серверы поверх нашего:

acl SSL_ports port 443

acl connect method CONNECT

Как я уже говорил, эти списки сами по себе ничего не значат и никак не влияют на работу сервера. Чтобы применить список нужно использовать директиву http_access. Ее синтаксис:

http_access действие имя_списка

Действие может быть allow (разрешить) или deny (запретить). теперь запретим доступ ко всем портам, кроме заданных в Safe_ports:

http_access deny Connect !SSL_ports

Теперь разрешим доступ из этого компьютера (acl список localhos предопределен):

http_access allow localhost

Разрешим доступ из локальной сети:

http_access allow localnet

И запретим все остальное:

http_access deny all

Другие настройки

Контроль доступа, это один из самых важных компонентов, но настройка squid ubuntu на этом незакончена. Есть еще много интересных параметров, мы рассмотрим только несколько из них:

http_port - задает ip адрес и порт, на котором будет работать программа. Можно запускать прокси только на этом компьютере такой конструкцией:

http_port localhost:3218

Или в локальной сети:

https_port - задает ip адрес и порт, на котором будут приниматься https соединения. Мы не рассматриваем работу с https в этой статье.

cache_mem - количество памяти, которая выделяется для кэширования объектов.

cache_dir - позволяет задать папку для хранения кэша. По умолчанию весь кэш хранится в оперативной памяти. Синтаксис:

cache_dir файловая_система папка размер_в_мб L1 L2

L1 и L2 - количество подпапок первого и второго уровня. Файловая система определяет каким образом данные будут писаться на диск. Например:

cache_dir aufs /var/spool/squid 100 16 256

coredump_dir - директория, в которую будет сохранен дамп памяти в случае ошибки.

refresh_pattern - очень интересный параметр, который позволяет продлить время жизни объектов в кэше. Синтаксис такой:

refresh_pattern -i регулярное_выражение минимальное_время процент максимальное_время параметры

  • регулярное выражение - задает объекты, к которым нужно применять параметр;
  • минимальное_время - время в минутах пока объект считается свежим;
  • максимальное_время - максимальное время в минутах, пока объект будет свежим;

параметры могут быть такие:

  • override-expire - игнорировать заголовок expire;
  • override-lastmod - игнорировать последнюю дату изменения файла;
  • reload-into-ims - вместо не кэшировать отправлять запрос If-Modified-Since;
  • ignore-reload - игнорировать запросы клиента не кэшировать.

Например:

refresh_pattern -i \.gif$ 43200 100% 43200 override-lastmod override-expire

Вам могут понадобиться и другие настройки после того, как установка squid ubuntu Будет завершена. Но они выходят за рамки этой статьи. Теперь сохраните изменения, закройте файл и перезагрузите Squid:

sudo service squid3 restart

Если эта команда вернет ошибку, попробуйте другую:

sudo service squid restart

Осталось проверить работу нашего прокси-сервера. Это можно сделать с помощью любого браузера. Откройте настройки браузера и выполните настройку прокси. Я покажу как это сделать в Mozilla Firefox. Если у вас другой браузер, например, Google Chrome думаю вы разберетесь как там настраивается прокси.

Настройка клиентской стороны

Откройте браузер, перейдите в Настройка --> Дополнительно --> Сеть . Затем нажмите Настройки в разделе Подключение и выберите настроить прокси вручную :

В поле HTTP прокси укажите IP адрес машины, на которой выполнялась установка Squid сервера, а в поле порт - номер порта 3128. Этот порт используется по умолчанию в Squid, но вы можете изменить номер порта с помощью /etc/squid/squid.conf