Чаще всего запрос «как установить прокси сервер на linux» возникает в двух сценариях: нужно дать нескольким машинам единый выход через один IP или нужен отдельный узел для тестирования, мониторинга и рабочих задач. На практике на Linux обычно поднимают Squid — это проверенный HTTP/HTTPS-прокси, который ставится быстро, но требует аккуратной настройки ACL, иначе вместо рабочего сервиса получится либо 403 для своих клиентов, либо открытый прокси для всего интернета.
Что важно понять до установки
Если нужен собственный прокси на Linux, самый понятный путь — поставить Squid. Для базовой схемы вам нужны пакет squid, открытый порт 3128/tcp, список разрешенных IP-адресов и проверка конфига перед запуском.
Ключевой момент: такой сервер будет выводить трафик в сеть с IP самого сервера. Если вы ставите его на VPS, сайты увидят дата-центровый IP этого VPS, а не мобильный и не домашний адрес.
Самая частая ошибка — установить Squid, открыть порт наружу и не ограничить доступ ACL или файрволом. Открытый прокси долго не живет: его быстро находят, нагружают чужим трафиком, а потом приходится разбираться с логами и жалобами.
Установить прокси-сервер и настроить прокси в Linux — это разные задачи
По формулировке запроса часто смешивают две вещи. Первая — вы поднимаете свой сервер на Linux, который будет принимать подключения от клиентов. Вторая — вы настраиваете сам Linux использовать уже готовый внешний прокси для браузера, curl, пакетного менеджера или приложений.
| Задача | Что делаете | Что увидит внешний сайт |
|---|---|---|
| Поднять свой прокси на Linux | Ставите Squid, открываете порт, задаете ACL | IP вашего сервера |
| Прописать внешний прокси в Linux | Добавляете адрес, порт, логин и пароль в систему или приложение | IP внешнего прокси |
| Нужен мобильный или резидентский IP | Используете специализированный тип прокси | IP выбранной сети, а не вашего VPS |
Ниже — именно про первый вариант: как поставить и запустить собственный прокси-сервер на Linux.
Мобильные прокси России от 590 ₽ с ротацией
Отслеживайте, меняйте, переключайте и группируйте прокси в одном месте.
Перейти в личный кабинетКогда своего Linux-прокси достаточно, а когда нет
Собственный Squid хорошо работает там, где нужен контролируемый HTTP/HTTPS-прокси без лишней магии. Это удобный вариант для QA, офисной сети, внутренних инструментов, мониторинга собственных сайтов и задач, где приемлем IP сервера.
- Единая точка выхода в интернет для отдела, тестового стенда или нескольких серверов.
- Проверка сайта или веб-приложения с отдельного IP-адреса.
- SEO-мониторинг, сбор открытых данных и техническая аналитика при умеренной нагрузке.
- Разделение трафика по проектам, когда нужен отдельный выходной IP.
- Контроль логов и правил доступа на своей стороне.
Но есть и ограничения. Squid не делает ваш IP «мобильным», не превращает VPS в резидентский узел и не подходит для любого сетевого протокола.
Если под задачу нужен IP мобильного оператора и автоматическая смена адресов, свой Squid на VPS это не заменяет — в таких сценариях обычно смотрят на мобильные прокси с ротацией или на прокси с ротацией. Если же приложению нужен не HTTP/CONNECT, а сокетный прокси для разных TCP-сценариев, логичнее выбирать SOCKS5-прокси.
Что подготовить до установки
Перед установкой лучше сразу определить сеть клиентов и режим доступа. Это сэкономит время на переделке ACL и снизит риск случайно открыть прокси всем подряд.
- Сервер с Linux и правами
sudoили root. - Понимание, кто будет подключаться: одна машина, подсеть офиса, несколько внешних IP.
- Решение, на каком интерфейсе слушать прокси: только локальная сеть или все интерфейсы.
- Открытый порт на локальном файрволе и, если это облачный сервер, в сетевых правилах провайдера.
- Адрес подсети для ACL, например
192.168.10.0/24, либо список конкретных IP. - План по логам: где хранить, кто имеет доступ, нужно ли ограничивать срок хранения.
- Понимание, нужен ли доступ по IP, по логину и паролю или оба варианта сразу.
Если сервер стоит в облаке, дополнительно проверьте security group или аналогичные правила. Локально Squid может работать идеально, а снаружи подключение будет падать просто потому, что порт не открыт на уровне облака.
Как установить прокси-сервер на Linux через Squid
Ниже — базовая схема, которая подходит для Debian, Ubuntu и большинства RHEL-совместимых систем. Путь к конфигу у Squid обычно один и тот же — /etc/squid/squid.conf, а имя сервиса — squid.
Базовая установка и минимальная конфигурация
Установите пакет squid.
# Debian / Ubuntu sudo apt update sudo apt install squid # RHEL / AlmaLinux / Rocky sudo dnf install squidПосле установки проверьте, что в системе появились конфиг
/etc/squid/squid.confи сервисsquid.service.Сделайте резервную копию стандартного конфига.
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bakЭто полезно по двум причинам: можно быстро откатиться и удобно сверять свою минимальную конфигурацию с дефолтной, если позже понадобятся дополнительные ACL или параметры логирования.
Запишите минимальный рабочий конфиг.
sudo tee /etc/squid/squid.conf > /dev/null <<'EOF' http_port 3128 acl localnet src 192.168.10.0/24 acl localhost src 127.0.0.1/32 ::1 acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 443 acl Safe_ports port 1025-65535 acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow localnet http_access deny all cache deny all EOFЗамените
192.168.10.0/24на свою подсеть или на список отдельных ACL под конкретные клиентские IP. Если прокси нужен только внутри сети, безопаснее слушать не все интерфейсы, а конкретный адрес, напримерhttp_port 192.168.10.5:3128.Проверьте конфигурацию на синтаксис.
sudo squid -k parseЭто обязательная привычка. Любую правку в
squid.confлучше сначала проверять этой командой, а уже потом перезапускать сервис.Включите и запустите Squid.
sudo systemctl enable --now squid sudo systemctl status squid --no-pagerЕсли сервис не стартовал, первым делом смотрите
/var/log/squid/cache.log. Там обычно видны ошибки синтаксиса, проблемы с портом или путями.Откройте порт 3128/tcp в файрволе.
# UFW sudo ufw allow 3128/tcp # firewalld sudo firewall-cmd --permanent --add-port=3128/tcp sudo firewall-cmd --reloadЕсли вы используете нестандартный порт на системах с SELinux, может потребоваться отдельная настройка контекста порта. На практике порт 3128 вызывает меньше всего сюрпризов.
Проверьте, что сервис действительно слушает нужный порт.
sudo ss -ltnp | grep 3128Если команда ничего не показывает, проблема обычно в том, что сервис не запущен, не применился конфиг или порт уже занят другим процессом.
С клиентской машины выполните тестовый запрос через прокси.
curl -x http://SERVER_IP:3128 -I http://<тестовый_ресурс>Для HTTPS в логе Squid часто появляются записи вида
TCP_TUNNEL/200. Если запросы не проходят, параллельно смотритеsystemctl status squidи/var/log/squid/access.log.
Что делает этот конфиг
http_port 3128 открывает стандартный порт Squid. Строки acl localnet и http_access allow localnet определяют, кто может пользоваться прокси. Правило http_access deny all в конце закрывает доступ всем остальным.
Блок с Safe_ports, SSL_ports и CONNECT нужен, чтобы ограничить допустимые порты и нормально обрабатывать HTTPS через метод CONNECT. Строка cache deny all отключает кэширование — для простого forward proxy это обычно удобнее и понятнее в поддержке.
Как ограничить доступ нескольким адресам или сетям
Если клиентов несколько, не обязательно загонять их в одну подсеть. В Squid можно добавить несколько ACL и разрешить доступ только им.
acl office src 203.0.113.10/32
acl parser src 203.0.113.20/32
acl qa_net src 10.20.30.0/24
http_access allow office
http_access allow parser
http_access allow qa_net
http_access deny all
Порядок правил критичен. Squid читает http_access сверху вниз, поэтому разрешающие строки должны стоять до финального deny all.
Если нужен доступ по логину и паролю
ACL по IP удобны для офиса или серверов с фиксированными адресами. Если клиенты подключаются из разных мест или IP меняются, проще включить аутентификацию. Самый частый вариант — Basic auth с файлом паролей.
Базовая схема с Basic auth
Установите утилиту для создания файла паролей.
# Debian / Ubuntu sudo apt install apache2-utils # RHEL / AlmaLinux / Rocky sudo dnf install httpd-toolsСоздайте файл пользователей.
sudo htpasswd -c /etc/squid/passwd analystКлюч
-cсоздает файл. Для добавления следующих пользователей используйте команду уже без этого ключа, чтобы не затереть существующих.Найдите путь к модулю
basic_ncsa_auth.sudo dpkg -L squid | grep basic_ncsa_auth || sudo rpm -ql squid | grep basic_ncsa_authНа Debian-подобных системах это часто путь внутри
/usr/lib/squid/, на RHEL-подобных — внутри/usr/lib64/squid/. Универсально зашивать один путь в инструкцию не стоит, его лучше проверить на своей системе.Добавьте в
squid.confстроки аутентификации и обновите правила доступа.auth_param basic program /путь/к/basic_ncsa_auth /etc/squid/passwd auth_param basic realm Squid proxy acl authenticated proxy_auth REQUIRED http_access allow localhost http_access allow authenticated http_access deny allЕсли хотите, можно совместить авторизацию и ACL по IP, например разрешать доступ только авторизованным клиентам из конкретной сети.
Проверьте конфиг и перечитайте сервис.
sudo squid -k parse sudo systemctl reload squid
Нюанс безопасности: Basic auth передает учетные данные в кодировке base64, а не в виде криптографической защиты. Для доверенной внутренней сети это часто приемлемо, но выносить такой прокси в недоверенную среду без дополнительной защиты канала — плохая идея.
Как проверить, что прокси установлен правильно
Один успешный запрос через curl — это только первый тест. Для рабочей эксплуатации лучше пройти короткий чек-лист.
- Запросы с разрешенного IP проходят без 403 и пишутся в
access.log. - Запросы с неразрешенного IP получают отказ, а не обслуживаются прокси.
- HTTPS работает через CONNECT без ошибок по порту 443.
- Порт 3128 виден только тем сетям, которым он реально нужен.
- Внешние сервисы видят IP самого прокси-сервера, а не клиентской машины.
- После перезагрузки сервера сервис поднимается автоматически.
Отдельно учитывайте, что системная проверка не гарантирует совместимость со всеми приложениями. Одни программы берут настройки прокси из системных переменных, другие — только из собственных параметров, третьи вообще не умеют работать через HTTP-прокси.
Типичные ошибки и как их диагностировать
| Симптом | Частая причина | Что проверить |
|---|---|---|
| 403 Forbidden | Неправильная ACL или порядок правил | Подсеть в acl localnet, порядок строк http_access, наличие deny all в конце |
| Connection refused или timeout | Сервис не запущен, порт закрыт локально или в облаке | systemctl status squid, ss -ltnp | grep 3128, локальный файрвол, security group |
| 503 Service Unavailable | Проблемы с DNS или исходящим подключением самого сервера | Работает ли у сервера обычный выход в сеть без прокси, что пишет cache.log |
| HTTP работает, HTTPS нет | Сломаны правила CONNECT или закрыт 443 | Есть ли acl SSL_ports port 443 и http_access deny CONNECT !SSL_ports |
| 407 Proxy Authentication Required | Включена авторизация, но клиент не передает логин и пароль | Настройки приложения, правильность пароля, порядок правил http_access |
Еще один частый случай — сервер слушает прокси только на 127.0.0.1, а вы пытаетесь подключаться снаружи. Это удобно для локальных сценариев, но не подойдет для клиентов в сети. Проверяйте, какой адрес указан в http_port.
Ограничения и вопросы безопасности
Squid — это HTTP/HTTPS-прокси прикладного уровня. Он не подменяет собой маршрутизацию всего хоста и не делает из Linux универсальный сетевой шлюз для любого трафика.
- Через прокси пойдет только трафик тех приложений, которые действительно настроены на его использование.
- Внешние сайты увидят IP Linux-сервера, а не «любой нужный» тип сети.
- При работе с HTTPS прокси обычно видит адрес назначения, порт, время и объем трафика, но не содержание страницы, если не используется отдельная схема TLS-перехвата.
- Логи Squid могут содержать чувствительные служебные данные: клиентские IP, целевые хосты, коды ответов и время запросов.
- Каждый лишний сетевой хоп добавляет задержку, а итоговая скорость зависит от канала, нагрузки и самого сервера.
Если задача — просто дать браузеру или парсеру отдельный IP, своего прокси часто хватает. Но если нужны ротация IP, определенный тип сети, география оператора или стабильная работа на большом пуле адресов, самодельный Squid на одном VPS быстро упирается в ограничения архитектуры.
Если вам не нужно поднимать сервер, а нужно подключить Linux к готовому прокси
Это соседняя задача, но ее часто ищут тем же запросом. В таком случае вы не ставите Squid, а указываете системе или приложению параметры уже существующего прокси.
export http_proxy=http://LOGIN:PASSWORD@HOST:PORT
export https_proxy=http://LOGIN:PASSWORD@HOST:PORT
export no_proxy=localhost,127.0.0.1,.local
Такой способ обычно влияет только на текущую shell-сессию и на те программы, которые читают эти переменные окружения. Это не «проксирует весь Linux целиком» и не заменяет настройку отдельных приложений.
Если в строке подключения есть логин и пароль, помните о shell history и правах на файлы окружения. Для постоянной конфигурации лучше использовать аккуратную схему хранения секретов, а не оставлять учетные данные в истории команд.
Что в итоге
Установить прокси-сервер на Linux проще всего через Squid: поставить пакет, задать http_port, ограничить доступ ACL, проверить конфиг командой squid -k parse, открыть порт и протестировать соединение через curl. Для внутренней сети этого часто достаточно уже за 15–20 минут.
Главное — не путать собственный HTTP/HTTPS-прокси с универсальным сетевым шлюзом и не ждать от VPS того, что дают мобильные, резидентские или ротационные прокси. В большинстве рабочих сценариев проблем не в самой установке, а в двух вещах: неверный список разрешенных IP и слишком широкий доступ к порту.
Частые вопросы по теме
Чем отличается установка прокси-сервера от настройки прокси в Linux?
Установка прокси-сервера означает, что ваш Linux сам принимает клиентские подключения и пересылает их дальше. Настройка прокси в Linux — обратная задача: система или приложение используют уже готовый внешний прокси. В первом случае вы администрируете сервис, порт, ACL и логи. Во втором — просто прописываете адрес, порт и авторизацию.
Какой прокси обычно ставят на Linux?
Для HTTP и HTTPS чаще всего ставят Squid, потому что он давно используется, нормально работает с ACL, логами и CONNECT для HTTPS. Если задаче нужен именно сокетный прокси для разных TCP-сценариев, а не HTTP-модель, обычно смотрят в сторону SOCKS5-решений. Выбор зависит не от моды, а от протокола нужного приложения.
Будет ли весь трафик сервера идти через установленный прокси?
Нет. Сам по себе Squid не перенаправляет автоматически весь трафик Linux через себя. Через него идут только те приложения и клиенты, которые явно настроены использовать этот прокси. Это важное ограничение: браузер может работать через Squid, а системные обновления или отдельный агент мониторинга — напрямую, если их не настроили отдельно.
Можно ли использовать такой сервер для SEO-мониторинга и рекламной аналитики?
Да, если задаче подходит IP сервера и нет требования к мобильной или резидентской сети. Для проверки собственных сайтов, умеренного мониторинга выдачи, тестирования лендингов и сбора открытых данных своего Squid часто хватает. Но для чувствительных сценариев, где важны тип сети, ротация адресов и география, одного VPS обычно недостаточно.
Почему после установки прокси сайты все равно видят дата-центровый IP?
Потому что Squid не создает новый тип сети, а лишь пересылает трафик через тот хост, на котором запущен. Если сервер стоит в дата-центре, наружу будет виден именно дата-центровый IP. Прокси-сервер меняет точку выхода в сеть, но не меняет природу самой сети, из которой этот выход выполняется.
Что делать, если через curl все работает, а в браузере или приложении нет?
Сначала проверьте, поддерживает ли конкретная программа HTTP-прокси и умеет ли она работать с авторизацией. Затем сравните адрес, порт, логин и пароль, а также наличие поддержки HTTPS через CONNECT. На практике curl часто проходит первым, потому что его поведение прозрачно, а графические приложения могут использовать свои собственные настройки сети.



