Squid — это веб-прокси HTTP с кэшированием и пересылкой . Он имеет широкий спектр применений, включая ускорение веб-сервера за счет кэширования повторяющихся запросов, кэширования Всемирной паутины (WWW), системы доменных имен (DNS) и других сетевых поисков для группы людей, совместно использующих сетевые ресурсы, а также обеспечения безопасности. путем фильтрации трафика. Хотя Squid используется в основном для HTTP и протокола передачи файлов (FTP), он включает ограниченную поддержку нескольких других протоколов , включая Internet Gopher , Secure Sockets Layer (SSL), [7] Transport Layer Security (TLS) и протокол безопасной передачи гипертекста ( HTTPS ). . Squid не поддерживает протокол SOCKS , в отличие от Privoxy , с которым Squid можно использовать для обеспечения поддержки SOCKS.
Squid изначально был разработан для работы в качестве демона в Unix-подобных системах. Порт Windows поддерживался до версии 2.7. Новые версии, доступные для Windows, используют среду Cygwin . [8] [9] Squid — бесплатное программное обеспечение , выпущенное под лицензией GNU General Public License .
Первоначально Squid был разработан как кэш объектов Harvest , [7] часть проекта Harvest в Университете Колорадо в Боулдере . [10] [11] Дальнейшая работа над программой была завершена в Калифорнийском университете в Сан-Диего и финансировалась за счет двух грантов Национального научного фонда . [12] Дуэйн Весселс создал «последнюю предкоммерческую версию Harvest» и переименовал ее в Squid, чтобы избежать путаницы с коммерческой версией Cached 2.0, которая стала NetCache . [13] [14] Версия Squid 1.0.0 была выпущена в июле 1996 года. [13] SquidNT , порт прокси-сервера Squid, был объединен с основным проектом Squid в сентябре 2006 года. [15]
Squid сейчас разрабатывается почти исключительно благодаря усилиям добровольцев.
В октябре 2023 года выяснилось, что Squid по-прежнему страдает от 35 уязвимостей безопасности, которые не были устранены в течение двух с половиной лет после их первоначального сообщения. [16]
После установки прокси-сервера Squid веб-браузеры можно настроить на использование его в качестве прокси- сервера HTTP, позволяя Squid сохранять копии возвращаемых документов, что при повторных запросах одних и тех же документов может сократить время доступа, а также пропускную способность. потребление. Это часто бывает полезно провайдерам Интернет-услуг для увеличения скорости для своих клиентов, а также для локальных сетей , которые совместно используют подключение к Интернету . Поскольку серверы кэширования контролируются оператором веб-службы, прокси-серверы кэширования не анонимизируют пользователя, и их не следует путать с анонимизирующими прокси-серверами.
Клиентская программа (например, браузер) либо должна явно указать прокси-сервер, который она хочет использовать (типично для клиентов интернет-провайдера), либо она может использовать прокси без какой-либо дополнительной настройки: «прозрачное кэширование», и в этом случае все исходящие HTTP-запросы перехватываются Squid, и все ответы кэшируются. Последний вариант обычно представляет собой корпоративную настройку (все клиенты находятся в одной локальной сети) и часто вызывает проблемы конфиденциальности, упомянутые выше.
Squid имеет некоторые функции, которые могут помочь анонимизировать соединения, например, отключение или изменение определенных полей заголовков в HTTP-запросах клиента . Установлены ли они и для чего они предназначены, зависит от человека, который управляет компьютером, на котором работает Squid. Люди, запрашивающие страницы через сеть, которая прозрачно использует Squid, могут не знать, протоколируется ли эта информация. [17] По крайней мере, в британских организациях пользователи должны быть проинформированы о том, отслеживаются ли компьютеры или интернет-соединения. [18]
Описанная выше настройка, кэширующая содержимое неограниченного числа веб-серверов для ограниченного числа клиентов, является классической. Другая настройка — « обратный прокси » или «ускорение веб-сервера» (с использованием http_port 80 Accel vhost ). В этом режиме кеш обслуживает неограниченное количество клиентов для ограниченного числа (или только одного) веб-серверов.
Например, если медленный.example.com — это «настоящий» веб-сервер, а www.example.com — это кэш-сервер Squid, который «ускоряет» его, при первом запросе какой-либо страницы с www.example.com кэш-сервер получит фактическую страницу с сайта low.example.com , но последующие запросы получат сохраненную копию непосредственно из ускорителя (в течение настраиваемого периода, после которого сохраненная копия будет удалена). В результате без каких-либо действий со стороны клиентов снижается трафик на исходный сервер, что означает меньшее использование ЦП и памяти, а также меньшую потребность в пропускной способности. Однако это означает, что исходный сервер не может точно сообщить о количестве своего трафика без дополнительной настройки, поскольку все запросы, похоже, исходят от обратного прокси-сервера. Способ адаптации отчетов на исходном сервере — использовать HTTP-заголовок X-Forwarded-For , сообщаемый обратным прокси-сервером, для получения реального IP-адреса клиента.
Один сервер Squid может одновременно служить обычным и обратным прокси-сервером. Например, компания может разместить свой собственный веб-сайт на веб-сервере, при этом сервер Squid будет выступать в качестве обратного прокси-сервера между клиентами (клиентами, обращающимися к веб-сайту из-за пределов компании) и веб-сервером. Тот же сервер Squid может действовать как классический веб-кеш, кэшируя HTTP-запросы от клиентов внутри предприятия (т. е. сотрудников, получающих доступ к Интернету со своих рабочих станций), тем самым ускоряя веб-доступ и снижая требования к пропускной способности.
Например, особенностью протокола HTTP является ограничение запроса диапазоном данных в ресурсе, на который имеется ссылка. Эта функция широко используется веб-сайтами потокового видео, такими как YouTube , поэтому, если пользователь нажимает на середину индикатора выполнения видео, сервер может начать отправлять данные с середины файла, а не отправлять весь файл из начало, и пользователь ожидает завершения загрузки предыдущих данных.
Частичные загрузки также широко используются Центром обновления Microsoft Windows , поэтому очень большие пакеты обновлений могут загружаться в фоновом режиме и приостанавливаться на полпути загрузки, если пользователь выключает свой компьютер или отключается от Интернета.
Формат загрузки Metalink позволяет клиентам выполнять сегментированную загрузку, отправляя частичные запросы и распределяя их по нескольким зеркалам.
Squid может ретранслировать частичные запросы на исходный веб-сервер. Чтобы частичный запрос мог быть удовлетворен на высокой скорости из кэша, Squid требует, чтобы в его хранилище уже существовала полная копия того же объекта.
Если пользователь прокси-видео просматривает видеопоток и переходит на другую страницу до полной загрузки видео, Squid не может сохранить частичную загрузку для повторного использования и просто удаляет данные. Для продолжения и кэширования таких загрузок требуется специальная настройка. [19]
Squid поддерживает множество операционных систем , в том числе:
Текущая сборка основана на последней сборке Squid 4 для 64-разрядной версии Cygwin Windows.
Кальмар в Windows
NSF был основным источником финансирования разработки Squid в 1996–2000 годах. Два гранта (#NCR-9616602, #NCR-9521745), полученные Отделом передовой сетевой инфраструктуры и исследований (ANIR), находились под управлением Калифорнийского университета в Сан-Диего.