Squid proxy настройка
Homepage: Squid
Squid (кальмар) - кэширующий прокси- сервер для протоколов Коды состояния HTTP. Методы и структура протокола HTTP, Раздел FTP: Протокол FTP, серверы, клиенты FTP для Linux и Windows, 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
# aptitude install squid3
Squid и FreeBSD
OC FreeBSD 7.2-RELEASE squid-3.1.0.17 beta. В этой версии наконец-то упростили (уменьшили) конфигурационный файл Squid.
Конечная цель настройка прозрачного прокси Squid с использованием пакетного фильтра Packet Filter Firewall (PF) межсетевой экран FreeBSD.
> > cd /usr/ports/www/squid31 > make config ... [X] SQUID_PF Enable transparent proxying with PF ... > make install clean
squid.conf
> 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 ?
Проверим конфигурационный файл Squid на ошибки.
> 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)
Перед первым запуском нужно создать кеш Squid.
> 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 ...
Для запуска Squid нужно добавить строку squid_enable=yes в файл rc.conf
> /usr/local/etc/rc.d/squid start
Настройки файервола для прозрачного проксирования
PF
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)
- Ошибка: IpIntercept.cc(316) PfInterception: PF open failed: (13) Permission denied. Для ее устранения нужно дать доступ (чтение) Squid к PF.
chown root:squid /dev/pf chmod 660 /dev/pf
iptables
Cron Squid
> 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
- Скрипт для проверки работы Squid: если Squid упал -запускает его.
> 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
ACL Squid
Настройка доступа в Squid настраивается через списки доступа ACL. Правила читаются и применяются сверху вниз - то есть последовательность расположения директив http_access важна.
Ограничения к ресурсам происходит в два этапа:
- определение условия запроса
- разрешить или запретить определенное на первом шаге условие
acl dbserv src 192.168.1.11/32 #описывает единственную машину с адресом 192.168.1.11 и назначает ей ACL с dbserv http_access deny dbserv #запрет доступа в интернет ACL dbserv
Настройка аутентификации Squid
Настройка аутентификации при помощи программы ncsa_auth. Пользователи и пароли хранятся в файле /etc/squid/passwd, который создается при помощи утилиты htpasswd.
#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
Эти правила должны быть применены к ACL, например
# Указали Squid что настроили аутентификацию acl auth proxy_auth REQUIRED # Описали единичный компьютер acl winxp src 10.5.21.4/32 # Указали разрешить доступ этому компьютеру после ввода логина и пароля http_access allow winxp auth
Ограничение ширины канала Squid
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
- delay_pools Этот тэг отвечает за количество используемых delay pools. Например, если у вас есть один delay pool класса 2 и один delay pool класса 3, то в целом вы имеете 2 delay pool. Соответственно, в этом случае, тэгу следует задать значение равное 2. По умолчанию: delay_pools 0
- delay_parameters ограничить скорость на пулах, например
# без ограничений #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
ERROR PfInterception: PF open failed
В файле /var/log/squid/cache.log появляется строка с ошибкой:
2010/07/19 13:29:28| IpIntercept.cc(316) PfInterception: PF open failed: (13) Permission denied
Исправить эту ошибку можно несколькими способами
- Первый: chmod +r /dev/pf - что не является безопасным.
- Второй:
> ee /etc/devfs.conf # Allow Squid read acess to /dev/pf own pf root:squid perm pf 0640 /etc/rc.d/devfs restart
Статистика Squid
Скриптов для сбора статистики Squid довольно много.
- LightSquid
- Sarg анализатор логов Squid - Squid Analysis Report Generator
- Calamaris - анализирует файлы журнала (logfiles) множества разнообразных Web прокси-серверов и генерирует отчет о максимальном использовании (peak-usage), способах запросов (request-methods), отчетах статуса входящих и исходящих запросов, вторичных и высокоуровневых адресатах, типах содержания и производительности.
Ссылки
- Frox кеширование FTP в связке со Squid.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах