doc.3dn.ru
Четверг, 03.12.2020, 02:09
Приветствую Вас Гость | RSS
 
Главная Каталог статейРегистрацияВход
Меню сайта
Категории каталога
LINUX (Server`s) [16]
Windows (Server`s) [3]
Наш опрос
Нужны ли на сайте видео уроки по Flash?
Всего ответов: 484


Главная » Статьи » Сервера » LINUX (Server`s)

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

Инсталляция
Инсталляция squid не слишком сложна. Он поддерживается в большинстве дистрибутивов (RedHat, SuSE, Caldera, Debian и т.д.)

Устанавливаем squid
# apt-get install squid

Теперь, когда вы установили squid, давайте перейдём к следующему разделу, а именно, к его настройке.


Настройка

Итак, вы установили squid и слегка удивлены...."И это всё?" Если бы это было так, мой дорогой читатель. Увы нет....нам предстоит сделать ещё массу вещей, прежде чем в наших руках окажется старый добрый (и к тому же работающий) proxy-сервер.

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

cp /etc/squid/squid.conf /etc/squid/squid.conf.orig

После чего запустить ваш любимый редактор и приступить к редактированию squid.conf

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

Во-первых, нужно сообщить squid'у IP-адрес вашей машины и номер порта, на котором он будет "слушать" запросы. В squid.conf вы найдёте вот такую за комментированную строку:

#http_port 3128

Раскомментируйте её, удалив символ "решётки" (#). По умолчанию выбран порт 3128. Тем не менее, вы можете задать squid'у слушать другой порт!! На своей машине я указал такие параметры:

http_port 192.168.1.1:6080

то заставляет squid "слушать" пакеты, приходящие на адрес 192.168.1.1, порт 6080. Прежде чем выбирать номер порта, убедитесь, что он не занят другим приложением. Это самая часто встречаемая ошибка при настройке squid.

Движемся дальше. В процессе настройки конфигурационного файла важной опцией является cache_mem. Она определяет количество оперативной памяти, которую может использовать proxy-сервер для кеширования.

Я просто раскомментировал эту строку и изменил значение на -- 64 Мб.

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

#cache_swap_low 90
#cache_swap_high 95

Я раскомментировал и изменил эти строки. Указанные мною значения были выбраны исходя из того, что в моём распоряжении был жесткий диск на 60 Гб:

cache_swap_low 95
cache_swap_high 97

Так....пока всё хорошо. Мы сообщили squid'у на каком порту и для какого адреса он должен слушать приходящие пакеты, сколько памяти он может использовать и какую долю объема дискового кеша (в процентах) он может занимать, прежде чем начнёт удалять старую информацию. Замечательно! Если вы внесли все изменения, о которых я говорил, то самое время сохранить их.

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

cache_dir /var/squid/cache 100 16 256

Что о чём тут говорит? "/var/squid/cache" указывает на путь к дисковому кешу с максимальным размером в 100 Мб, содержащему 16 подкаталогов верхнего уровня, каждый из которых в свою очередь содержит 256 подкаталогов.

Последнее, что нужно "подкрутить" в этом файле, прежде чем переходить к настройке фильтров, это использование регистрационных журналов. Следующими за опциями настройки кеша (cache_dir) идут опции, описывающие расположение регистрационных журналов (логов). Как правило, squid пишет информацию в четыре журнала:

  • access log
  • cache log
  • store log
  • swap log

Каждый из журналов имеет в работе proxy-сервера своё собственное назначение. Обычно я "веду" только два из них -- access log и cache log (журналы доступа и использования кеша). По здравому размышлению, остальные мне просто не нужны. :-)

Журнал доступа (access log) регистрирует все запросы, которые делает пользователь (т.е. на какой сайт он хочет попасть, какой файл скачать и т.д.). Когда я учился в школе, мне было не очень интересно, кто и куда пытался попасть. Теперь же я рекомендую всем сисадминам включать эту опцию -- этот журнал очень важен.

Итак, я сделал следующее (раскомментировав TAGS):

cache_access_log /var/squid/logs/access.log
cache_log /var/squid/logs/cache.log

Рекомендую вам оставить пути к файлам журналов как есть.

Обычно я оставляю большинство опций в squid.conf закомментированными. Существует множество ключей, подходящих для различных ситуаций. Каждая опция хорошо (я бы сказал, избыточно) документирована, поэтому, если вы захотите выяснить, что она делает, то прочтите соответствующие комментарии в squid.conf.

Фильтрация (контроль доступа)

В этом разделе мы продолжаем рассматривать "/etc/squid/squid.conf" и я собираюсь подробнее остановиться на контроле доступа (access control).

Контроль доступа предоставляет системному администратору способ контролировать то, какие пользователи могут подключаться к proxy-серверу, через какие IP-адреса, порты и т.д. Такой контроль может быть удобен в больших сетях.

Обычно ACL (Access Control Lists -- списки контроля доступа) содержат следующие настройки:

  • src - Источник, т.е. IP-адрес клиента
  • dst - Пункт назначения, т.е. IP-адрес сервера
  • srcdomain - Источник, т.е. имя домена клиента
  • dstdomain - Пункт назначения, т.е. имя домена сервера
  • time - Время суток и день недели
  • url_regex - Шаблон (регулярное выражение) для поиска в URL
  • urlpath_regex - Шаблон (регулярное выражение) для поиска в пути, содержащемся в URL, исключая протокол и имя хоста
  • proxy_auth - Аутентификация пользователя посредством внешних процессов
  • maxconn - Максимальное количество соединений для конкретного IP-адреса клиента

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

acl    acl_config_name   type_of_acl_config   values_passed_to_acl

В конфигурационном файле squid.conf найдите строку:

http_access deny all

И перед ней добавьте следующее:

acl weekendmechnetwork src 192.168.1.1
acl weekendmechnetwork src 192.168.1.2
acl weekendmechnetwork src 192.168.1.4

http_access allow weekendmechnetwork
http_access deny all


Вы можете изменить имя ACL-правила "weekendmechnetwork" на любое другое по вашему выбору. В нашем случае правило с именем "weekendmechnetwork" используется для определения IP-адреса.

Строка "http_access allow weekendmechnetwork" говорит, что для клиента "weekendmechnetwork" разрешён доступ через http-протокол.

Если вы хотите разрешить доступ в Интернет любой машине, то объявите следующее правило:

http_access allow all

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

Создайте файл /etc/squid/block.txt и поместите регулярные выражения, которые будут блокироваться


odnoklassniki
vkontakte
sex
porno

Теперь в "/etc/squid.conf" укажите следующее:

acl work_time time MTWHF 09:00-18:00

acl weekendmechnetwork src 192.168.1.5  
acl weekendmechnetwork src 192.168.1.7  
 
acl weekendmechnetwork_bl src 192.168.1.2  
acl weekendmechnetwork_bl src 192.168.1.4  
 
acl block url_regex -i "/etc/squid/block.txt"  
 
http_access deny weekendmechnetwork_bl block work_time
http_access allow weekendmechnetwork_bl
http_access allow weekendmechnetwork    
http_access deny all 

Теперь подробнее о новых изменениях:

acl work_time time MTWHF 09:00-18:00 - ACL-правило, обозначающее временные отрезки, где M (Monday - Понетельник), T (Tuesday - Вторник)..... и время в 24-часовом формате. Время указывается до 00:00 часов, тоесть создать правило с 23:00-08:00 - Нельзя, прийдется создавать два правила с 23:00-23:59 и 00:00-08:00.

acl weekendmechnetwork_bl src IP - добавляем в эту группу IP-адреса которым запрещен доступ в рабочее время к определенным ресурсам.

acl block url_regex -i "/etc/squid/block.txt" - тут мы указали путь к файлу с регулярными выражениями для блокировки URL в которых будут встречатся эти регулярные выражения.

http_access deny weekendmechnetwork_bl block work_time - запрещаем группе weekendmechnetwork_bl доступ к определенным ресурсам в рабочее время.

http_access allow weekendmechnetwork_bl - разрешаем группе weekendmechnetwork_bl доступ к остальным ресурсам.

Теперь у нас есть две группы пользователей, с полным доступом weekendmechnetwork и с ограниченным доступом в рабочее время weekendmechnetwork_bl.


Инициализация Squid

Теперь мы переходим к более важной части -- запуску squid. К сожалению, если вы впервые столкнулись со squid, то вам придётся "перелопатить" несколько опций, используемых при его запуске.

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

ФлагОписание
-z
Ключ заставляет создать swap-директории, необходимые для squid. Используется только в том случае, если squid запущен впервые или ваши кеш-директории были удалены.
-f
Эта опция позволяет вместо "/etc/squid.conf" использовать альтернативный конфигурационный файл. Однако, эта опция используется не часто.
-k reconfigureЭтот ключ говорит squid перегрузить конфигурационный файл, без остановки демона squid.
-k rotateЭта опция заставляет squid произвести ротацию журналов -- старые записи удаляются и журналы начинаются заново. Как правило, этот ключ используется при запуске squid через cron.
-k shutdownОстановить выполнение squid.
-k checkПроверить запущен ли демон squid.
-k parseТо же, что и "-k reconfigure".

А это полный список существующих ключей:


Usage: squid [-dhsvzCDFNRVYX] [-f config-file] [-[au] port] [-k signal]
-a port Установить номер HTTP-порта (по умолчанию: 3128).
-d level Записывать отладочную информацию в stderr.
-f file Использовать конфигурационный файл, вместо
/etc/squid.conf
-h Напечатать справочное сообщение.
-k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse
"Парсить" конфигурационный файл, затем послать сигнал
запущенной копии (исключая -k parse) и выйти.
-s Включить запись в syslog.
-u port Определить номер ICP-порта (по умолчанию: 3130), 0 - отключить.
-v Показать номер версии.
-z Создать swap-директории
-C Не обрабатывать критические сигналы (fatal signals).
-D Отключить начальные тесты DNS.
-F Заново загрузить все мета-данные прежде, чем приступить к выполнению запросов.
-N Запустить squid в не-демон режиме.
-R Не устанавливать REUSEADDR на порт.
-V Виртуальный хост httpd-акселератор.
-X Включить отладочный режим.
-Y Возвращать только UDP_HIT или UDP_MISS_NOFETCH при быстрой перезагрузке.

Если вы запускаете squid первый раз, то запустите его под правами root'а с ключом "-z":


squid -z

Это создаёт кеш на диске.

Теперь вы можете выполнить команду:


squid

Источник: http://pc-inform.ru и http://forum.ru-board.com

Категория: LINUX (Server`s) | Добавил: doc (05.03.2009) | Автор: doc
Просмотров: 13721 | Комментарии: 1 | Рейтинг: 4.3/3 |

Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Поиск
Друзья сайта
www.work-zilla.com
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0


Copyright MyCorp © 2020
Бесплатный хостинг uCoz