yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Настройка прокси-сервера Squid в Ubuntu Linux

Squid — кэширующий прокси-сервер с расширенными возможностями управления доступом. Его используют разработчики, интернет-провайдеры и компании для экономии трафика, повышения производительности и ускорения доставки контента. Читайте статью, чтобы узнать, как установить прокси-сервер и настроить под свои задачи. 

Инструкции
Иллюстрация для статьи на тему «Настройка прокси-сервера Squid в Ubuntu Linux»
Продукты из этой статьи:
Иконка-Evolution Image
Evolution Image

О Squid

Squid — это высокопроизводительный прокси-сервер, который поддерживает протоколы HTTP, HTTPS, FTP и другие. Изначально он был задуман как кэширующий сервер, но со временем его функциональность расширилась.

Squid основан на демоне Harvest Cache, который разработали в начале 1990-х годов. Проект в то время финансировался грантом NSF, поддерживающим исследования технологий кэширования. По окончании финансирования Squid продолжал развиваться благодаря поддержке программистов-энтузиастов и коммерческих организаций. 

Какие функции Squid может выполнять в сетевой инфраструктуре:

  • Кэширование веб-контента. Хранение копий веб-страниц, изображений и других файлов на локальном диске для быстрого доступа

  • Проксирование запросов. Выполнение роли посредника для всех исходящих веб-запросов.

  • Управление доступом. Контроль использования интернета сотрудниками компании, реализация корпоративных политик доступа к онлайн-ресурсам.

  • Прозрачное проксирование. Перехват трафика без необходимости специфических настроек на устройствах. 

  • Фильтрация контента. Блокировка нежелательных сайтов, рекламы и сомнительных файлов.

Обычно Squid работает как прямой прокси и служит посредником между пользователями и интернетом — передает все запросы к веб-ресурсам от своего имени. Так он скрывает реальные IP-адреса, помогает обходить географические блокировки, управлять доступом к внешним ресурсам. 

Squid также может работать и наоборот — стоять перед серверами внутренней сети и перенаправлять к ним запросы от внешних пользователей. В этой схеме прокси распределяет нагрузку между серверами и защищает от сетевых атак.  

Схема работы Squid Схема работы Squid
Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Предварительные требования для успешной установки Squid 

Перед установкой прокси-сервера рекомендуем обновить операционную систему с помощью команды sudo apt update && sudo apt upgrade

Для развертывания Squid на виртуальной машине в облаке можно использовать Evolution Image от Cloud.ru — каталог готовых образов популярных дистрибутивов Linux. Сервис предоставляет подготовленные образы Ubuntu различных версий, оптимизированные для облачной инфраструктуры. Это позволяет быстро развернуть виртуальную машину с нужной версией Ubuntu, не тратя время на установку и базовую настройку операционной системы. 

Что еще нужно сделать:

  • Убедиться, что дискового пространства будет достаточно для хранения кэша и логов Squid. Должно быть не менее 1–2 ГБ свободного места. 

  • Установить права суперпользователя root. Это необходимо для установки пакетов и изменения системных конфигураций. 

  • Установить инструменты управления пакетами для Ubuntu. 

  • Открыть сетевой порт 3128, который Squid использует по умолчанию и убедиться, что он не занят другими службами. 

  • Настроить в брандмауэре разрешения для работы прокси-сервера. 

  • Установить удобный текстовый редактор для редактирования конфигурационного файла /etc/squid/squid.conf. Например, можно использовать Vim или Nano. 

Шаги установки 

Для установки отправьте через терминал команду sudo apt -y install squid.

После установки Squid на Ubuntu необходимо выполнить несколько базовых шагов по проверке, настройке и запуску сервиса. Убедитесь, что служба запущена:

Если служба неактивна, запустите ее:

Если хотите, чтобы прокси автоматически запускался после перезагрузки, выполните команду:

Для удобства основные команды по установке мы собрали в таблицу. 

Действие
Команда / Действие
Результат
Обновление списка пакетов
sudo apt update
Система получает актуальную информацию о пакетах
Установка Squid
sudo apt -y install squid
Squid загружается и устанавливается вместе с зависимостями
Проверка статуса сервиса
systemctl status squid
Проверка, что служба установлена и корректно работает
Запуск службы при необходимости
sudo systemctl start squid
Squid запускается вручную
Добавление в автозагрузку
sudo systemctl enable squid
Squid запускается автоматически при загрузке ОС
Резервное копирование конфигурации
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
Сохранение оригинальной конфигурации
Проверка конфигурации на ошибки
sudo squid -k parse
Проверка корректности файла конфигурации
Перезапуск сервиса
sudo systemctl restart squid
Применение новых настроек

Основные настройки Squid

Чтобы начать работать со Squid, достаточно базовых настроек. Потом можно добавить более тонкие, позволяющие расширить функциональность прокси. 

Конфигурация базовых параметров

Основные параметры для настройки — порт, имя хоста, список контроля доступа. 

Параметр
Пояснение
Пример настройки
http_port
Определяет порт, на котором будет работать Squid
Стандартный порт — 3128
visible_hostname
Устанавливает имя хоста, которое Squid будет использовать в сообщениях об ошибках и HTTP-заголовках
visible_hostname mysquidserver.local
acl localnet src
Определяет список контроля доступа (ACL). Он нужен для идентификации локальных сетей, которым будет разрешен доступ через прокси
acl localnet src 192.168.1.0/24 (Разрешает всю подсеть)
http_access allow
Директива в настройке Squid, которая разрешает доступ к прокси-серверу на основе ACL
http_access allow localnet
http_access deny all
Правило в настройке Squid, которое запрещает доступ ко всем ресурсам
http_access deny all

Пример минимальной настройки: 

Настройка кэширующего прокси и оптимизация производительности

Кэширование — основная функция Squid. Она влияет на производительность прокси и позволяет экономить внешний трафик.

Параметр
Пояснение
Рекомендованное значение
cache_dir
Определяет местоположение и размер кэша на диске. Для хранения кэша нужно использовать быстрое хранилище (SSD)

Формат: тип_хранилища путь_к_кэшу размер_в_МБ кол-во_каталогов_1го_уровня кол-во_каталогов_2го_уровня
cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size
Максимальный размер файла в КБ, который Squid будет кэшировать. Файлы большего размера будут просто проходить через прокси
maximum_object_size 4096 KB (4 МБ)
minimum_object_size
Минимальный размер файла (в байтах), который Squid будет кэшировать. Опция исключает кэширование очень маленьких объектов, поскольку в этом нет смысла
minimum_object_size 0 bytes

Для оптимизации производительности нужно настроить память для кэша: cache_mem 256 MB. Здесь стоит значение по умолчанию, можно поменять на свое. Этот объем памяти будет использоваться для метаданных кэша и хранения часто запрашиваемых объектов.  

Если есть родительский кэш, разместите его здесь: cache_peer, never_direct/always_direct. 

Настройка доступа и управления

Для управления доступом используются списки контроля доступа (ACL) и правила http_access. Рассказываем, что это и как настроить.

Evolution Image
Evolution Image
Управляйте пользовательскими образами и доступами к готовым образам с популярными дистрибутивами операционных систем.
Узнать больше

Списки доступа (ACL) и примеры настройки: src, dst, dstdomain, url_regex и time

ACL (Access Control List) — это список правил, который позволяет управлять доступом к интернет-ресурсам через прокси-сервер. Его можно задать в конфигурационном файле /etc/squid/squid.conf.

Пример файла /etc/squid/squid.confПример файла /etc/squid/squid.conf

Можно настроить списки по разным параметрам. 

ACL по IP-адресу клиента (src). Позволяет ограничить доступ для определенных машин или подсетей:

ACL по IP-адресу назначения (dst). Можно ограничить доступ к определенным серверам:

ACL по домену назначения (dstdomain). Разрешение или блокировка определенных сайтов:

ACL по URL (url_regex). Используется для фильтрации запросов по шаблону или регулярному выражению:

Файл /etc/squid/ads_block.list может содержать список шаблонов, например ads, banner, tracking. 

ACL по времени (time). Ограничение доступа в интернет в определенные часы или дни недели. Например, после 18 часов или в выходные: 

Пример ACL Пример ACL

Правила доступа

Правила доступа в Squid на Ubuntu используются для управления трафиком и определяют, что будет разрешено, а что — запрещено. Они настраиваются в конфигурационном файле /etc/squid/squid.conf и опираются на механизмы ACL. 

Сначала создаются ACL-списки, описывающие характер трафика: диапазоны внутренних IP-адресов, домены, время суток, протоколы или типы запросов. Затем эти ACL применяются в директиве http_access.

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

Правило
Описание
Пример
ACL (Access Control List)
Определяет критерии трафика: IP, домены, время, протоколы
acl localnet src 192.168.1.0/24
http_access allow
Разрешает доступ по заданному ACL
http_access allow localnet
http_access deny
Запрещает доступ
http_access deny blocked_sites
Порядок правил
Squid обрабатывает правила сверху вниз до первого совпадения
Размещать allow выше deny all
Блокировка доменов
Ограничивает доступ к определенным сайтам
acl bad dstdomain .example.com → http_access deny bad
Разрешение доверенной сети
Предоставляет доступ внутренним подсетям
allow localnet
Ограничения по времени
Позволяют регламентировать использование прокси
acl worktime time MTWHF 08:00-18:00
Запрет по умолчанию
Защищает сервер, блокируя весь неявно разрешенный трафик
http_access deny all
Файл конфигурации
Местоположение всех правил доступа
/etc/squid/squid.conf
Применение изменений
Перезапуск службы после правки конфигурации
systemctl restart squid

Ограничение скорости и управление трафиком

Squid позволяет контролировать использование полосы пропускания, ограничивать скорость загрузки и распределять трафик между пользователями. В этом помогут директивы в конфигурационном файле /etc/squid/squid.conf. 

Как действовать:

  1. Откройте конфигурационный файл Squid:sudo nano /etc/squid/squid.conf. 

  2. Используйте директиву delay_pools для ограничения скорости. Задайте пулы задержки, которые определяют правила. 

Пример конфигурации:

Продвинутые настройки

Выше мы описали базовые настройки, которых достаточно для начала работы с Squid. Рассказываем, как подключить дополнительные опции. 

Настройка прозрачного прокси

Прозрачный прокси — режим, при котором пользователям не нужно ничего настраивать. Их интернет-трафик перехватывается на шлюзе и принудительно перенаправляется на Squid. Пользователи могут даже не знать, что работают через прокси.

Настройки выполняются не в Squid, а на Linux-шлюзе (роутере) с помощью iptables. Весь трафик будет идти с порта 80 и перенаправляться через порт 3128, который слушает прокси. 

Команда для настройки через iptables:

Расшифровываем:

  • -t nat: работаем с таблицей NAT (Network Address Translation):

  • -A PREROUTING: добавляем правило в цепочку PREROUTING до принятия решения о маршрутизации трафика;

  • -i eth1: вводим правило, которое касается трафика, приходящего с интерфейса eth1 в локальной сети;

  • -p tcp --dport 80: перенаправляем TCP-пакеты, которые идут на 80-й порт (HTTP);

  • -j REDIRECT --to-port 3128: выбираем REDIRECT и выполняем перенаправление, меняя порт назначения на 3128. 

Теперь нужно сделать так, чтобы Squid «знал», что будет получать перехваченный трафик. В файле squid.conf нужно изменить директиву http_port. Вместо обычной http_port 3128 нужно добавить опцию intercept:

Метод работает только для HTTP на порту 80. Прозрачно перехватить HTTPS на порту 443 намного сложнее. Трафик зашифрован, поэтому Squid не сможет его прочитать. Единственный способ — «вскрыть» шифрование. Этот процесс называется SSL Bumping (или SSL Interception). Squid как бы выполняет «атаку человек посередине» (Man-in-the-Middle):

Squid притворяется для пользователя сайтом, подменяя его сертификат своим. Чтобы браузеры не заметили подвоха, нужно на каждый компьютер в сети установить специальный корневой сертификат (CA) вашего Squid-сервера и сделать его доверенным. 

Логирование и мониторинг

Все запросы, которые прошли через Squid, записываются в журнал доступа — access.log. Вы можете определять формат логов с помощью директивы logformat. Например, выбрать похожий на логи веб-сервера Apache (combined):

В логах будет видна такая информация, как время запроса, IP-адрес клиента, код ответа, URL, метод, статус кэша. 

Формат логовФормат логов

Второй журнал — cache.log. Туда записываются все процессы и ошибки Squid. 

Настройка в squid.conf:

Иногда в cache.log нужно больше информации для отладки. За это отвечает директива debug_options:

Чтобы постоянно не читать файлы логов, можно обратиться к менеджеру кэша. Для работы с ним используйте утилиту squidclient. Команды:

Этот инструмент позволяет отслеживать работу Squid и в реальном времени вести статистику. 

Управление и обслуживание Squid

Управление Squid обычно осуществляется через стандартные инструменты управления службами вашей операционной системы. Метод зависит от того, какую систему инициализации использует дистрибутив Linux. Чаще всего это systemd. Для старых дистрибутивов применяется SysVinit. 

Управление через systemd

Этот способ используется в большинстве современных дистрибутивов, в частности, Ubuntu 16.04+ и старше. С помощью утилиты systemd можно запускать, останавливать, перезапускать и проверять состояние службы Squid, настраивать автозапуск при старте системы. 

Основные команды для старта, остановки и перезапуска службы Squid:

  • Запуск Squid: sudo systemctl start squid или sudo service squid start (в старых версиях Ubuntu).

  • Остановка Squid: sudo systemctl stop squid или sudo service squid stop

  • Перезапуск Squid, например, после изменения конфигурации: sudo systemctl restart squid или sudo service squid restart.

  • Перезагрузка конфигурации без полного перезапуска: sudo systemctl reload squid или sudo squid -k reconfigure

  • Проверка статуса службы: sudo systemctl status squid или sudo service squid status

Перед применением изменений можно проверить корректность настроек с помощью команды sudo squid -k parse

Заключение

Администрирование Squid на Ubuntu требует внимания к настройке производительности, безопасности и мониторинга. Регулярно проверяйте конфигурационные файлы и ведите централизованные логи, чтобы своевременно обнаруживать проблемы. Для повышения производительности оптимизируйте параметры кэша. Для повышения отказоустойчивости настройте списки ACL и правила доступа. 

Продукты из этой статьи:
Иконка-Evolution Image
Evolution Image
17 декабря 2025

Вам может понравиться