В Linux нет одной кнопки «системный прокси»: браузер берёт настройки рабочего стола, терминал смотрит в переменные окружения, а apt, Docker и службы systemd живут по своим конфигам. Разбираем все уровни, Astra Linux отдельно, и что делать с программами, которые прокси не видят.
В Windows и macOS есть один системный прокси, который читает большинство программ. В Linux такого центра нет. Прокси задаётся на трёх уровнях, и программа слушает только тот, который ей знаком.
Первый уровень - настройки рабочего стола. GNOME хранит их в gsettings (схема org.gnome.system.proxy), KDE Plasma в файле ~/.config/kioslaverc, Astra Linux в инструменте fly-kcmshell5. Их используют браузеры семейства Chromium и программы, собранные с библиотекой libproxy.
Второй уровень - переменные окружения http_proxy, https_proxy, ftp_proxy, all_proxy и no_proxy. Это главный способ для терминала: их читают curl, wget, git, pip, npm, apt и множество других утилит.
Третий уровень - собственные конфиги программ: apt, dnf, snapd, Docker, git и npm позволяют прописать прокси прямо в своих настройках. Это особенно важно для служб systemd и команд через sudo, которые переменные вашей сессии не получают.
Из этого следует главное правило: после настройки проверяйте IP в каждой программе, которая вам важна. Браузер через прокси ещё не значит, что через него идут apt, Docker или ваш скрипт.
Та же тема для других систем: прокси-клиент для Windows, прокси для Mac, прокси на роутере.
В GNOME (стандартный рабочий стол Ubuntu и Fedora Workstation, а также Debian с окружением GNOME) прокси открывается из раздела «Сеть» в «Настройках». В справке Ubuntu 26.04 доступны три режима: «Нет» (прямое подключение), «Вручную» с отдельными адресом и портом для HTTP, HTTPS, FTP и SOCKS, и «Автоматически» с адресом PAC-файла. В новых сборках GNOME поля HTTP, HTTPS, FTP и SOCKS, список исключений и адрес конфигурации собраны на одной странице настроек прокси.
Важный нюанс: в окне GNOME есть только хост и порт. Логин и пароль в интерфейсе не задаются, хотя в схеме gsettings для HTTP есть ключи authentication-user и authentication-password. Все настройки можно менять из консоли командой gsettings, это удобно для скриптов и удалённой настройки.
В KDE Plasma (Kubuntu, KDE-сборки Fedora и других дистрибутивов) прокси находится в «Параметры системы» → «Сеть» → «Прокси». Режимы: без прокси, автоопределение, адрес PAC-файла, «Использовать системные настройки прокси» (значения берутся из переменных окружения) и ручная настройка с полями HTTP, SSL, FTP и SOCKS. Настройки сохраняются в ~/.config/kioslaverc: их читают приложения KDE через KIO, а также программы на libproxy. Полей логина и пароля в этом окне тоже нет.
Chromium на Linux, по документации проекта, сам определяет, что запущен в GNOME или KDE, и берёт прокси оттуда. В других окружениях он использует флаги командной строки и переменные окружения. Firefox хранит собственные настройки и умеет брать системные. Учтите ограничение Chromium: для SOCKS5 он не поддерживает никакие методы аутентификации, поэтому прокси с паролем для Chrome лучше указывать как HTTP.
# то же, что делает окно настроек GNOME
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host 'host'
gsettings set org.gnome.system.proxy.http port 8080
gsettings set org.gnome.system.proxy.https host 'host'
gsettings set org.gnome.system.proxy.https port 8080
gsettings set org.gnome.system.proxy.socks host 'host'
gsettings set org.gnome.system.proxy.socks port 1080
# выключить
gsettings set org.gnome.system.proxy mode 'none'Замените host и порты на свои. Команды меняют настройки текущего пользователя и не требуют sudo.
Chrome и SOCKS5 с паролем несовместимы. Для прокси с логином и паролем в Chromium и Chrome используйте HTTP-прокси или прокси-клиент. Подробнее о браузерах - в гиде прокси для браузера.
Astra Linux построена на Debian, но у неё собственный рабочий стол Fly и свои инструменты, поэтому инструкции для Ubuntu переносить напрямую не стоит. Ниже только то, что описано в статье «Использование PROXY» справочного центра Astra Linux (статья справочного центра относится к Special Edition x.7 и ряду более ранних выпусков, включая обновления 1.6 и 8.1).
Общесистемные настройки задаются переменными окружения с правами администратора (при включённом МКЦ нужны права администратора с высоким уровнем целостности). Astra использует https_proxy, http_proxy, ftp_proxy, socks_proxy и no_proxy. Значение пишется как URL с логином и паролем или без них, например http://login:pass@host:8080/. Спецсимволы в пароле нужно экранировать percent-encoding, для этого Astra советует команду jq -R @uri. Чтобы изменения вступили в силу, систему перезагружают.
Чтобы общесистемные значения подхватили графические программы пользователя, в терминале (Alt+T) выполняют fly-kcmshell5 proxy и выбирают «Использовать общесистемные настройки proxy» (в некоторых обновлениях пункт называется «Использовать общесистемные параметры прокси»), указывая имена переменных из /etc/environment. В этом же окне можно задать прокси вручную, без префиксов http:// в адресе. Ограничение из документации: такой способ не передаёт логин и пароль, и прокси с аутентификацией работать не будет. Настройки хранятся в ~/.config/kioslaverc, и файл можно раздать другим пользователям.
Есть и третий путь: прокси, заданный в nm-connection-editor, применяется к программам с поддержкой libproxy, включая Firefox из состава ОС. По данным Astra, Firefox и Chromium игнорируют логин и пароль из глобальных настроек и спрашивают их при запуске. Для apt Astra предлагает строки Acquire::http::proxy и Acquire::https::proxy в /etc/apt/apt.conf, для wget параметры в /etc/wgetrc. Ещё одна оговорка из той же статьи: старые версии curl не понимают в no_proxy адреса в формате CIDR вроде 192.168.0.0/24 (поддержка появилась в curl 7.86.0), поэтому в Astra их надёжнее перечислять явно.
Не переносите инструкции Ubuntu на Astra как есть. В Astra другой рабочий стол, свои инструменты и, при включённом мандатном контроле целостности, свои требования к правам. Сверяйтесь со справочным центром Astra для вашего обновления.
Для командной строки основной способ - переменные http_proxy, https_proxy, ftp_proxy, all_proxy и no_proxy. Значение пишется как URL: схема, логин и пароль при необходимости, хост и порт. all_proxy используется, когда для протокола нет отдельной переменной, а no_proxy содержит список хостов и доменов через запятую, которые идут напрямую.
Регистр имеет значение. По руководству curl переменные можно задавать строчными или заглавными буквами, строчные имеют приоритет, но http_proxy работает только в нижнем регистре. Docker daemon, напротив, проверяет оба варианта, а некоторые программы читают только заглавные. Поэтому на практике задают оба набора с одинаковыми значениями.
Где хранить переменные. Команда export действует только в текущей сессии терминала. Для одного пользователя её дописывают в ~/.bashrc (или ~/.zshrc). Для всех пользователей подходит /etc/environment: этот файл читает модуль pam_env при входе, и это не скрипт, а строки вида KEY=value без export и без подстановки других переменных. Альтернатива - скрипт в /etc/profile.d/, он выполняется при входе в login-оболочку и при запуске графической сессии. Сам /etc/profile в Ubuntu редактировать не рекомендуют, так как он принадлежит пакету base-files.
Две частые ловушки. Первая - sudo: по умолчанию он сбрасывает окружение, и прокси теряется. Помогает sudo -E (если политика sudo разрешает сохранять окружение) или строка Defaults env_keep += "*_proxy *_PROXY" в файле в /etc/sudoers.d/. Вторая - службы systemd: процессы системного менеджера служб не наследуют переменные вашей сессии, им прокси задают через Environment= в самом юните.
Для SOCKS5 используйте схему socks5h://, а не socks5://. В curl вариант socks5h означает, что имя сайта резолвит прокси, а не ваша машина. Иначе DNS-запросы уйдут к вашему провайдеру или DNS хостинга.
# прокси для текущей сессии терминала
export http_proxy="http://login:pass@host:8080"
export https_proxy="http://login:pass@host:8080"
export all_proxy="socks5h://login:pass@host:1080"
export no_proxy="localhost,127.0.0.1,.local"
# часть программ читает только верхний регистр
export HTTP_PROXY="$http_proxy" HTTPS_PROXY="$https_proxy" NO_PROXY="$no_proxy"
# что сейчас задано
env | grep -i _proxy
# выключить
unset http_proxy https_proxy all_proxy no_proxy HTTP_PROXY HTTPS_PROXY NO_PROXY
# сохранять переменные при sudo (редактировать только через visudo)
sudo visudo -f /etc/sudoers.d/05_proxy
# Defaults env_keep += "*_proxy *_PROXY"Замените host, порты, login и pass на свои. Спецсимволы в пароле экранируйте percent-encoding, например @ как %40. Строки, показанные после # с отступом, вписываются в открывшийся файл без символа #.
apt (Debian, Ubuntu, Mint, Astra) читает переменную http_proxy, но надёжнее задать прокси в файле в /etc/apt/apt.conf.d/ строкой Acquire::http::Proxy "http://login:pass@host:8080/" и такой же для Acquire::https::Proxy. По руководству apt-transport-http поддерживаются схемы http, https и socks5h, то есть SOCKS5 с DNS на стороне прокси. Логин и пароль можно вынести в apt_auth.conf, а для отдельных хостов указать DIRECT.
dnf (Fedora, RHEL и производные) берёт прокси из параметра proxy= в /etc/dnf/dnf.conf или в файле репозитория, логин и пароль задаются отдельно параметрами proxy_username и proxy_password. Если proxy не задан, по документации dnf действуют переменные curl, например http_proxy. Пустое значение proxy в описании репозитория отключает прокси, унаследованный из основной секции.
curl принимает прокси ключом -x (--proxy) со схемами http, https, socks4, socks4a, socks5 и socks5h, а без ключа читает переменные окружения. Ключ -x перекрывает переменные. wget читает http_proxy, https_proxy, ftp_proxy и no_proxy, а также одноимённые параметры в /etc/wgetrc (в Debian и Ubuntu) и ~/.wgetrc, логин и пароль задаются через proxy_user и proxy_password. SOCKS в руководстве wget не описан, для него используйте curl или proxychains.
git без дополнительных настроек берёт http_proxy, https_proxy и all_proxy, а параметр http.proxy их переопределяет и понимает тот же синтаксис, что curl, включая socks5h://. Прокси можно задать и для отдельного удалённого репозитория через remote.<имя>.proxy. pip принимает прокси ключом --proxy, параметром proxy в pip.conf или из переменных http_proxy, https_proxy и no_proxy. npm использует параметры proxy и https-proxy, а если они не заданы, читает HTTP_PROXY, HTTPS_PROXY и их строчные варианты.
snapd работает как системная служба и переменные из вашего терминала не видит. Для него прокси задают командами snap set system proxy.http=... и proxy.https=... По исходному коду snapd эти значения используются для его собственных запросов, а если они не заданы, snapd берёт прокси из своего окружения.
# APT (Debian, Ubuntu, Mint): файл /etc/apt/apt.conf.d/95proxy
Acquire::http::Proxy "http://login:pass@host:8080/";
Acquire::https::Proxy "http://login:pass@host:8080/";
# вариант через SOCKS5 с DNS на стороне прокси:
# Acquire::http::Proxy "socks5h://login:pass@host:1080/";
# DNF (Fedora, RHEL): секция [main] в /etc/dnf/dnf.conf
proxy=http://host:8080
proxy_username=login
proxy_password=pass
# curl и git
curl -x socks5h://login:pass@host:1080 https://example.com
git config --global http.proxy http://login:pass@host:8080
# pip и npm
pip install --proxy http://login:pass@host:8080 requests
npm config set proxy http://login:pass@host:8080
npm config set https-proxy http://login:pass@host:8080
# snapd (служба, переменные из терминала не видит)
sudo snap set system proxy.http="http://login:pass@host:8080"
sudo snap set system proxy.https="http://login:pass@host:8080"
# wget: /etc/wgetrc или ~/.wgetrc
use_proxy = on
http_proxy = http://host:8080/
https_proxy = http://host:8080/
proxy_user = login
proxy_password = passДля конфигов в /etc нужны права root. Пароль в открытом виде в конфиге виден всем, у кого есть доступ к файлу, выставляйте права аккуратно.
У Docker два независимых места для прокси. Первое - сам демон dockerd, который скачивает образы из Docker Hub и других реестров. По документации Docker рекомендуемый способ - ключ proxies в /etc/docker/daemon.json с полями http-proxy, https-proxy и no-proxy, после чего демон перезапускают. Можно задать прокси и переменными окружения в drop-in файле systemd /etc/systemd/system/docker.service.d/http-proxy.conf, но настройки демона имеют приоритет над переменными. Docker Desktop прокси из daemon.json игнорирует, у него свои настройки.
Второе место - контейнеры и сборки. Раздел proxies в ~/.docker/config.json не влияет на сам клиент и демон: Docker по нему выставляет в контейнерах переменные HTTP_PROXY и http_proxy и передаёт их как аргументы сборки. Частая ошибка - настроить только демон и удивляться, что приложение внутри контейнера ходит в сеть напрямую, или наоборот.
То же относится к любым службам systemd, будь то парсер, бот или агент мониторинга. Процессы системного менеджера служб не наследуют переменные вашей сессии и не читают ~/.bashrc. Прокси им задают директивой Environment= или файлом через EnvironmentFile= в юните. Удобнее всего делать это через systemctl edit, чтобы изменения лежали в отдельном drop-in файле и не терялись при обновлении пакета.
# Docker daemon (скачивание образов): /etc/docker/daemon.json
{
"proxies": {
"http-proxy": "http://login:pass@host:8080",
"https-proxy": "http://login:pass@host:8080",
"no-proxy": "localhost,127.0.0.0/8"
}
}
sudo systemctl restart docker
# любая другая служба systemd
sudo systemctl edit имя-службы.service
# [Service]
# Environment="HTTPS_PROXY=http://login:pass@host:8080"
# Environment="NO_PROXY=localhost,127.0.0.1"
sudo systemctl restart имя-службы.servicedaemon.json влияет только на демон (pull и push образов). Прокси для контейнеров задаётся в ~/.docker/config.json. Строки, показанные после # с отступом, вписываются в открывшийся файл без символа #.
Многие программы не умеют прокси вообще или поддерживают только HTTP. Для них есть обёртки, которые перехватывают сетевые соединения.
proxychains-ng (в Debian и Ubuntu пакет proxychains4, конфиг /etc/proxychains4.conf) подменяет сетевые функции через LD_PRELOAD. По описанию проекта он работает только с динамически слинкованными программами и только с TCP: UDP и ICMP не поддерживаются. Поддерживает прокси http, socks4 и socks5, для http и socks5 с логином и паролем, цепочки и разрешение DNS через прокси (proxy_dns). В стандартном /etc/proxychains4.conf включены strict_chain и строка socks4 127.0.0.1 9050 для Tor: её нужно закомментировать и добавить свой прокси, причём в [ProxyList] принимается только IPv4-адрес, а не имя хоста. Последний релиз 4.17 вышел в январе 2024 года, но основная ветка обновлялась в августе 2026 года.
graftcp решает главный недостаток proxychains: он перехватывает системные вызовы через ptrace, не зависит от LD_PRELOAD и поэтому справляется со статически собранными программами, в том числе с большинством программ на Go. Перенаправляет TCP на SOCKS5 или HTTP-прокси, умеет проксировать DNS и, если явно включить, UDP. Работает только на Linux. В Ubuntu 22.04 и 24.04 есть пакет graftcp, но это старая версия 0.3.1. Актуальные сборки .deb, .rpm и архивы проект выкладывает в релизах на GitHub, последний вышел в июле 2026 года, основная ветка обновлялась в августе 2026 года.
Если нужно завернуть в прокси весь трафик машины, используют TUN, то есть виртуальный сетевой интерфейс. tun2socks поддерживает HTTP, SOCKS, Shadowsocks и SSH-прокси с авторизацией и обновлялся в сентябре 2026 года. sing-box умеет вход tun и выход socks с логином и паролем. Из графических клиентов на Linux есть Clash Verge Rev на ядре mihomo: он выпускает пакеты .deb и .rpm для x64, arm64 и armhf, поддерживает системный прокси и режим TUN и обновлялся в сентябре 2026 года. Подробное сравнение таких программ для всех ОС есть в разборе аналогов Proxifier.
# Debian и Ubuntu
sudo apt install proxychains4
# в /etc/proxychains4.conf, секция [ProxyList]: закомментируйте строку socks4 127.0.0.1 9050
# и добавьте свою (только IPv4-адрес, имя хоста не принимается)
# socks4 127.0.0.1 9050
socks5 203.0.113.10 1080 login pass
# запуск любой программы через прокси
proxychains4 curl https://example.com203.0.113.10 - адрес из документационного диапазона, замените его на IPv4-адрес своего прокси.
Смотрите также: аналоги Proxifier, что такое SOCKS5-прокси и как его подключить, программы для управления прокси.
Запрос «прокси сервер на линукс» часто означает не клиент, а собственный сервер. Коротко о трёх самых распространённых вариантах без пошаговой инструкции.
Squid - кэширующий веб-прокси с поддержкой HTTP, HTTPS, FTP и других протоколов. Он есть в стандартных репозиториях Debian (в том числе Debian 13) и Ubuntu 24.04 и 26.04 и подходит для офиса, кэширования и фильтрации. Для лёгкого HTTP-прокси без кэша в тех же репозиториях есть tinyproxy.
Dante - SOCKS-сервер, пакет dante-server. Он доступен в Ubuntu 24.04 и 26.04, в Debian 12 и в тестовой ветке Debian, но на момент проверки его нет в стабильном Debian 13. 3proxy - компактный сервер, который умеет HTTP и SOCKS в одной программе. В репозиториях Debian и Ubuntu его нет, но проект выпускает свои пакеты .deb и .rpm и ведёт подписанные репозитории apt и dnf. Версия 1.0.0 вышла в августе 2026 года.
Помните, что свой сервер выходит в интернет с IP вашего VPS или домашнего провайдера. Для задач, где площадки проверяют тип IP, адрес датацентра часто хуже, чем адрес мобильного оператора. Если цель - именно мобильный IP, поднимать сервер не нужно.
Документация проектов: Squid, Dante, 3proxy. Проверить, открыт ли порт сервера снаружи, поможет гид как проверить доступность портов.
| Программа | Где настраивается | SOCKS | Заметка |
|---|---|---|---|
| GNOME (Ubuntu, Fedora) | «Настройки» → «Сеть» → Network Proxy, ключи gsettings org.gnome.system.proxy | Да, поле SOCKS | В интерфейсе только хост и порт. Читают Chromium и программы на libproxy. |
| KDE Plasma | Параметры системы → Сеть → Прокси, файл ~/.config/kioslaverc | Да, поле SOCKS | Есть режим «использовать системные настройки» из переменных окружения. Полей логина и пароля нет. |
| Astra Linux (Fly) | fly-kcmshell5 proxy, /etc/environment | Переменная socks_proxy | Через fly-kcmshell5 прокси с авторизацией не работает, по данным справочного центра Astra. |
| apt | /etc/apt/apt.conf.d/, Acquire::http::Proxy | Да, socks5h:// | Читает и http_proxy, но при запуске через sudo переменная обычно теряется. |
| dnf | /etc/dnf/dnf.conf, proxy= и proxy_username= | В документации не описан | Если proxy не задан, действуют переменные curl, например http_proxy. |
| curl | -x или переменные окружения | socks4, socks4a, socks5, socks5h | http_proxy только строчными буквами. |
| wget | /etc/wgetrc, ~/.wgetrc, переменные | В руководстве не описан | Логин и пароль через proxy_user и proxy_password. |
| git | git config http.proxy | Да, синтаксис curl | Без настройки берёт http_proxy, https_proxy и all_proxy. |
| pip, npm | --proxy, pip.conf; npm config proxy и https-proxy | Для HTTP-прокси | Оба понимают переменные HTTP(S)_PROXY. |
| snapd | snap set system proxy.http и proxy.https | В документации не описан | snapd работает как служба и export из терминала не видит. |
| Docker daemon | /etc/docker/daemon.json, ключ proxies | HTTP/HTTPS-прокси | Отдельно от клиента: контейнерам прокси задаёт ~/.docker/config.json. |
Проверено 25 сентября 2026 года по официальной документации и исходному коду проектов. «Не описан» значит, что поддержка SOCKS не упоминается в руководстве, а не что она точно отсутствует во всех сборках.
Инструкция для рабочего стола GNOME в Ubuntu, Debian и Fedora. Понадобятся адрес прокси, порт и, если есть, логин с паролем для терминала.
Откройте «Настройки» (Settings) и перейдите в раздел «Сеть» (Network). Быстрее всего начать набирать «Сеть» в обзоре «Действия».
Откройте пункт с настройками прокси (Network Proxy). В зависимости от версии GNOME он находится в списке слева или открывается отдельным окном из раздела «Сеть».
Выберите режим «Вручную» (Manual). Режим «Автоматически» (Automatic) нужен для PAC-файла: в него вписывают адрес конфигурации.
Впишите хост и порт в поля HTTP Proxy и HTTPS Proxy, если у вас HTTP-прокси, или в поле SOCKS Proxy для SOCKS5. Полей для логина и пароля в интерфейсе нет, поэтому прокси с авторизацией удобнее подключать через переменные окружения, конфиги программ или прокси-клиент.
Проверьте список исключений (Ignored Hosts). По умолчанию в схеме GNOME туда входят localhost, 127.0.0.0/8 и ::1. Добавьте локальные адреса и корпоративные домены, если нужно.
Сохраните изменения: в новых версиях GNOME для этого есть кнопка «Сохранить» (Save) в окне прокси, в старых настройки применяются сразу. Запустите Chromium или Chrome и проверьте видимый IP на любом сервисе проверки адреса.
Для терминала задайте переменные http_proxy и https_proxy (пример в разделе о переменных окружения): curl, git и apt смотрят в них или в свои конфиги, а не в gsettings.
Проверьте консоль командой curl к сервису проверки IP. Если в браузере IP прокси, а в терминале ваш настоящий, значит переменные не заданы в этой сессии.
Переменные окружения, apt.conf или proxychains лишь направляют трафик. Как вас увидят сайты, решает прокси на выходе. На Linux обычно работают парсеры, боты и автоматизация, и именно они чаще всего упираются в блокировки по IP датацентра.
Мобильные прокси Coronium выдаются в формате host:port:login:pass и работают по HTTP и SOCKS5. Их можно вписать в http_proxy и all_proxy, в curl через socks5h://, в apt.conf, в proxychains4.conf (с IPv4-адресом вместо имени хоста) или в конфиг парсера без переделок. На выходе виден IP настоящего оператора 4G/5G. Для серверов сбора данных смотрите решение мобильные прокси для парсинга.
Прокси-клиенты по приложениям и TUN для всех ОС.
Протокол SOCKS5, авторизация и подключение.
Прокси для всей домашней или офисной сети.
macOS: системный прокси, Терминал и программы.
Системный прокси Windows и программы для ПК.
Chrome, Firefox и расширения для прокси.