Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

squid [2019/06/04 18:54]
squid [2020/11/18 19:10] (текущий)
Строка 1: Строка 1:
 +====== Squid proxy настройка ======
  
 +{{htmlmetatags>
 +metatag-description=(Squid - это полнофункциональное приложение кэширующего прокси сервера для HTTP, FTP и других популярных сетевых протоколов.)
 +}}
 +
 +{{ ::squid-proxy-linux.jpg?nolink&400 |}}
 +
 +Homepage: [[http://www.squid-cache.org|Squid]]
 +
 +**Squid** (кальмар) - кэширующий прокси- сервер для протоколов [[HTTP]], [[FTP]], HTTPS (при соответствующих настройках). Лицензия GNU [[GPL]].
 +
 +Одной из особенностей squid является возможность работать в режиме «обратного прокси» («reverse proxy»), так же известного как «ускоритель» («HTTP accelerator»). В этом случае вместо кэширования запросов нескольких пользователей к множеству сайтов, кэшируются запросы множества пользователей к нескольким сайтам. В этом режиме принятый запрос проверяется на «динамичность» (нужно ли каждый раз обрабатывать запрос с нуля) и «возраст» (актуальны ли ещё данные). Если данные ещё актуальны и не поменялись, то запрос не передаётся серверу, а отдаётся из кэша squid. Таким образом существенно снижается нагрузка на серверы. «Обратный прокси» способен распределять запросы между несколькими серверами, балансируя нагрузку и/или обеспечивая отказоустойчивость, то есть фактически предоставляет функциональность, аналогичную [[кластер|кластеру]].
 +
 +Squid поддерживает работу в режиме "прозрачного прокси". В режиме прозрачности не проксируются FTP- и HTTPS- запросы.
 +===== Squid и Debian =====
 +  * OC: Debian GNU/Linux wheezy/sid 3.0.0-1-amd64 #1 SMP x86_64 GNU/Linux
 +  * Squid 3.1.18-1 Stable
 +<file>
 +# aptitude install squid3
 +</file>
 +===== Squid и FreeBSD =====
 +OC [[FreeBSD]] 7.2-RELEASE squid-3.1.0.17 beta. В этой версии наконец-то упростили (уменьшили) конфигурационный файл Squid.
 +
 +Конечная цель настройка прозрачного прокси Squid с использованием пакетного фильтра [[Packet Filter Firewall (PF)]].
 +<code>
 +> > cd /usr/ports/www/squid31
 +> make config
 +...
 +[X] SQUID_PF             Enable transparent proxying with PF
 +...
 +> make install clean
 +</code>
 +===== squid.conf =====
 +<code>
 +> ee /usr/local/etc/squid/squid.conf
 +# выводить сообщения пользователям на украинском языке, по умолчанию английский
 +error_default_language uk-ua
 +# Squid слушает порт только на localhost. intercept включаем прозрачный прокси
 +http_port 127.0.0.1:3128 intercept
 +visible_hostname = local
 +# например есть ОЗУ 192 Мб -  можно выставить 64 Mб. Выделение ОЗУ по кеш, а не под процесс SQUID.
 +cache_mem 64 MB
 +# размер папки с кешем 800 Мб
 +cache_dir ufs /usr/local/squid/cache 800 16 256
 +# пределы для включения механизма очистки кеша от устаревших данных, в процентах
 +# кеш при достижении 95% заполнения начинает очищаться
 +cache_swap_low 90
 +cache_swap_high 95
 +# политика очистки кеша по умолчанию
 +memory_replacement_policy lru
 +#Этот тэг задает размер объекта который может хранится в памяти. Объекты
 +#больше этого размера, сохранятся в памяти не будут. Объекты из памяти
 +#достаются быстрее, поэтому там должны содержатся только объекты, которые
 +#часто запрашиваются клиентами. Увеличение значения этого тэга приводит к снижению производительности сервера.
 +maximum_object_size_in_memory 512 KB
 +# минимальный размер файл для сохранения в кеше
 +minimum_object_size 0 KB 
 +# максимальный размер файл для сохранения в кеше
 +maximum_object_size 4096 KB
 +# Этот тэг позволяет задать пароль ftp пользователю Anonymous(!!!) от имени 
 +# которого Squid будет осуществлять просмотр анонимных ресурсов по FTP протоколу.
 +ftp_user Squid@your.domen
 +# разрешить/запретить пассивный режим FTP
 +ftp_passive on
 +
 +#Этот тэг определяет количество ротаций лог-файла. По умолчанию - 10. Это означает, что когда вы введете команду 'squid -k rotate',
 +то текущий файл журнала получит расширение от 0 до 9 и будет отложен. Вместо него создастся новый файл для ведения журнала и теперь
 +все записи будут вестись уже в новый файл. Если установить значение тэга logfile_rotate 0, то это отключит ротацию файлов.
 +logfile_rotate 4
 +access_log /var/log/squid/access.log squid
 +# отладочная информация. содержит основную информацию об использовании кэша.
 +cache_log /var/log/squid/cache.log
 +# Default: none
 +#cache_store_log /var/log/squid/store.log
 +
 +#Этот тэг задает список слов, которые при нахождении их(этих слов) в URL, 
 +#сообщают Squid то, что объект расположенный по этому URL надо брать 
 +#напрямую, а не из кэша.
 +hierarchy_stoplist cgi-bin ?
 +</code>
 +Проверим конфигурационный файл Squid на ошибки.
 +<code>
 +> squid -f /usr/local/etc/squid/squid.conf -k parse
 +2010/03/16 16:40:32| Processing Configuration File: /usr/local/etc/squid/squid.conf (depth 0)
 +</code>
 +Перед первым запуском нужно создать кеш Squid.
 +<code>
 +> squid -z
 +2010/03/16 16:42:05| Creating Swap Directories
 +2010/03/16 16:42:05| /usr/local/squid/cache exists
 +2010/03/16 16:42:05| Making directories in /usr/local/squid/cache/00
 +...
 +</code>
 +Для запуска Squid нужно добавить строку squid_enable=yes в файл rc.conf
 +<code>
 +> /usr/local/etc/rc.d/squid start</code>
 +===== Настройки файервола для прозрачного проксирования =====
 +==== PF ====
 +  * Настройка [[Packet Filter Firewall (PF)]]
 +<code>
 +ext_if_a="tun0"
 +int_if_a="rl0"
 +int_if_b="rl1"
 +LanAll =  "{10.90.90.0/24, 192.168.35.0/24, 192.168.1.0/24}"
 +Lanint_if_b = "{10.90.90.0/24, 192.168.35.0/24}"
 +
 +# RDR transparent proxy
 +rdr on $int_if_b inet proto tcp from $Lanint_if_b to any port 80 -> 127.0.0.1 port 3128
 +rdr on $int_if_a inet proto tcp from 192.168.1.0/24 to any port 80 -> 127.0.0.1 port 3128
 +# NAT
 +nat on $ext_if_a inet from $LanAll to any -> ($ext_if_a)
 +
 +</code>
 +  * Ошибка: IpIntercept.cc(316) PfInterception: PF open failed: (13) Permission denied. Для ее устранения нужно дать доступ (чтение) Squid к PF.
 +<code>
 +chown root:squid /dev/pf
 +chmod 660 /dev/pf
 +</code> 
 +==== iptables ====
 +
 +===== Cron Squid =====
 +<code>
 +> crontab -e
 +@daily squidstat.sh
 +> ee squidstat.sh
 +#!/bin/sh
 +#
 +/usr/local/www/lightsquid/lightparser.pl
 +/usr/local/sbin/squid -k rotate
 +rm /usr/local/squid/logs/access.log.0
 +rm /usr/local/squid/logs/cache.log.0
 +rm /usr/local/squid/logs/store.log.0
 +</code>
 +  * Скрипт для проверки работы Squid: если Squid упал -запускает его.
 +<file>
 +> ee cron_start_squid.sh
 +#!/bin/sh
 +
 +if [ -s /usr/local/squid/squid.pid ]
 +        then 
 +        else echo start squid: `date` >> /var/log/squid_down.log ; `/usr/local/etc/rc.d/squid start >> /dev/null`
 +fi
 +</file>
 +
 +===== ACL Squid =====
 +Настройка доступа в Squid настраивается через списки доступа ACL. Правила читаются и применяются сверху вниз - то есть последовательность расположения директив http_access важна.
 +
 +Ограничения к ресурсам происходит в два этапа:
 +  * определение условия запроса
 +  * разрешить или запретить определенное на первом шаге условие
 +<file>
 +acl dbserv src 192.168.1.11/32 #описывает единственную машину с адресом 192.168.1.11 и назначает ей ACL с dbserv
 +http_access deny dbserv #запрет доступа в интернет ACL dbserv
 +</file>
 +===== Настройка аутентификации Squid =====
 +Настройка аутентификации при помощи программы ncsa_auth. Пользователи и пароли хранятся в файле /etc/squid/passwd, который создается при помощи утилиты [[htpasswd]].
 +<file>
 +#Recommended minimum configuration per scheme:
 +auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd 
 +auth_param basic children 5
 +# после realm можно написать любу. строку. Она будет отображаться в заголовке окна ввода пароля
 +auth_param basic realm Squid proxy-caching DARK
 +# проверяет изменил ли сис. администратор пароль в файле /etc/squid/passwd. Если да пользователя попросят ввести новый пароль.
 +auth_param basic credentialsttl 2 hours
 +auth_param basic casesensitive off
 +</file>
 +Эти правила должны быть применены к ACL, например
 +<file>
 +# Указали Squid что настроили аутентификацию
 +acl auth proxy_auth REQUIRED
 +# Описали единичный компьютер
 +acl winxp src 10.5.21.4/32
 +# Указали разрешить доступ этому компьютеру после ввода логина и пароля
 +http_access allow winxp auth
 +</file>
 +
 +
 +
 +===== Ограничение ширины канала Squid =====
 +  * [[http://break-people.ru/cmsmade/index.php?page=articles_squid_practice_how_to_use_delay_pools_to_limit_download_speed|Squid на практике. Ограничение скорости доступа в Интернет]]
 +  * [[http://break-people.ru/cmsmade/index.php?page=software_proxy_squid_shape|Разделение внешнего канала]]
 +<note important>Squid должен быть собран с опцией [х] SQUID_DELAY_POOLS    Enable delay pools </note>
 +<file>
 +http_access allow winxp
 +
 +delay_pools 1
 +delay_class 1 1
 +delay_parameters 1 8000/8000
 +#64KB
 +delay_access 1 allow winxp
 +delay_access 1 deny all
 +</file>
 +
 +  * **delay_pools** Этот тэг отвечает за количество используемых delay pools. Например, если у вас есть один delay pool класса 2 и один delay pool класса 3, то в целом вы  имеете 2 delay pool. Соответственно, в этом случае, тэгу следует задать значение равное 2. По умолчанию: delay_pools 0
 +  * **delay_parameters** ограничить скорость на пулах, например<file>
 +# без ограничений
 +#delay_parameters 1 -1/-1
 +# ограничить скорость 64Kbit/c
 +#delay_parameters 1 8000/8000
 +# ограничить скорость 256Kbit/c
 +#delay_parameters 1 32000/32000
 +# если пользователь пытается скачать файл размера больше чем 32000 - тогда ограничить скорость 800
 +#delay_parameters 1 800/32000
 +
 +</file>
 +===== ERROR PfInterception: PF open failed =====
 +В файле /var/log/squid/cache.log появляется строка с ошибкой:
 +<code>2010/07/19 13:29:28| IpIntercept.cc(316) PfInterception: PF open failed: (13) Permission denied</code>
 +Исправить эту ошибку можно несколькими способами
 +  * Первый: chmod +r /dev/pf - что не является безопасным.
 +  * Второй: <file>
 +> ee /etc/devfs.conf
 +# Allow Squid read acess to /dev/pf
 +own     pf      root:squid
 +perm    pf      0640
 +/etc/rc.d/devfs restart
 +</file>
 +
 +====== Статистика Squid ======
 +
 +Скриптов для сбора статистики Squid довольно много.
 +  * LightSquid
 +  * [[Free-SA]]
 +  * [[Sarg]] - Squid Analysis Report Generator
 +  * Calamaris - анализирует файлы журнала (logfiles) множества разнообразных Web прокси-серверов и генерирует отчет о максимальном использовании (peak-usage), способах запросов (request-methods), отчетах статуса входящих и исходящих запросов, вторичных и высокоуровневых адресатах, типах содержания и производительности.
 +
 +====== Ссылки ======
 +  * Frox кеширование FTP в связке со Squid.
 +  * [[Squid SNMP]]
 +  * [[http://wiki.squid-cache.org/ConfigExamples|Wiki Squid Config Examples]]
 +  * [[http://squid.h12.ru/FAQ/FAQ-10.html|Squid Контроль доступа]]
 +  * [[http://www.opennet.ru/base/net/squid_conf.txt.html|Перевод комментариев к файлу конфигурации Squid]]
 +  * [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat|Linux traffic Interception using DNAT]]

Рейтинг курсов Английский язык по Скайп