настройка прозрачного squid3 с пулами задержки

или как навести порядок в офисе

Постановка задачи: Работа в типичном офисе и социальные сети не совместимы. Любой администратор рано или поздно решает задачу — как запретить развлекательный контент, социальные сети и прочие радочти в офисе и ограничить скорость Интернета для пользователей. Причем сделать это так, чтобы не бегать по десяткам или сотням рабочих мест и настраивать каждый компьютер, ноутбук или калькулятор использовать наш прокси-сервер, а сделать это «прозрачно» для всех пользователей. В этих начинаниях нам поможет прозрачный Squid3 с гибким набором правил (ACLs) и пулами задержки (delay pools).

1. Предварительная настройка squid3

Устанавливаем Squid3 (платформа Debian, работаем под root-ом)

server:/# apt-get install squid3

В моем случае установился SQUID 3.1.20. Останавливаем его

server:/# /etc/init.d/squid3 stop

Файл конфигурации хранится в /etc/squid3/squid.conf. Для не сильно посвященных, файл конфигурации внушает легкий трепет количеством своих опций. Однако по существу, незакомментированных опций в этом файле не очень много. Для отбора всех не закомментированных опций из конфигурационного файла воспользуемся несложной командой:

server:/etc/squid3# grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d' > clsquid.conf

Посмотрите полученный файл clsquid.conf:

server:/etc/squid3# cat clsquid.conf | more

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
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
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

Негусто да? Вот и будем доводить SQUID3 до «прозрачного» ума… Вначале подготовим основные правила для нашей сети.. Итак по порядку следования включаемых(изменяемых) опций.

2. Настройка правил ACL для squid3

Предлагаю работать так, вначале «простыня» конфигурационного кода, потом «вязанка» пояснений. Разного уровня администраторы могут часть пропустить, часть адптировать, а часть перенять себе… Но в любом случае, мануал не претендует на идеальность и требует от Вас понимания того, что же Вы собственно говоря, делаете.

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Основные ресурсы нашей офисной сети
acl office src 192.168.1.0/24        # наша сеть
acl users src "/etc/openip.txt"      # Перечень IP-адресов пользователей, которым разрешён Интернет в принципе
acl peering src "/etc/peering.txt"   # Перечень пиринговых сетей провайдера

# Набор правил для пулов задержки
acl vip src "/etc/squid3/pools/vip.txt"                           # Перечень IP-адресов с неограниченными привилегиями
acl delaypool src "/etc/squid3/pools/delay.txt"                   # Для четвертого пула - активно «качающие» пользователей
acl delaypool10 src "/etc/squid3/pools/delay10.txt"               # Для первого пула - наказываем за нарушения резко ограничивая скорость
acl delaysites url_regex -i "/etc/squid3/pools/delay_sites.txt"   # Для четвертого пула - ограничиваем сайты лидеры закачек

# Набор правил для борьбы с нежелательным контентом
# предлагаемые классы: adv,dating,redirector,porn,shopping,socialnet,spyware
acl banner dstdomain "/etc/squid3/ban/adv/domains"                # Реклама, баннеры
acl banner_reg url_regex -i "/etc/squid3/ban/adv/urls"

acl dating dstdomain "/etc/squid3/ban/dating/domains"             # Сайты знакомств
acl dating_reg url_regex -i "/etc/squid3/ban/dating/urls"

acl redirector dstdomain "/etc/squid3/ban/redirector/domains"     # Редиректоры и прокси - извечное зло адмиов
acl redirector_reg url_regex -i "/etc/squid3/ban/redirector/urls"

#acl porno dstdomain "/etc/squid3/ban/porn/domains"               # Порно
#acl porno_reg url_regex -i "/etc/squid3/ban/porn/urls"

#acl shopping url_regex "/etc/squid3/ban/shopping/domains"        # Сайты интернет-торговли и шоппинга
#acl shopping_reg url_regex -i "/etc/squid3/ban/shopping/urls"

acl socialnet dstdomain "/etc/squid3/ban/socialnet/domains"       # Социальные сети
acl socialnet_reg url_regex -i "/etc/squid3/ban/socialnet/urls"

acl spyware dstdomain "/etc/squid3/ban/spyware/domains"           # Опасные сайты
acl spyware_reg url_regex -i "/etc/squid3/ban/spyware/urls"

acl manual dstdomain "/etc/squid3/ban/manual.txt"                 # Вручную добавленные сайты для блокировки
acl manual_reg url_regex -i "/etc/squid3/ban/manual_reg.txt"

acl exceptions url_regex -i "/etc/squid3/exceptions/general.txt"     # Сайты-исключения, перечень ресурсов
acl directurls url_regex -i "/etc/squid3/exceptions/nocache.txt"     # Отдельные сайты не попадающие в кэш и имеющие прямой обмен с клиентами

# Индивидуальный подход к пользователям подготовим перечень IP и доступных для них ресурсов
acl ip123 src 192.168.1.123/32
acl sites123 url_regex "/etc/squid3/exceptions/123"
acl ip101 src 192.168.1.112/32
acl sites101 url_regex "/etc/squid3/exceptions/101"
acl ip80 src 192.168.1.80/32
acl sites80 url_regex "/etc/squid3/exceptions/80"

acl workhours time 7:00-18:59                                     # Рабочее время плюс пара часов для "жаворонков" или "сов"
acl lunchtime time 13:00-14:00                                    # Обеденное время - разрешаем социальные сети для правильного усвоения пищи
acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.avi$ \.mov$     # Медийный контент

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 1025-65535 # unregistered ports
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Исключения ставим в самый "верх" цепочки правил
http_access allow exceptions users

# Баннеры режем для всех без исключений
http_access deny banner
http_access deny banner_reg

# VIP-пользователям разрешено всё (проза жизни)
http_access allow vip

# Открываем для конкретного IP перечень конкретных сайтов
http_access allow sites123 ip123
http_access allow sites101 ip101
http_access allow sites80 ip80

http_access deny spyware users
http_access deny spyware_reg users
#http_access deny porno users
#http_access deny porno_reg users

# Сайты знакомств и прочие «неопасные» прелести разрешаем в обед и нерабочее время…
http_access deny dating users !lunchtime
http_access deny dating_reg users !lunchtime
http_access deny redirector users !lunchtime
http_access deny redirector_reg users !lunchtime
#http_access deny shopping users !lunchtime
#http_access deny shopping_reg users !lunchtime
http_access deny socialnet users !lunchtime
http_access deny socialnet_reg users !lunchtime
http_access deny manual users !lunchtime
http_access deny manual_reg users !lunchtime

# Всё что не попало под наши фильтры - разрешаем для пользователей офиса
http_access allow users
http_access allow localhost

# Остальное запрещаем для всех
http_access deny all
icp_access deny all
htcp_access deny all

Остановимся более подробно на файлах, которые содержат наши правила.

2.1 Кому разрешен Интернет в нашем офисе

Во-первых, перечислим IP-адреса пользователей, для которых доступен Интернет в найшей сети в файле /etc/allow.txt. Кстати, этот же файл используется в нашем скрипте iptables — Настраиваем iptables для шлюза… Чаще всего Squid3 ставят именно на шлюзовую машину (сервер) для раздачи Интернета в локальную сеть.

server:/# cat /etc/allow.txt

192.168.1.2
192.168.1.3
192.168.1.5
…
192.168.1.254 

2.2 Пиринговые ресурсы провайдера

Отдельно, укажем сети или адреса пиринговых ресурсов нашего провайдера. Кстати, как-бы там не было, но пиринг ByFLY в определенном смысле слова «жив». Хотя бы по той простой причине, что скорость доступа к внутренним ресурсам провайдера на порядок выше, и ограничивать её посредством squid3, по-крайней мере глупо. Ниже перечислены пиринговые сети провайдера ByFLY. Оставьте пустым, если таковых у Вашего провайдера не имеется или Вы о них не знаете.

server:/# cat /etc/peering.txt

86.57.251.28
86.57.151.3
86.57.253.1
91.149.189.0/25
91.149.189.128/26
93.125.53.0/24
193.232.248.79
193.232.248.80
82.209.245.151
86.57.250.0/23
86.57.246.0/24
93.84.112.0/21
82.209.240.241
82.209.243.241

2.3 Правила для пулов задержки

Squid3 предоставляет возможность ограничить скорость доступа к сети Интернет для пользователей Вашей локальной сети. Вполне себе «шейпер». Работает как часы. Одна беда, в «прозрачном» режиме вы сможете контролировать только 80-й порт (HTTP), в то время как многие сервисы доступны по 443 порту (HTTPS) и их «шейпить» не получится. Хотя нет, вполне себе получится, если squid будет работать как обычный прокси или будет собран с поддержкой SSL и у вас есть валидный сертификат или хотя бы домен (AD), дабы централизованно внести ваш самодельный «корневой» сертификат в список доверенных… В целом, полноценный шейпинг — это отдельная тема разговора. Здесь мы рассмотрим только ограничение скорости по стандартному 80-му порту. Уже это приведет в чувство Ваш Интернет и пользователей…

Умозрительно предположим, что у нас симметричный канал в 8 Мб/сек. (~1000 КБ/сек. или около 1МБ/сек.), что берем за 100%. Будет предусмотрено 5 пулов задержки.

  1. Правило №1 Наказываем нарушителей ограничением скорости — за нарушения порядка заведенного в нашей сети обрезаем скорость до 10% (100КБ/сек.) круглосуточно и без исключений. Бессрочно или временно…
  2. Правило №2 Избранные сайты и пиринговые сети — без ограничений! — предназначено для того, чтобы ресурсы провайдера были доступны всегда на максимальной скорости и безо всяких ограничений. Ах да, сюда же попадат VIP-клиенты…
  3. Правило №3 Нерабочее время — Интернет без границ! В нерабочее время увеличиваем скорость практически до максимума (800КБ/сек.) Без комментариев.
  4. Правило №4 Ограничиваем резвых пользователей, активно скачиваемые сайты и медийный контент практика показала, что таковые имеются и не ограничить их не было возможности - в «часы пик» такие персонажи жутко нагружают канал. Оставляем им 30% канала (300КБ/сек.)
  5. Правило №5 Первый мегабайт скачивается на максимальной скорости, всё что выше — 50% от канала (500КБ/сек.). Действует в остальное время (кроме п.2) и кроме избранных сайтов (п.1). Предназначено для ускорения серфинга (простого просмотра страниц) простым смертным пользователям. Фактически для закачки канал обрезается вдвое!

Обратите внимание на прохождение правил: по порядку, с первого по пятое. Например, если сработало 2 правило, дальше сравнение не происходит, то есть чтобы выполнилось 5 правило должны не сработать первые 4!

Укажем перечень «нарушителей режима» — они ограничены в скорости ко всем ресурсам без исключения — 10% «ширины» канала. Довольно действенная мера, как часть административного рычага давления на пользователей.

server:/# cat /etc/squid3/pools/delay10.txt

192.168.1.13
192.168.1.18
…
192.168.1.125
192.168.1.119

Активные качальщики — те кто качает часто и помногу, но в пределах разумного… их мы ограничим в 30% от «ширины» канала, но с учётом пиринга, рабочего/нерабочего времени и прочих бонусов хорошего администратора.

server:/# cat /etc/squid3/pools/delay.txt

192.168.1.13
192.168.1.18
…
192.168.1.125
192.168.1.119

Непременно нужен подход и с другой стороны — укажем перечень ресурсов, с которых скорость скачивания лучше притормозить.

server:/# cat /etc/squid3/pools/delay_sites.txt

dfiles.ru
files.mail.ru
letitbit.net
dropbox.com 
mediafire.com
turbobit.net
rusfolder.com

VIP-пользователи — боссы, менеджеры, начальство, админы, любовницы админов, секретутки боссов. Скока льготников, «мама не горюй»!.. Многие люто ратуют за все эти ограничения, но сами «ложат на них болт», порой «сугубо по проектной необходимости», чаще «из принципа»…

server:/# cat /etc/squid3/pools/vip.txt

192.168.1.55
192.168.1.77
192.168.1.99
192.168.1.111
… 
192.168.1.222 

2.4 Конфигурация Squid3 для борьбы с нежелательным контентом

Примечание: Существует замечательный ресурс — www.shallalist.de, где можно скачать списки сайтов на любой вкус. (Прямая ссылка на скачивание — http://www.shallalist.de/Downloads/shallalist.tar.gz). На их основе мы и будем строить наши списки запрещенного в офисе контента. Из недостатков могу отметить только размеры этих списков — не стоит включать все подряд без разбора в «бан», так как squid3 «съест» всю Вашу оперативку на сервере и «не подавится». Если хотите включить все, нужно будет подумать о кэшировании или использовании сторонних приложений-надстроек, а-ля Режик или SquidGuard

Де-факто, мы будем блокировать рекламу(adv), социальные сети(socialnet) и сайты знакомств(dating), редиректоры или прокси по другому (redirector), сайты интернет-магазинов и шоппинга (shopping), опасные сайты(spyware). Блокировть ли порно (porn) решать Вам. Список очень уж немаленький… И конечно, ничто не заменит Вам отдельно сформированные вручную файлы, где мы сможем указать нежелательный контент как прямым указанием доменов, так и используя регулярные выражения. Поэтому возьмите из архива только следующие файлы:

server:/# wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
server:/# tar -xzf ./shallalist.tar.gz -C /tmp
server:/# cp -Ru /tmp/BL/{adv,dating,redirector,porn,shopping,socialnet,spyware} /etc/squid3/ban

2.5 Сайты-исключения

Перечислим сайты-исключения, попавшие «под раздачу/запрет» по тем или иным причинам. Например, широкой души регулярка /sex/, съест вполне приличный сайт www.sexpistolsofficial.com и т.д.

server:/# cat /etc/squid3/exceptions/general.txt

pharma.by
tabletbka.by
sexpistolsofficial.com

Отдельные сайты не попадающие в кэш и имеющие прямой обмен с клиентами (порой это вынужденная мера для ресурсов неадекватно работающих с кэшированием)

server:/# cat /etc/squid3/exceptions/nocache.txt

belpak.by
open.by
velvet.by
pogoda.ru
talon.by 

2.6 Тонкая настройка Squid3 или индивидуальный подход к пользователям

Индивидуальный подход к пользователям заключается в подготовке списка IP-адресов отдельных пользователей и доступных исключительно для них сайтов и ресурсов. На каждый IP-адрес пользователя заводится отдельное правило, в котором будут перечисленны именно те сайты/ресурсы/порталы, которые так рьяно требуются этим пользователям и, что немаловажно, были санкционированны начальством. Вот так у Васи из «ВЭД» будет работать только «фейсбук», а у Маши из HR только «линкдин».

acl ip80 src 192.168.1.80/32
acl sites80 url_regex "/etc/squid3/exceptions/80"
acl ip101 src 192.168.1.101/32
acl sites101 url_regex "/etc/squid3/exceptions/101"
acl ip123 src 192.168.1.123/32
acl sites123 url_regex "/etc/squid3/exceptions/123"

http_access allow sites80 ip80
http_access allow sites101 ip101
http_access allow sites123 ip123

3. Детальная настройка squid3

Далее следует стандартная «вязанка» опций, без которых squid конечно работать будет, но не так хорошо, как нам бы хотелось! Как уже упомяналось ранее, вначале набор опций, потом их детальное описание:


# Волшебное слово transparent («прозрачный») уже некошерное и заменено на intercept
http_port 3128 intercept

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
no_cache deny directurls

cache_mgr admin@office.by
cache_mem 256 MB

half_closed_clients on

maximum_object_size_in_memory 512 KB
maximum_object_size 8192 KB

# Задействовать ли кэширование на диск - решать вам. Часто «овчинка выделки не стоит».
#cache_dir ufs /var/spool/squid3cache 15000 16 256

access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log none

# Начиная с версии 3.1 эта опция устарела и ротирует только cache.log
logfile_rotate 31

pid_filename /var/run/squid3.pid

# Сюда перехала ротация логов
debug_options ALL,1 rotate=31

refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern (cgi-bin|\?)    0   0%  0
refresh_pattern .       0   20% 4320

quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95

negative_ttl 0 seconds
positive_dns_ttl 6 hours
negative_dns_ttl 1 minutes

# обезличим нашу локальную сеть, отключив передачу во внешний мир информации о том, что офис сидит за прокси.
forwarded_for off

# Исключим передачу некоторых видом заголовков
request_header_access From deny all
#request_header_access Referer deny all
request_header_access Server deny all
request_header_access User-Agent deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all

# Меняем браузер на Chrome 12
header_replace User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30

cache_effective_user proxy
cache_effective_group proxy

visible_hostname office.by

# Распилим наш канал в 1МБ/сек. следующим образом…
delay_pools 5

# 1 класс - Наказываем нарушителей ограничением скорости (жёстким ограничением в 100КБ/сек.)
delay_class 1 1
delay_access 1 allow delaypool10
delay_parameters 1 100000/100000
delay_access 1 deny all

# 2 класс - VIP-пользователи, избранные сайты и пиринговые сети - без ограничений по скорости
delay_class 2 1
delay_access 2 allow vip
delay_access 2 allow peering
delay_access 2 allow directurls
delay_parameters 2 -1/-1
delay_access 2 deny all

# 3 класс - В нерабочее время - Интернет без границ (ну или почти без границ в 800КБ/сек.)
delay_class 3 2
delay_access 3 allow !workhours
delay_parameters 3 -1/-1 800000/800000
delay_access 3 deny all

# 4 класс - Ограничиваем резвых пользователей, активно скачиваемые сайты и медийный контент
delay_class 4 1
delay_access 4 allow delaypool
delay_access 4 allow delaysites
delay_access 4 allow media
delay_parameters 4 300000/300000
delay_access 4 deny all

# 5 класс -  до 1MB загружают весь канал без ограничений, свыше только 50% от канала
delay_class 5 2
delay_access 5 allow office
delay_parameters 5 -1/-1 500000/1000000
delay_access 5 deny all

icp_port 3130

error_directory /usr/share/squid3/errors/Russian-1251

deny_info ERR_ACCESS_DENIED_BANNERS banner banner_reg
deny_info ERR_ACCESS_DENIED_DATING dating daring_reg
deny_info ERR_ACCESS_DENIED_REDIRECTOR redirector redirector_reg
deny_info ERR_ACCESS_DENIED_PORNO porno porno_reg
deny_info ERR_ACCESS_DENIED_SOCIALNET socialnet socialnet_reg
deny_info ERR_ACCESS_DENIED_SPYWARE spyware spyware_reg
deny_info ERR_ACCESS_DENIED manual manual_reg

always_direct allow directurls

hosts_file /etc/hosts

coredump_dir /var/spool/squid3

hierarchy_stoplist — список слов, правил, которые объект будет обрабатываться непосредственно этим кэшом. Этот параметр используется, чтобы не запрашивать соседние кэши для определенных объектов.

hierarchy_stoplist cgi-bin ?

no_cache — cписок ACL элементов, которые (если они согласованы) становятся причиной непринятия кэша, и ответ не будет кэширован. Другими словами, используйте этот параметр, чтобы определенные параметры никогда не кэшировались. Вы можете использовать слово «ОТКЛОНИТЬ», чтобы указать ACL имена, которые НЕ должны быть кэшированы. Другими словами, - объявляет ответы, которые не должны кешироваться!

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
no_cache deny directurl

cache_mgr — e-mail адрес админа локального кэша или кто будет получать уведомления если кэш "умрёт". Также, это адрес вебмастера на страницах об ошибках Squid3.

cache_mgr admin@office.com

cache_mem — этот параметр не указывает максимальный размер, а только устанавливает границу на дополнительную память squid3 или используется как кэш памяти объектов.

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

Понятно, что если обстоятельства требуют, эта граница может быть превышена. Особенно, если скорость входящего запроса требует более, чем “cache_mem” память для размещения перемещаемых объектов, Squid превысит эту границу, чтобы удовлетворить новые запросы. Если нагрузка уменьшается, блоки будут освобождаться до тех пор, пока не будет достигнута отметка уровня. После этого блоки будут использоваться для хранения горячих объектов.

Значение, заданное по умолчанию: cache_mem 256MB

cache_mem 256 MB

half_closed_clients — некоторые клиенты могут закрыть сторону отправки их TCP подключений, в то время как сторона получения открыта. Иногда Squid не сообщает разницу между наполовину закрытым и полностью закрытым TCP подключением. По умолчанию, наполовину закрытые соединения клиента остаются открытыми до тех пор, пока прочитывание или запись на двунаправленном канале возвращает ошибку. Переключите эту опцию на «off» и Squid3 немедленно закроет подключение клиента, когда прочитывание вернет “no more data to read” («нет больше данных для чтения»).

half_closed_clients on

maximum_object_size_in_memory — объекты, размер которых превышает установленный, не будут сохраняться в памяти КЭШа, Следует установить более высокое значение, чтобы иметь к ним частый доступ и улучшить режим работы, пока cache_mem.

Значение, заданное по умолчанию: maximum_object_size_in_memory 8 KB

maximum_object_size_in_memory 512 KB

maximum_object_size — объекты, размер которых превышает данный размер, НЕ будут сохранены на диске. Значение указано в килобайтах и значение, заданное по умолчанию, 4 мегабайта. Если вы хотите получить высокую результативность БИТОВ, вам придется увеличить его. (один 32 мегабайтовый объект приравнивается к 3200 10 килобайтам). Если вы хотите увеличить скорость еще больше, чтобы сохранить ширину полосы пропускания, вам следует оставить ее низкой.

Значение, заданное по умолчанию: maximum_object_size 4096KB

maximum_object_size 8192 KB

cache_dir — задействовать физические хранилища для кэша на диске.

Вы можете указать несколько cache_dir строк, чтобы распределить кэш среди различных разделов диска.

Тип определяет, какую систему хранения использовать. Только “ufs” задана по умолчанию. Чтобы использовать любую другую систему хранения, смотрите –enable-storeio configure опцию. «Каталог» - каталог высшего уровня, где будут храниться файлы подкачки КЭШа. Если вы хотите использовать весь диск для кэширования, это может быть установленный каталог. Каталог должен существовать и записываться Squid3. Squid НЕ создает этот каталог для Вас. Ожидается, что Вы проинициализируете КЭШ самостоятельно.

cache_dir ufs Directory-Name Mbytes L1 L2 [options]

  • ufs тип хранения: «ufs» – старый хорошо известный формат хранения, который всегда существует.
  • «Мегабайты» - количество памяти на диске (MB), которая используется в этом каталоге. Значение, заданное по умолчанию, 100 MB. Измените его в соответствии с вашей конфигурацией. НЕ указывайте здесь размер дисковода.Если вы хотите, чтобы Squid использовал весь дисковод, вычтите 20% и используйте это значение.
  • «Уровень-1» - количество подкаталогов первого уровня, которые будут создаваться под названием «Каталог». Значение, заданное по умолчанию, 16.
  • «Уровень-2» - количество подкаталогов второго уровня, которые будут создаваться под каждым каталогом первого уровня.
  • Значение по умолчанию: Отключено. Хранить объекты кэша в памяти.

    cache_dir ufs /var/spool/squid3cache 15000 16 256
    

access_log, cache_store_log, cache_log, pid_filename — регистрируют активность запросов клиента. Содержат запись для каждого полученного HTTP и ICP запроса. Чтобы блокировать этот параметр, введите “none”. PID файл хранящий номер процесса squid3 может понадобится при написании скриптов bash.

access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log none
pid_filename /var/run/squid3.pid

logfile_rotate — определяет количество частей архивов лог-файлов squid3, когда выполняется "squid -k rotate". Значение по умолчанию 10 приведет к циклическому обновлению лог файлов с расширением от 0 до 9. Уставновите logfile_rotate в 0, чтобы отключить разбивку лог-файлов на части, но файлы протокола всё также будут открываться и закрываться для записи в момент ротации. Фактически, это позволит Вам например переименовать файлы журналов самостоятельно, непосредственно перед отсылкой команды ротации.

Обратите внимание, что команда «squid -k rotate» обычно посылает USR1 сигнал к запущенному процессу Squid3. В некоторых ситуациях (например, на Linux с Async I/O), USR1 используется для другой цели, соответственно для запуска ротации будет использоваться другой сигнал. Граждане, имеёте привычку использовать "squid -k rotate" вместо "kill -USR1 ".

Кстати да, начиная с 3.1 эта опция устарела и ротирует только cache.log, ротацию журнала access.log нужно задавать с помощью debug_options.

logfile_rotate 31

debug_options — опции регистрации событий в журналах устанавливаются как "раздел, уровень", где каждый исходный файл рассматривается как отдельный раздел. Нижние уровни в результате приводят к меньшему потоку диагностировочных сообщений в лог, режим полного устранения неполадок (уровень 9) может привести к созданию очень большого лог файла, так что будьте осторожны. (Порой, за считанные минуты до 1GB). Волшебное слово «ALL» устанавливает уровни исправления ошибок для всех разделов. Рекомендуется использовать «ALL,1». Для получения подробной информации о работе squid3, срабатывании правил и прочем Вы можете включить более подробный лог: debug_options ALL,1 28,9 позднее можно вернуть на ALL,1

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

debug_options ALL,1 rotate=31

refresh_pattern — гибкий механизм кэширования объектов.

Применение: refresh_pattern [-i] regex min percent max [options]

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

  • “Min” – время (в минутах) для объекта без выраженного истечения времени. Рекомендуемое значение – 0, любое большее значение может привести к динамическому применению, которое может быть кэшировано с ошибками до тех пор, пока конструктор прикладных программ не примет соответствующие меры.
  • “Percent” – процентное отношение возраста объекта (время с последнего возраста преобразований), объект без явно выраженного времени истечения будет считаться новым.
  • “Max” – верхняя граница, как долго объекты без ярко выраженного срока истечения будут считаться новыми.

Опции: override-expire, override-lastmod, reload-into-ims, ignore-reload

  • override-expire обязывает использовать минимальный возраст, даже если сервер отправляет Expires заголовок. Если это происходит, НАРУШАЮТСЯ требования HTTP стандарта. Разрешая данный параметр, вы несете ответственность за проблемы, которые он вызывает.
  • override-lastmod обязывает использовать минимальный возраст даже тех объектов, которые были недавно изменены.
  • reload-into-ims изменяет запросы клиента. Если это происходит, НАРУШАЮТСЯ требования HTTP стандарта. Разрешая данный параметр, вы несете ответственность за проблемы, которые он вызывает.
  • ignore-reload игнорирует заголовок. Если это происходит, НАРУШАЮТСЯ требования HTTP стандарта. Разрешая данный параметр, вы несете ответственность за проблемы, которые он вызывает.

refresh_pattern строки проверяются в порядке, указанном здесь. Используется первая соответствующая запись. Если нет соответствующих записей, используется значение, заданное по умолчанию. Обратите внимание, вы не должны комментировать все строки, заданные по умолчанию, если вы хотите изменить их. Значение, заданное по умолчанию, активно в том случае, если ни одна не используется.

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

quick_abort_min, quick_abort_max, quick_abort_pct — кэш, заданный по умолчанию, продолжает скачивание отброшенных запросов, которые почти завершены (осталось меньше 16 килобайтов). Это нежелательно использовать на медленных (например, SLIP) строках и/или очень занятых кэшах. Нетерпеливые пользователи могут объединить дескриптор файла и пропускную способность с помощью постоянных запросов и немедленного прекращения скачивания. Когда пользователь преждевременно прекращает запрос, Squid проверяет значения и количество данных, переданных раннее.

Если передача составляет меньше килобайт, чем “quick_abort_min”, она прервет поиск.

Если передача составляет больше килобайт, чем “quick_abort_pct”, она закончит поиск.

Если вы не хотите продолжать возобновление после прекращения работы клиента, установите “quick_abort_min” и “quick_abort_max” параметры на 0 килобайтов. Если вы хотите продолжить возобновление после кэширования, установите “quick_abort_min” на -1 килобайт.

Значения, заданные по умолчанию:

quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95

negative_ttl — время существования (TTL) для неполучившихся запросов. Определенные виды ошибок (таких как «в соединении отказано» и «404 не найден») отрицательно кэшированы для количества времени для конфигурации. Время, заданное по умолчанию: 5 минут. Обратите внимание, что это значение отличается от отрицательного кэширования DNS поисков.

Значение, заданное по умолчанию:

negative_ttl 5 minutes

positive_dns_ttl — время существования (TTL) для неполучившихся запросов. Определенные виды ошибок (таких как «в соединении отказано» и «404 не найден») отрицательно кэшированы для количества времени для конфигурации. Время, заданное по умолчанию: 5 минут. Обратите внимание, что это значение отличается от отрицательного кэширования DNS поисков.

Значение, заданное по умолчанию:

positive_dns_ttl 6 hours

negative_dns_ttl — время существования (TTL) для отрицательного кэширования неудачных DNS поисков. Это приводит к установке нижней границы кэширования на положительных поисках. Минимальное значение – 1 секунда, и не рекомендуется использовать больше 10

Значение, заданное по умолчанию:

negative_dns_ttl 1 minutes

forwarded_for — Запретим пересылку в заголовке адресов клиентов. Сделано, чтобы не «светить» серые ip адреса нашей локальной сети

forwarded_for off

request_header_access, header_replace — делаем наш прокси относительно анонимным. Кстати учтите, что если вы неверно настроите базовые правила доступа, то получите бесплатный релей для кучи злоумышленников из сети Интернет и будете сами себе злобный Буратино. Последняя строчка (header_replace) может выдавать запрашивающим заведомо ложную информацию о вашем браузере, например Вы можете указать lynx (lynx/2.8.6). Осторожнее с этим, потому что есть много сайтов анализирующие ваш браузер для корректного отображения страниц.

request_header_access From deny all
#request_header_access Referer deny all
request_header_access Server deny all
request_header_access User-Agent deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all
header_replace User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30

Практика показала, что подмена истинного браузера на что-либо заведомо ложное крайне негативно отражается на работе ряда интернет-сайтов. В частности, указав текcтовый браузер lynx у меня перестал работать сайт open.by, "перекосило" новую почтовую службу TUT.by (та которая на Google), отказала половина функционала сайта Одноклассники (Odnoklassniki.ru - всплывающие меню, выставление оценок), завязанного на JScript и несколько других… Вылечило указание нормального браузера, взятого из http://ru.wikipedia.org/wiki/User_Agent, в частности:

header_replace User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30

Вторым косяком была нерабочая каптча (captcha) на движке DLE (engine/modules/antibot.php) через наш прозрачный прокси squid3. Вылечено было отключением правила:

#request_header_access Referer deny all

cache_effective_user, cache_effective_group — имя системного пользователя, от имени которого будет работать Squid3. Логично, что нельзя чтобы такая, довольно уязвимая служба как Squid, работала от имени root-a! Для этого есть два параметра в файле конфигурации. При установке Squid3 автоматически создается пользователь proxy. Вот его и необходимо использовать.

cache_effective_user proxy
cache_effective_group proxy

visible_hostname — видимое снаружи имя хоста. "Представимся" под таким же именем, под которым виден наш "шлюзовой" сервер с Интернете.

visible_hostname office.by

delay_pools, delay_class, delay_access, delay_parameters — джентельменский набор для пулов задержки

delay_pools - количество пулов задержки, которые будут использоваться. Например, если у вас будет один класс 2 уровня и еще один класс 3 уровня, по итогу у вас есть в общей сложности 2 пула задержки.

delay_class - определяет класс каждого пула задержки. Фактически для каждого пула здержки должен быть объявлен свой класс повредством delay_class.

delay_access - задаются цепочки правил на которые распостраняется этот класс

delay_parameters - собственно параметры для пула задержки. Каждый пул задержки имеет свои так называемые "вёдра", связанные с ним именно в той форме, как описано в описании delay_class.

Кстати, в подразделе #2.3 были заведены и описаны правила для наших пулов задержки, их же реализация с пояснениями приведена ниже:

delay_pools 5
# 1 класс - Наказываем нарушителей ограничением скорости (жёстким ограничением в 100КБ/сек.)
delay_class 1 1
delay_access 1 allow delaypool10
delay_parameters 1 100000/100000
delay_access 1 deny all

# 2 класс - VIP-пользователи, избранные сайты и пиринговые сети - без ограничений по скорости
delay_class 2 1
delay_access 2 allow vip
delay_access 2 allow peering
delay_access 2 allow directurl
delay_parameters 2 -1/-1
delay_access 2 deny all

# 3 класс - В нерабочее время - Интернет без границ (ну или почти без границ в 800КБ/сек.)
delay_class 3 2
delay_access 3 allow !workhours
delay_parameters 3 -1/-1 800000/800000
delay_access 3 deny all

# 4 класс - Ограничиваем резвых пользователей, активно скачиваемые сайты и медийный контент
delay_class 4 1
delay_access 4 allow delaypool
delay_access 4 allow delaysites
delay_access 4 allow media
delay_parameters 4 300000/300000
delay_access 4 deny all

# 5 класс -  до 1MB загружают весь канал без ограничений, свыше только 50% от канала
delay_class 5 2
delay_access 5 allow office
delay_parameters 5 -1/-1 500000/1000000
delay_access 5 deny all

icp_port — порт для управления КЭШем

icp_port 3130

error_directory — изменим язык сообщение об ошибках на служебных страницах squid3 на русский (можно на албанский)

error_directory /usr/share/squid3/errors/Russian-1251

deny_info — используется, чтобы вернуть страницу ERR_ для запросов, которые не проходят в "http_access" правила. Squid3 запоминает последнюю ACL, и если существует подходящий "deny_info" для этой ACL то Squid3 возвращает соответствующую страницу ошибки.

deny_info ERR_ACCESS_DENIED_BANNERS banner banner_reg
deny_info ERR_ACCESS_DENIED_DATING dating daring_reg
deny_info ERR_ACCESS_DENIED_REDIRECTOR redirector redirector_reg
deny_info ERR_ACCESS_DENIED_PORNO porno porno_reg
deny_info ERR_ACCESS_DENIED_SOCIALNET socialnet socialnet_reg
deny_info ERR_ACCESS_DENIED_SPYWARE spyware spyware_reg
deny_info ERR_ACCESS_DENIED manual manual_reg

Примечание: По умолчанию, на все запрещенные ресурсы пользователи будут получать ошибку ERR_ACCESS_DENIED. Меня это, как администратора не очень устраивает, потому что конечный пользователь должен иметь возможность не просто сказать, что сайт закрыт, но и подсказать мне по какой причине это произошло. Для этого мы "кастомизируем" вывод ошибок доступа с привязкой к каждой группе правил (ACLs), что у нас объявлены ранее:

Для удобства редактирования/создания страниц об ошибке, сделаем символическую ссылку в папку squid3

ln -s /usr/share/squid3/errors/Russian-1251 /etc/squid3/errors

и создадим несколько новых страниц-уведомлений об ошибке на основе стандартного шаблона ERR_ACCESS_DENIED:

root@server:/etc/squid3/errors# cp ./ERR_ACCESS_DENIED ./ERR_ACCESS_DENIED_BANNERS
root@server:/etc/squid3/errors# cp ./ERR_ACCESS_DENIED ./ERR_ACCESS_DENIED_DATING
root@server:/etc/squid3/errors# cp ./ERR_ACCESS_DENIED ./ERR_ACCESS_DENIED_REDIRECTOR
root@server:/etc/squid3/errors# cp ./ERR_ACCESS_DENIED ./ERR_ACCESS_DENIED_PORNO
root@server:/etc/squid3/errors# cp ./ERR_ACCESS_DENIED ./ERR_ACCESS_DENIED_SOCIALNET
root@server:/etc/squid3/errors# cp ./ERR_ACCESS_DENIED ./ERR_ACCESS_DENIED_SPYWARE

Теперь Вы можете подправить (отредактировать) эти страницы и благодарные пользоватлеи будут знать — за что "забанен" тот или иной ресурс. Это удобно!

always_direct — в данном тэге Вы можете указать элементы ACL, чтобы определить запросы, которые будут ВСЕГДА НАПРЯМУЮ отправляться непосредственно серверам происхождения… Тэг контролирует, какие запросы всегда должны посылаться напрямую к серверу назначения!

Использование: always_direct allow|deny [!]aclname

Не путайте с директивой no_cache… Эта директива не отменяет кеширования ответов, а только заставляет сквид напрямую пересыласть запросы к удаленным серверам. Многие путаются)

always_direct allow directurl

hosts_file — расположение базы данных имени IP адреса местного главного компьютера, Многие операционные системы имеют такой файл: под Un*X задано по умолчанию в /etc/hosts. Файл содержит отдельные определения на новой строке, в форме Ip_address_in_dotted_form имени [name…], имена разделены пробелами. Строки, которые начинаются со знака #, являются комментариями. Файл проверяется при запуске и во время конфигурации. Если он установлен на “none”, он не будет проверяться. Если используется append_domain, домен будет добавлен в локальный домен (т.е. не содержит точки).

hosts_file   /etc/hosts

coredump_dir — директория куда будет писаться дамп программы в случае критической ошибки и последующего вылета сквида

coredump_dir /var/spool/squid3

4. Финальный тюнинг squid3

В итоге, если теперь применить скрипт отбора опций из файла конфигурации, мы получим итоговый конфигурационный файл

server:/#  grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d' > finalSquid.conf

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Основные ресурсы нашей офисной сети
acl office src 192.168.1.0/24       # наша сеть
acl users src "/etc/openip.txt"      # Перечень IP-адресов пользователей, которым разрешён Интернет в принципе
acl peering src "/etc/peering.txt"   # Перечень пиринговых сетей провайдера

# Набор правил для пулов задержки
acl vip src "/etc/squid3/pools/vip.txt"                           # Перечень IP-адресов с неограниченными привилегиями
acl delaypool src "/etc/squid3/pools/delay.txt"                   # Для четвертого пула - активно "качающие" пользователей
acl delaypool10 src "/etc/squid3/pools/delay10.txt"               # Для первого пула - наказываем за нарушения резко ограничивая скорость
acl delaysites url_regex -i "/etc/squid3/pools/delay_sites.txt"   # Для четвертого пула - ограничиваем сайты лидеры закачек

# Набор правил для борьбы с нежелательным контентом
# предлагаемые классы: adv,dating,redirector,porn,shopping,socialnet,spyware
acl banner dstdomain "/etc/squid3/ban/adv/domains"                # Реклама, баннеры
acl banner_reg url_regex -i "/etc/squid3/ban/adv/urls"

acl dating dstdomain "/etc/squid3/ban/dating/domains"             # Сайты знакомств
acl dating_reg url_regex -i "/etc/squid3/ban/dating/urls"

acl redirector dstdomain "/etc/squid3/ban/redirector/domains"     # Редиректоры и прокси - извечное зло адмиов
acl redirector_reg url_regex -i "/etc/squid3/ban/redirector/urls"

#acl porno dstdomain "/etc/squid3/ban/porn/domains"               # Порно
#acl porno_reg url_regex -i "/etc/squid3/ban/porn/urls"

#acl shopping url_regex "/etc/squid3/ban/shopping/domains"        # Сайты интернет-торговли и шоппинга
#acl shopping_reg url_regex -i "/etc/squid3/ban/shopping/urls"

acl socialnet dstdomain "/etc/squid3/ban/socialnet/domains"       # Социальные сети
acl socialnet_reg url_regex -i "/etc/squid3/ban/socialnet/urls"

acl spyware dstdomain "/etc/squid3/ban/spyware/domains"           # Опасные сайты
acl spyware_reg url_regex -i "/etc/squid3/ban/spyware/urls"

acl manual dstdomain "/etc/squid3/ban/manual.txt"                 # Вручную добавленные сайты для блокировки
acl manual_reg url_regex -i "/etc/squid3/ban/manual_reg.txt"

acl exceptions url_regex -i "/etc/squid3/exceptions/general.txt"     # Сайты-исключения, перечень ресурсов
acl directurls url_regex -i "/etc/squid3/exceptions/nocache.txt"     # Отдельные сайты не попадающие в кэш и имеющие прямой обмен с клиентами

# Индивидуальный подход к пользователям подготовим перечень IP и доступных для них ресурсов
acl ip123 src 192.168.1.123/32
acl sites123 url_regex "/etc/squid3/exceptions/123"
acl ip101 src 192.168.1.112/32
acl sites101 url_regex "/etc/squid3/exceptions/101"
acl ip80 src 192.168.1.80/32
acl sites80 url_regex "/etc/squid3/exceptions/80"

acl workhours time 7:00-18:59                                     # Рабочее время плюс пара часов для "жаворонков" или "сов"
acl lunchtime time 13:00-14:00                                    # Обеденное время - разрешаем социальные сети для правильного усвоения пищи
acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.avi$ \.mov$     # Медийный контент

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 1025-65535 # unregistered ports
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Исключения ставим в самый "верх" цепочки правил
http_access allow exceptions users

# Баннеры режем для всех без исключений
http_access deny banner
http_access deny banner_reg

# VIP-пользователям разрешено всё (проза жизни)
http_access allow vip

# Открываем для конкретного IP перечень конкретных сайтов
http_access allow sites123 ip123
http_access allow sites101 ip101
http_access allow sites80 ip80

http_access deny spyware users
http_access deny spyware_reg users
#http_access deny porno users
#http_access deny porno_reg users

# Сайты знакомств и прочие "неопасные" прелести разрешаем в обед и нерабочее время…
http_access deny dating users !lunchtime
http_access deny dating_reg users !lunchtime
http_access deny redirector users !lunchtime
http_access deny redirector_reg users !lunchtime
#http_access deny shopping users !lunchtime
#http_access deny shopping_reg users !lunchtime
http_access deny socialnet users !lunchtime
http_access deny socialnet_reg users !lunchtime
http_access deny manual users !lunchtime
http_access deny manual_reg users !lunchtime

# Всё что не попало под наши фильтры - разрешаем для пользователей офиса
http_access allow users
http_access allow localhost

# Остальное запрещаем для всех
http_access deny all
icp_access deny all
htcp_access deny all

# Волшебное слово transparent ("прозрачный") уже некошерное и заменено на intercept
http_port 3128 intercept

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
no_cache deny directurls

cache_mgr admin@office.by
cache_mem 256 MB

half_closed_clients on

maximum_object_size_in_memory 512 KB
maximum_object_size 8192 KB

# Задействовать ли кэширование на диск - решать вам. Часто "овчинка выделки не стоит".
#cache_dir ufs /var/spool/squid3cache 15000 16 256

access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log none

# Начиная с версии 3.1 эта опция устарела и ротирует только cache.log
logfile_rotate 31

pid_filename /var/run/squid3.pid

# Сюда перехала ротация логов
debug_options ALL,1 rotate=31

refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern (cgi-bin|\?)    0   0%  0
refresh_pattern .       0   20% 4320

quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95

negative_ttl 0 seconds
positive_dns_ttl 6 hours
negative_dns_ttl 1 minutes

# обезличим нашу локальную сеть, отключив передачу во внешний мир информации о том, что офис сидит за прокси.
forwarded_for off

# Исключим передачу некоторых видом заголовков
request_header_access From deny all
#request_header_access Referer deny all
request_header_access Server deny all
request_header_access User-Agent deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all

# Меняем браузер на Chrome 12
header_replace User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30

cache_effective_user proxy
cache_effective_group proxy

visible_hostname office.by

# Распилим наш канал в 1МБ/сек. следующим образом…
delay_pools 5

# 1 класс - Наказываем нарушителей ограничением скорости (жёстким ограничением в 100КБ/сек.)
delay_class 1 1
delay_access 1 allow delaypool10
delay_parameters 1 100000/100000
delay_access 1 deny all

# 2 класс - VIP-пользователи, избранные сайты и пиринговые сети - без ограничений по скорости
delay_class 2 1
delay_access 2 allow vip
delay_access 2 allow peering
delay_access 2 allow directurls
delay_parameters 2 -1/-1
delay_access 2 deny all

# 3 класс - В нерабочее время - Интернет без границ (ну или почти без границ в 800КБ/сек.)
delay_class 3 2
delay_access 3 allow !workhours
delay_parameters 3 -1/-1 800000/800000
delay_access 3 deny all

# 4 класс - Ограничиваем резвых пользователей, активно скачиваемые сайты и медийный контент
delay_class 4 1
delay_access 4 allow delaypool
delay_access 4 allow delaysites
delay_access 4 allow media
delay_parameters 4 300000/300000
delay_access 4 deny all

# 5 класс -  до 1MB загружают весь канал без ограничений, свыше только 50% от канала
delay_class 5 2
delay_access 5 allow office
delay_parameters 5 -1/-1 500000/1000000
delay_access 5 deny all

icp_port 3130

error_directory /usr/share/squid3/errors/Russian-1251

deny_info ERR_ACCESS_DENIED_BANNERS banner banner_reg
deny_info ERR_ACCESS_DENIED_DATING dating daring_reg
deny_info ERR_ACCESS_DENIED_REDIRECTOR redirector redirector_reg
deny_info ERR_ACCESS_DENIED_PORNO porno porno_reg
deny_info ERR_ACCESS_DENIED_SOCIALNET socialnet socialnet_reg
deny_info ERR_ACCESS_DENIED_SPYWARE spyware spyware_reg
deny_info ERR_ACCESS_DENIED manual manual_reg

always_direct allow directurls

hosts_file /etc/hosts

coredump_dir /var/spool/squid3

Для того, чтобы проверить конфигурацию squid3 на предмет синтаксиса, используйте команду

server:/# squid3 -k check

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

Как заставить весь HTTP трафик повернуть на сквид (заворачивание трафика) Вы можете узнать в статье Настраиваем iptables для шлюза. Если быть более точным — за это отвечает только одно правило Iptables:

#Заворачиваем весь остальной трафик по 80 порту на SQUID
$IPT -t nat -A PREROUTING -i eth0 -p tcp -s $INTNET -d ! 192.168.1.1 -m multiport --dport 80 -j REDIRECT --to-port 3128

Ваши замечания и советы будут очень полезны. Не стесняйтесь оставить свой отзыв ниже. Спасибо!

Комментарии 20

  1. Михаил — Mar 25, 2016 at 07:26 AM

    Благодарю, очень пригодилось!

  2. Ярослав — Mar 15, 2016 at 01:35 AM

    Спасибо за статью!
    Есть вопрос по настройке squid. У Вас в примере для каждой машины назначен свой статический IP-адрес, что отображается в файле openip.txt А что если IP-адреса раздаёт DHCP-сервер? можно ли в этом файле IP-адреса заменить на mac-адреса?

  3. Роман — Dec 18, 2015 at 01:49 PM

    Добавлю что если оставить директиву request_header_access User-Agent deny all то некоторые сайты вываливаются с 500 ошибкой, а логе кальмара она будет такой tcp_miss/500 .

  4. Алексей — Sep 10, 2015 at 08:06 PM

    Хмм, а может имеет смысл вместо
    acl spyware dstdomain "/etc/squid3/ban/spyware/domains"
    все же прописывать
    acl spyware url_regex -i "/etc/squid3/ban/spyware/domains"
    А то ведь, если в списках явно не указаны доменные имена с www, то они не будут блокироваться.

  5. Дмитрий — Apr 24, 2015 at 11:28 AM

    Решим проблему вот так:
    $IPT -I FORWARD -i $LAN -p tcp -m multiport --dport 80,443 -o $WAN -j REJECT
    (после такого получаем сообщение о не доступности страницы, если не прописан Прокси в браузере)
    $IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT
    (разрешаем всем форвардинг)
    В таком случаем трубеться жестко прописывать Прокси. Дам. Недостаток знания сказывается.

  6. Дмитрий — Apr 23, 2015 at 04:34 PM

    Добрый день. Такая вот штука получилась. Настраиваю Сквид по этой инструкции с небольшими доработками. Но при при настройках прокси: без прокси и с ДНС 8.8.8.8 либо гетвей - появляется полный доступ в Инет. Подозрения на iptables,
    $IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_R -j MASQUERADE
    все разрешено. Может необходимо запретить форвардинг по 80 с ЛАН на ВАН?

  7. Serg — Mar 20, 2015 at 10:12 PM

    Впервые решил настроить SQUID на Ubuntu server, до сих пор ничего не получалось пока не изучил Вашу статью!!! Очень полезно!!! Большое спасибо!!!

  8. Евгений — Jul 10, 2014 at 02:20 AM

    >А как ограничить скорость по HTTPS - что-то я не понял.
    Если просто: никак. Если сложнее, то нужно централизованно добавить на все машины офиса доверенный корневой сертификат, который squid будет использовать для перехвата и дешифровки на лету головы пакетов. Гуглите squid3 https interception, первый результат -- ваш.

    После заворачивания http трафика через iptables на 3128 порт почему-то все перестало работать: при переходе на любой сайт сквид ругается, если упростить, на 404-ю ошибку (переходим на google.com -- получаем "Error: бла-бла-бла не могу найти "/" " (!) ). Куда копать? Без редиректа трафик идет мимо сквида. При вбивании настроек прокси в браузер все прекрасно работает.

  9. Сергей — May 13, 2014 at 10:42 AM

    А как ограничить скорость по HTTPS - что-то я не понял.

  10. korkmysh — Sep 27, 2010 at 11:50 PM

    Приятно конечно понимать, что остались действительно блоги в этой мусорке рейтинга Яши. Ваш - один из таких. Спасибо!

  11. Леонид — Sep 17, 2010 at 03:44 PM

    Можно и подискутировать по этому поводу ... :)

  12. zoogeografia — Jul 03, 2010 at 10:05 AM

    Очень признателен, по-настоящему полезная информация.

  13. Гималаи — Jun 15, 2010 at 09:01 PM

    Тема старая конечно , но прочитал с удовольствием :)

  14. Савва — Jun 05, 2010 at 06:13 AM

    И как автору не жалко столько времени на написание статей тратить, мы конечно очень благодарны, но вот я лично на такой альтруизм не способен :)

  15. Виталий Павленко — May 29, 2010 at 01:12 PM

    Большое спасибо. Давно такое искал :)

  16. alikos — May 27, 2010 at 06:04 AM

    Занимательная тема, продолжайте. Иногда нахожу ответы, которые получить самому просто реально не хватает времени. Благодарю!

  17. Олег — May 06, 2010 at 01:58 PM

    Хех... :) Почаще пишите смайлики, а то всё так как будто серъёзно :)

  18. Федор Малкин — Apr 29, 2010 at 11:27 PM

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

  19. BaLaM — Apr 26, 2010 at 08:13 PM

    Люблю посты в таком духе! Премного благодарен :)

  20. Василий Петров — Apr 21, 2010 at 07:27 AM

    Спасибо. Прочитал с огромным интересом, и вообще полезный у Вас блог

  • 1
Разрешённые теги: <b><i><br>