Перейти к содержимому
Гайды 5 мин чтения 1 просмотров

Настройка прокси в Linux

Подробная инструкция по настройке прокси-сервера в Linux. Охватывает переменные окружения, APT и Systemd. Упростите работу с GProxy.

Настройка прокси в Linux осуществляется через переменные окружения, конфигурацию пакетного менеджера APT и системные службы systemd, обеспечивая маршрутизацию сетевого трафика через прокси-сервер для различных приложений и системных компонентов.

Настройка через переменные окружения

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

Общие переменные окружения

Стандартные переменные для настройки прокси включают:

  • http_proxy: Для HTTP-трафика.
  • https_proxy: Для HTTPS-трафика.
  • ftp_proxy: Для FTP-трафика.
  • all_proxy: Универсальный прокси для всех протоколов, если не указаны более специфичные.
  • no_proxy: Список хостов или доменов, для которых прокси не используется.

Рекомендуется устанавливать как строчные (http_proxy), так и прописные (HTTP_PROXY) версии переменных, поскольку некоторые приложения могут быть чувствительны к регистру.

Формат прокси-строки

Прокси-строка имеет следующий формат:
[протокол://][пользователь:пароль@]хост:порт/

Примеры:
* http://proxy.example.com:8080/
* https://user:password@secureproxy.example.com:3128/
* socks5://socks.example.com:1080/

Список no_proxy представляет собой разделенный запятыми список доменных имен, IP-адресов или CIDR-нотаций, для которых прямое соединение должно использоваться вместо прокси.
Пример: no_proxy="localhost,127.0.0.1,::1,*.local,10.0.0.0/8,192.168.1.0/24"

Методы установки переменных окружения

Временно (для текущей сессии):
Переменные устанавливаются только для текущего терминала и его дочерних процессов.

export HTTP_PROXY="http://proxy.example.com:8080/"
export HTTPS_PROXY="http://proxy.example.com:8080/"
export FTP_PROXY="http://proxy.example.com:8080/"
export NO_PROXY="localhost,127.0.0.1"

# Для проверки
echo $HTTP_PROXY

Постоянно (для конкретного пользователя):
Переменные устанавливаются при каждом входе пользователя в систему. Файлы для настройки: ~/.bashrc, ~/.profile или ~/.zshrc (в зависимости от используемой оболочки).

Добавьте следующие строки в конец выбранного файла:

# ~/.bashrc или ~/.profile
export HTTP_PROXY="http://proxy.example.com:8080/"
export HTTPS_PROXY="http://proxy.example.com:8080/"
export FTP_PROXY="http://proxy.example.com:8080/"
export NO_PROXY="localhost,127.0.0.1"

# Также рекомендуется указывать прописные версии
export http_proxy="http://proxy.example.com:8080/"
export https_proxy="http://proxy.example.com:8080/"
export ftp_proxy="http://proxy.example.com:8080/"
export no_proxy="localhost,127.0.0.1"

После сохранения файла изменения вступят в силу при следующем входе в систему или после выполнения команды source ~/.bashrc (или соответствующего файла).

Постоянно (системно):
Переменные устанавливаются для всех пользователей и всех системных служб, которые наследуют окружение от /etc/environment или скриптов в /etc/profile.d/.

  1. /etc/environment: Простой способ для глобальной установки. Переменные определяются построчно без ключевого слова export.

    ```ini

    /etc/environment

    HTTP_PROXY="http://proxy.example.com:8080/"
    HTTPS_PROXY="http://proxy.example.com:8080/"
    FTP_PROXY="http://proxy.example.com:8080/"
    NO_PROXY="localhost,127.0.0.1"
    http_proxy="http://proxy.example.com:8080/"
    https_proxy="http://proxy.example.com:8080/"
    ftp_proxy="http://proxy.example.com:8080/"
    no_proxy="localhost,127.0.0.1"
    ```

    Для применения изменений требуется перезагрузка системы или выход/вход для пользователей.

  2. /etc/profile.d/proxy.sh: Создайте новый файл, например, /etc/profile.d/proxy.sh, и добавьте в него команды export. Этот метод более гибок, так как позволяет использовать логику.

    ```bash

    /etc/profile.d/proxy.sh

    export HTTP_PROXY="http://proxy.example.com:8080/"
    export HTTPS_PROXY="http://proxy.example.com:8080/"
    export FTP_PROXY="http://proxy.example.com:8080/"
    export NO_PROXY="localhost,127.0.0.1"
    export http_proxy="http://proxy.example.com:8080/"
    export https_proxy="http://proxy.example.com:8080/"
    export ftp_proxy="http://proxy.example.com:8080/"
    export no_proxy="localhost,127.0.0.1"
    ```

    Сделайте файл исполняемым: sudo chmod +x /etc/profile.d/proxy.sh. Переменные будут установлены для всех пользователей при входе в систему.

Настройка прокси для APT

Пакетный менеджер APT (Advanced Package Tool) не использует переменные окружения напрямую, особенно при выполнении с sudo. Для его настройки требуется отдельный конфигурационный файл.

Конфигурация APT

Создайте или отредактируйте файл /etc/apt/apt.conf.d/00proxy (или другой файл с расширением .conf в этой директории). Использование apt.conf.d позволяет модульно управлять конфигурацией.

sudo nano /etc/apt/apt.conf.d/00proxy

Добавьте следующие строки, заменяя данные на актуальные:

// /etc/apt/apt.conf.d/00proxy
Acquire::http::Proxy "http://user:password@proxy.example.com:8080/";
Acquire::https::Proxy "http://user:password@proxy.example.com:8080/";
Acquire::ftp::Proxy "ftp://user:password@proxy.example.com:8080/";
// Если требуется исключить некоторые хосты
Acquire::http::No-Proxy "localhost,127.0.0.1,::1";
  • Acquire::http::Proxy - для HTTP-протокола.
  • Acquire::https::Proxy - для HTTPS-протокола.
  • Acquire::ftp::Proxy - для FTP-протокола.
  • Acquire::http::No-Proxy - для исключений.

Важно: Для HTTPS-трафика APT использует HTTP-прокси, поэтому в Acquire::https::Proxy указывается http:// или https:// в зависимости от поддержки прокси. Большинство прокси-серверов настроены на туннелирование HTTPS через HTTP.

Проверка настройки APT

После сохранения файла конфигурации проверьте работу прокси, обновив список пакетов:

sudo apt update

Если прокси настроен корректно, apt должен успешно загрузить информацию о пакетах.

Настройка прокси для Systemd

systemd управляет системными службами, и для них требуется отдельная конфигурация прокси, поскольку они не наследуют переменные окружения пользователя.

Системная настройка для всех служб Systemd

Для установки прокси-переменных для всех служб systemd необходимо отредактировать конфигурацию менеджера systemd.

  1. Создайте директорию для настроек systemd (если ее нет) и файл конфигурации:

    bash sudo mkdir -p /etc/systemd/system.conf.d/ sudo nano /etc/systemd/system.conf.d/proxy.conf

  2. Добавьте в файл следующие строки, указывая ваши прокси-серверы:

    ```ini

    /etc/systemd/system.conf.d/proxy.conf

    [Manager]
    DefaultEnvironment="HTTP_PROXY=http://proxy.example.com:8080/" "HTTPS_PROXY=http://proxy.example.com:8080/" "NO_PROXY=localhost,127.0.0.1"
    ```

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

  3. Перезагрузите systemd daemon для применения изменений:

    bash sudo systemctl daemon-reload

  4. Чтобы изменения вступили в силу для уже запущенных служб, их необходимо перезапустить:

    ```bash
    sudo systemctl restart <имя_службы>

    Например: sudo systemctl restart docker

    ```

Настройка прокси для конкретной службы Systemd

Если прокси нужен только для одной или нескольких служб, можно настроить его непосредственно в файле юнита службы.

  1. Отредактируйте файл юнита службы. Используйте systemctl edit, чтобы создать оверрайд файл, который не будет перезаписан при обновлении пакетов.

    ```bash
    sudo systemctl edit --full <имя_службы>

    Например: sudo systemctl edit --full docker.service

    ```

    Использование --full позволяет редактировать полный файл юнита, но более безопасным является создание отдельного файла оверрайда, который будет содержать только необходимые изменения. Для этого используйте sudo systemctl edit <имя_службы> без --full.

  2. Добавьте или измените секцию [Service] с переменными окружения:

    ```ini

    /etc/systemd/system/docker.service.d/proxy.conf (пример для Docker)

    [Service]
    Environment="HTTP_PROXY=http://proxy.example.com:8080/"
    Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
    Environment="NO_PROXY=localhost,127.0.0.1"
    ```

    Каждая переменная должна быть указана в отдельной строке Environment=.

  3. Перезагрузите systemd daemon и перезапустите службу:

    ```bash
    sudo systemctl daemon-reload
    sudo systemctl restart <имя_службы>

    Например: sudo systemctl restart docker.service

    ```

Проверка прокси для службы Systemd

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

sudo systemctl show <имя_службы> --property Environment
# Например: sudo systemctl show docker.service --property Environment

Сравнение методов настройки прокси

Метод Область действия Персистентность Примечания
Переменные окружения Пользовательские приложения, CLI-инструменты Временно/пользователь/системно Самый общий метод. Не влияет на sudo и systemd напрямую.
APT Пакетный менеджер APT Системно Отдельная конфигурация в /etc/apt/apt.conf.d/.
Systemd Системные службы (systemd) Системно Две опции: глобально для всех служб или для конкретной службы.

Общие рекомендации и тестирование

  • Аутентификация: Если прокси требует аутентификации, включите имя пользователя и пароль в URL прокси.
  • SOCKS против HTTP: Убедитесь, что используемый прокси-сервер поддерживает выбранный протокол (HTTP, HTTPS, SOCKS). Некоторые приложения могут требовать socks5:// для SOCKS-прокси.
  • Тестирование: Для проверки работы прокси из командной строки используйте curl или wget:

    ```bash

    Использование переменной окружения

    curl -v https://google.com

    Явное указание прокси для curl

    curl -x "http://proxy.example.com:8080" https://google.com

    Явное указание прокси для wget

    wget --proxy-user="user" --proxy-password="password" -e use_proxy=yes -e http_proxy="http://proxy.example.com:8080" https://google.com
    ```

Обновлено: 03.03.2026
Назад к категории

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира