Squid — кэширующий прокси-сервер с открытым исходным кодом для Unix-систем. Перехватывает HTTP/HTTPS-запросы клиентов, обслуживает повторные запросы из кэша или проксирует к исходному серверу, сохраняя копию ответа. Снижает трафик на 40–60% для статического контента и ускоряет повторный доступ к часто запрашиваемым ресурсам.
Как работает Squid
Squid работает как forward proxy или reverse proxy. В режиме forward proxy браузеры клиентов явно указывают Squid как прокси: http_proxy=http://squid:3128. В transparent proxy режиме трафик перехватывается на уровне iptables без настройки клиентов: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128. В режиме reverse proxy Squid принимает запросы к веб-сайту и возвращает кэшированный контент, разгружая бэкенд.
Кэш Squid хранится на диске в виде иерархических директорий. Основные параметры в squid.conf:
cache_dir ufs /var/spool/squid 10000 16 256
# 10000 МБ, 16 директорий первого уровня, 256 второго
maximum_object_size 100 MB
cache_mem 512 MB
Политики вытеснения: GDSF (Greedy-Dual-Size-Frequency, по умолчанию), LRU, LFUDA. Squid поддерживает ICP (Internet Cache Protocol) для координации между несколькими кэш-серверами в иерархии.
Режимы работы
- Forward proxy — исходящий прокси для клиентов корпоративной сети. URL-фильтрация, аутентификация, логирование.
- Transparent proxy — перехват трафика без настройки клиентов (через iptables REDIRECT). Пользователи не знают о прокси.
- Reverse proxy / accelerator — кэш перед веб-сервером. Аналог CDN для локальной сети.
- HTTPS interception (SSL bump) — расшифровка и повторное шифрование HTTPS для контент-фильтрации и DLP. Требует установки корневого сертификата Squid на клиентах.
Контроль доступа (ACL)
Squid использует гибкую систему ACL для управления доступом:
# Разрешить доступ из локальной сети
acl localnet src 192.168.0.0/16
http_access allow localnet
# Заблокировать социальные сети
acl social_media dstdomain .vk.com .facebook.com .tiktok.com
http_access deny social_media
# Аутентификация через LDAP
auth_param basic program /usr/lib/squid/basic_ldap_auth -h ldap.company.ru -b "dc=company,dc=ru"
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
История
Squid вырос из проекта Harvest, разрабатывавшегося в Университете Колорадо в 1994–1995 годах. Первый публичный релиз Squid 1.0 вышел в 1996 году. Проект финансировали NASA, NSF и несколько крупных ISP для кэширования трафика в период взрывного роста интернета в 1990-х. Squid 2.x (1998–2006) добавил SSL-bump. Squid 3.x (2007) переписан на C++. Squid 6.x (2023) — актуальная ветка с поддержкой HTTP/2 и TLS 1.3.
Применение в хостинге
ISP используют Squid для кэширования трафика клиентов, снижая нагрузку на магистральный канал на 40–60% для статического контента (изображения, дистрибутивы, обновления ОС). Корпоративные сети применяют Squid для URL-фильтрации через SquidGuard или urlblacklist.com, аутентификации через LDAP/Active Directory и логирования доступа (compliance).
На VDS-серверах Squid используют как прокси-пул для парсинга или SEO-мониторинга. Альтернативы: Varnish — специализированный HTTP accelerator, значительно быстрее Squid в режиме reverse proxy; Nginx с proxy_cache — встроенное кэширование без отдельного сервиса; для контент-фильтрации — Pi-hole (DNS-based, только блокировка) или pfSense с Squid-пакетом. Squid занимает порт 3128 по умолчанию. Управление и статистика через squidclient mgr:info или веб-инструменты Calamaris/Lightsquid для анализа логов доступа.