Введение

Squid — это кэширующий и перенаправляющий HTTP веб-прокси. Он имеет широкий спектр применения, включая ускорение работы веб-сервера за счет кэширования повторяющихся запросов, кэширование Всемирной паутины (WWW), системы доменных имен (DNS) и других сетевых обращений для группы пользователей, совместно использующих сетевые ресурсы, а также повышение безопасности путем фильтрации трафика. Хотя Squid в основном используется для HTTP и протокола передачи файлов (FTP), он также включает ограниченную поддержку других протоколов, таких как Internet Gopher и Secure Sockets Layer (SSL). Squid является свободным программным обеспечением, распространяемым по лицензии GNU General Public License.

История

Squid изначально был разработан как объектный кэш Harvest, часть проекта Harvest в Университете Колорадо в Боулдере. Дальнейшая работа над программой была завершена в Калифорнийском университете в Сан-Диего и финансировалась двумя грантами Национального научного фонда. Дуэйн Весселс создал ответвление от "последней предкоммерческой версии Harvest" и переименовал его в Squid, чтобы избежать путаницы с коммерческим ответвлением под названием Cached 2.0, которое стало NetCache. Версия Squid 1.0.0 была выпущена в июле 1996 года. В настоящее время разработка Squid ведется почти исключительно усилиями волонтеров. В октябре 2023 года стало известно, что Squid по-прежнему имеет 35 неисправленных уязвимостей в системе безопасности, которые не были устранены в течение двух с половиной лет после их первоначального обнаружения.

Основные функции

После установки прокси-сервера Squid веб-браузеры можно настроить на его использование в качестве прокси-сервера HTTP, что позволяет Squid сохранять копии полученных документов. При повторных запросах тех же документов это может сократить время доступа и снизить потребление пропускной способности. Это часто полезно для интернет-провайдеров, чтобы повысить скорость обслуживания клиентов, и для локальных сетей, использующих общее интернет-соединение. Поскольку серверы кэширования контролируются оператором веб-сервиса, кэширующие прокси не обеспечивают анонимность пользователя и их не следует путать с анонимизирующими прокси. Клиентская программа (например, браузер) может либо явно указать прокси-сервер, который она хочет использовать (обычно для клиентов интернет-провайдеров), либо использовать прокси без дополнительной настройки – "прозрачное кэширование". В этом случае все исходящие HTTP-запросы перехватываются Squid, и все ответы кэшируются. Последнее обычно используется в корпоративных сетях (где все клиенты находятся в одной локальной сети) и часто вызывает проблемы с конфиденциальностью, упомянутые выше. Squid имеет некоторые функции, которые могут помочь анонимизировать соединения, например, отключение или изменение определенных полей заголовков в HTTP-запросах клиента. Настройка этих функций и их действие зависят от администратора компьютера, на котором работает Squid. Пользователи, запрашивающие страницы через сеть, использующую Squid в прозрачном режиме, могут не знать, ведется ли запись информации об их запросах. По крайней мере, в организациях Великобритании пользователей должны информировать о мониторинге компьютеров или интернет-соединений.

Обратная прокси

Вышеуказанная настройка, кэширование содержимого неограниченного количества веб-серверов для ограниченного числа клиентов, является классической. Другая настройка – "обратный прокси" или "ускорение веб-сервера" (с использованием). В этом режиме кэш обслуживает неограниченное количество клиентов для ограниченного числа или только одного веб-сервера. Например, если slow.example.com является "реальным" веб-сервером, а www.example.com – сервером кэша Squid, который его "ускоряет", то при первом запросе любой страницы с www.example.com кэш-сервер получит фактическую страницу с slow.example.com, а последующие запросы будут получать сохраненную копию непосредственно с ускорителя (в течение настраиваемого периода, после чего сохраненная копия будет удалена). В результате, без каких-либо действий со стороны клиентов, трафик на исходный сервер уменьшается, что приводит к снижению нагрузки на процессор и память, а также к уменьшению потребности в пропускной способности. Однако это означает, что исходный сервер не сможет точно отчитываться о своем трафике без дополнительной настройки, поскольку все запросы будут казаться исходящими от обратного прокси. Для адаптации отчетности на исходном сервере можно использовать HTTP-заголовок X-Forwarded-For, передаваемый обратным прокси, чтобы получить реальный IP-адрес клиента. Один сервер Squid может одновременно функционировать как обычный кэш и как обратный прокси. Например, компания может размещать свой веб-сайт на веб-сервере, а сервер Squid выступать в качестве обратного прокси между клиентами (посетителями сайта извне) и веб-сервером. Тот же сервер Squid может также работать как классический веб-кэш, кэшируя HTTP-запросы от клиентов внутри компании (например, сотрудников, выходящих в интернет со своих рабочих станций), тем самым ускоряя доступ в интернет и снижая требования к пропускной способности.

Пределы среднего радиуса действия

Например, одной из особенностей протокола HTTP является возможность ограничения запроса диапазоном данных в запрашиваемом ресурсе. Эта функция широко используется видеостриминговыми сервисами, такими как YouTube, чтобы, если пользователь перешел к середине индикатора прогресса видео, сервер мог начать передавать данные с середины файла, а не отправлять весь файл с начала, заставляя пользователя ждать загрузки предыдущих данных. Частичные загрузки также широко применяются в Microsoft Windows Update, позволяя чрезвычайно большим пакетам обновлений загружаться в фоновом режиме и приостанавливаться на середине загрузки, если пользователь выключил компьютер или отключился от Интернета. Формат загрузки Metalink позволяет клиентам выполнять сегментированную загрузку, отправляя частичные запросы и распределяя их между несколькими зеркалами. Squid может пересылать частичные запросы на исходный веб-сервер. Для быстрого обслуживания частичного запроса из кэша, Squid требует наличия полной копии этого же объекта в своем хранилище. Если пользователь, использующий прокси для просмотра видео, переходит на другую страницу до завершения загрузки видео, Squid не сохраняет частичную загрузку для повторного использования и просто отбрасывает данные. Для продолжения и кэширования таких загрузок требуется специальная настройка.