Налаштування проксі на Linux передбачає встановлення змінних середовища для сеансів користувачів, конфігурацію APT для керування пакетами та визначення налаштувань проксі для служб Systemd, щоб забезпечити доступ усіх системних компонентів до зовнішніх мереж через проксі.
Багато середовищ Linux працюють за корпоративними брандмауерами або вимагають маршрутизації трафіку через проксі-сервер для безпеки, ведення журналів або контролю доступу. Правильна конфігурація проксі є критично важливою для функціональності системи, включаючи оновлення програмного забезпечення, доступ до Інтернету для користувацьких програм та зв'язок фонових служб. Ця стаття детально описує методи налаштування параметрів проксі для поширених компонентів Linux.
Змінні середовища
Оболонкові середовища та програми, що їх успадковують, часто покладаються на стандартні змінні середовища для конфігурації проксі. Ці змінні визначають адресу проксі-сервера для HTTP, HTTPS та FTP трафіку, а також винятки для прямих з'єднань.
Стандартні змінні середовища проксі
HTTP_PROXY: Проксі для HTTP-з'єднань.HTTPS_PROXY: Проксі для HTTPS-з'єднань.FTP_PROXY: Проксі для FTP-з'єднань.NO_PROXY: Список імен хостів, IP-адрес або діапазонів CIDR, розділених комами, які повинні обходити проксі. Приклад:localhost,127.0.0.1,*.local,192.168.0.0/24.
Ці змінні чутливі до регістру в деяких контекстах (наприклад, wget часто використовує нижній регістр http_proxy, тоді як інші віддають перевагу верхньому регістру HTTP_PROXY). Загальноприйнятою практикою є встановлення обох версій (верхнього та нижнього регістру) для ширшої сумісності.
Тимчасова конфігурація сеансу оболонки
Щоб встановити змінні проксі для поточного сеансу оболонки та будь-яких процесів, запущених з нього:
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,.example.com"
# Для сумісності також встановіть версії в нижньому регістрі
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,.example.com"
Замініть proxy.example.com:8080 на адресу та порт вашого проксі-сервера. Якщо потрібна автентифікація, включіть облікові дані: http://user:password@proxy.example.com:8080.
Постійна конфігурація для конкретного користувача
Щоб налаштування проксі зберігалися між сеансами входу користувача, додайте команди export до файлу профілю оболонки користувача.
- Bash:
~/.bashrcабо~/.profile - Zsh:
~/.zshrc
Приклад для ~/.bashrc:
# Налаштування проксі
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,.example.com"
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,.example.com"
Після модифікації завантажте файл або вийдіть і знову увійдіть: source ~/.bashrc.
Постійна загальносистемна конфігурація
Для загальносистемних налаштувань проксі, які впливають на всіх користувачів та деякі системні процеси (хоча не на всі служби Systemd безпосередньо), використовуйте /etc/environment або файли в /etc/profile.d/.
/etc/environment
Цей файл читається PAM (Pluggable Authentication Modules) під час входу для всіх служб та програм, запущених оболонкою входу. Він підтримує лише синтаксис KEY="value", без export.
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,.example.com"
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,.example.com"
Зміни в /etc/environment зазвичай вимагають перезавантаження або повторного входу, щоб нові сеанси їх підхопили.
/etc/profile.d/
Скрипти, розміщені в /etc/profile.d/, завантажуються оболонками входу. Це підходить для встановлення змінних середовища, які вимагають логіки або операторів export. Створіть новий файл, наприклад, /etc/profile.d/proxy.sh:
#!/bin/bash
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,.example.com"
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,.example.com"
Переконайтеся, що скрипт виконуваний: sudo chmod +x /etc/profile.d/proxy.sh.
sudo та змінні проксі
При використанні sudo змінні середовища часто скидаються з міркувань безпеки. Щоб зберегти налаштування проксі для команд, що виконуються за допомогою sudo:
- Використовуйте
sudo -E: Це зберігає поточні змінні середовища.
bash sudo -E apt update - Налаштуйте
sudoers: Відредагуйте/etc/sudoersза допомогоюsudo visudoта додайте/змінітьenv_keep.
Defaults env_keep += "HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY http_proxy https_proxy ftp_proxy no_proxy"
Цей підхід, як правило, безпечніший, ніжsudo -E, для постійних системних конфігурацій.
APT (Advanced Package Tool)
APT, менеджер пакетів, що використовується дистрибутивами на основі Debian (наприклад, Ubuntu), вимагає власної конфігурації проксі, окремої від змінних середовища оболонки.
Файл конфігурації проксі APT
Налаштування проксі APT визначаються у файлах конфігурації в /etc/apt/apt.conf.d/. Створіть новий файл, наприклад, /etc/apt/apt.conf.d/01proxy, з наступним вмістом:
Acquire::http::Proxy "http://proxy.example.com:8080/";
Acquire::https::Proxy "http://proxy.example.com:8080/";
# Acquire::ftp::Proxy "ftp://proxy.example.com:8080/"; # Розкоментуйте, якщо потрібно
Замініть proxy.example.com:8080 на адресу та порт вашого проксі-сервера.
Якщо проксі вимагає автентифікації:
Acquire::http::Proxy "http://user:password@proxy.example.com:8080/";
Acquire::https::Proxy "http://user:password@proxy.example.com:8080/";
Для хостів, які повинні обходити проксі APT, використовуйте Acquire::NoProxy:
Acquire::NoProxy "localhost,127.0.0.1,archive.ubuntu.com";
Це використовується рідше, ніж глобальний NO_PROXY, але може бути специфічним для APT.
Після створення або модифікації файлу APT автоматично використовуватиме ці налаштування для подальших операцій (наприклад, apt update, apt install). Перезапуск служби не потрібен.
Служби Systemd
Systemd керує системними службами та програмами. Служби, запущені Systemd, не успадковують автоматично змінні середовища проксі, встановлені в профілях оболонки або /etc/environment. Кожен юніт Systemd, який потребує доступу до проксі, повинен бути налаштований явно.
Проксі для конкретної служби Systemd
Щоб налаштувати параметри проксі для окремої служби Systemd, створіть файл перевизначення. Це рекомендований метод, щоб уникнути прямої модифікації оригінальних файлів юнітів, які можуть бути перезаписані під час оновлення пакетів.
-
Створіть каталог перевизначення:
bash sudo systemctl edit <service_name>
Ця команда відкриває редактор для/etc/systemd/system/<service_name>.service.d/override.conf. -
Додайте змінні середовища проксі:
Всередині редактора додайте розділ[Service]та директивиEnvironment:ini [Service] Environment="HTTP_PROXY=http://proxy.example.com:8080" \ "HTTPS_PROXY=http://proxy.example.com:8080" \ "NO_PROXY=localhost,127.0.0.1" Environment="http_proxy=http://proxy.example.com:8080" \ "https_proxy=http://proxy.example.com:8080" \ "no_proxy=localhost,127.0.0.1"
Кожна директиваEnvironmentможе містити кілька змінних, розділених пробілами в лапках, або ви можете використовувати кілька рядківEnvironment. Символ\призначений для продовження рядка у файлі перевизначення. -
Збережіть та вийдіть: Збережіть файл. Systemd автоматично перезавантажить демон і запропонує перезапустити службу. Підтвердіть перезапуск. Якщо запит не з'явився, вручну перезавантажте та перезапустіть:
bash sudo systemctl daemon-reload sudo systemctl restart <service_name>
Глобальна конфігурація проксі Systemd
Для служб, які не мають конкретних налаштувань проксі, або для загальносистемного значення за замовчуванням, налаштуйте параметри проксі в глобальному середовищі Systemd. Це впливає на всі служби, які явно не перевизначають ці змінні.
-
Створіть каталог для додаткових конфігурацій:
bash sudo mkdir -p /etc/systemd/system.conf.d/ -
Створіть файл конфігурації проксі:
bash sudo nano /etc/systemd/system.conf.d/proxy.conf -
Додайте змінні середовища проксі:
ini [Manager] DefaultEnvironment="HTTP_PROXY=http://proxy.example.com:8080" DefaultEnvironment="HTTPS_PROXY=http://proxy.example.com:8080" DefaultEnvironment="NO_PROXY=localhost,127.0.0.1" DefaultEnvironment="http_proxy=http://proxy.example.com:8080" DefaultEnvironment="https_proxy=http://proxy.example.com:8080" DefaultEnvironment="no_proxy=localhost,127.0.0.1" -
Перезавантажте демон Systemd та перезапустіть служби:
bash sudo systemctl daemon-reload sudo systemctl restart --all # Використовуйте з обережністю, перезапускає всі користувацькі та системні служби
Повне перезавантаження системи часто є найбезпечнішим способом забезпечити, щоб усі служби підхопили ці глобальні зміни.
Перевірка
Після налаштування параметрів проксі перевірте їх ефективність:
- Змінні середовища:
bash env | grep -i proxy - APT:
bash apt config dump | grep -i proxy
Спробуйте оновити:sudo apt update. - Загальний доступ до мережі:
bash curl -v http://ifconfig.me
Вивід повинен показати IP-адресу проксі-сервера, якщо трафік маршрутизується через нього, або вашу зовнішню IP-адресу, якщоNO_PROXYефективний. - Служба Systemd: Перевірте статус служби та журнали на наявність проблем з підключенням.
bash sudo systemctl status <service_name> sudo journalctl -u <service_name>
Ви також можете перевірити середовище запущеного процесу служби. Знайдіть PID служби, потім:
bash sudo cat /proc/<PID>/environ | tr '\0' '\n' | grep -i proxy
Порівняння методів конфігурації проксі
| Метод | Область дії | Постійність | Компоненти, на які впливає | Приклад конфігурації |
|---|---|---|---|---|
| Середовище оболонки (тимчасово) | Поточний сеанс оболонки | Ні | Команди, запущені з поточної оболонки | export HTTP_PROXY="..." |
Профіль користувача (~/.bashrc) |
Сеанси входу користувача | Так | Користувацькі програми, команди оболонки | Додайте рядки export до ~/.bashrc |
Загальносистемний (/etc/environment) |
Усі сеанси входу, деякі системні процеси | Так | Оболонки входу, деякі програми (не Systemd) | HTTP_PROXY="..." у /etc/environment |
Загальносистемний (/etc/profile.d/) |
Усі оболонки входу | Так | Оболонки входу, програми, запущені з них | Скрипт з рядками export у /etc/profile.d/ |
APT (/etc/apt/apt.conf.d/) |
Лише менеджер пакетів APT | Так | apt, apt-get, aptitude |
Acquire::http::Proxy "..."; у 01proxy |
Перевизначення служби Systemd (override.conf) |
Конкретний юніт Systemd | Так | Одна служба Systemd | Environment="..." у /etc/systemd/system/<service>.service.d/override.conf |
Глобальний Systemd (system.conf.d/) |
Усі служби Systemd (за замовчуванням) | Так | Усі служби Systemd, якщо не перевизначено | DefaultEnvironment="..." у /etc/systemd/system.conf.d/proxy.conf |