Автор Тема: Управление прокси-сервером через терминал  (Прочитано 1541 раз)

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
Как я понимаю, параметры прокси из файла /etc/sysconfig/network распространяются на всю систему (от apt-get до браузера). Туда же пишет свои данные графический модуль прокси-сервера из состава Альтератора. Обо всём этом сказано здесь: https://www.altlinux.org/Прокси-сервер.

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

Можно как-то так же на лету управлять прокси-сервером из терминала? Хотя бы просто включать и выключать его. Но только чтобы аналогично для всей системы сразу.

Оффлайн Александр Ерещенко

  • Участник
  • *
  • Сообщений: 1 250
Как я понимаю, параметры прокси из файла /etc/sysconfig/network распространяются на всю систему (от apt-get до браузера). Туда же пишет свои данные графический модуль прокси-сервера из состава Альтератора. Обо всём этом сказано здесь: https://www.altlinux.org/Прокси-сервер.

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

Можно как-то так же на лету управлять прокси-сервером из терминала? Хотя бы просто включать и выключать его. Но только чтобы аналогично для всей системы сразу.
Запустите скрипт /etc/profile.d/proxy.sh
Он как раз и запускается при инициализации профиля и весьма простой по содержанию:
# /etc/profile.d/proxy.sh - export proxy settings

if [ -s /etc/sysconfig/network ]; then
    eval `grep -E '^(HTTP_PROXY|HTTPS_PROXY|FTP_PROXY|NO_PROXY)=' /etc/sysconfig/network`
fi

if [ -n "$HTTP_PROXY" ]; then
    http_proxy="$HTTP_PROXY"
    export http_proxy HTTP_PROXY
fi

if [ -n "$HTTPS_PROXY" ]; then
    https_proxy="$HTTPS_PROXY"
    export https_proxy HTTPS_PROXY
fi

if [ -n "$FTP_PROXY" ]; then
    ftp_proxy="$FTP_PROXY"
    export ftp_proxy FTP_PROXY
fi

if [ -n "$NO_PROXY" ]; then
    no_proxy="$NO_PROXY"
    export no_proxy NO_PROXY
fi

ЗЫ. Тема чуть некорректна по формулировке. Я подумал вначале, что речь про управление прокси-сервером squid

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 201
    • Домашняя страница
Как я понимаю, параметры прокси из файла /etc/sysconfig/network распространяются на всю систему (от apt-get до браузера). Туда же пишет свои данные графический модуль прокси-сервера из состава Альтератора. Обо всём этом сказано здесь: https://www.altlinux.org/Прокси-сервер.

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

Можно как-то так же на лету управлять прокси-сервером из терминала? Хотя бы просто включать и выключать его. Но только чтобы аналогично для всей системы сразу.
Нельзя.
Андрей Черепанов (cas@)

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 257
  • ITS
Вот перепроверь информацию и некоторые идеи от "структурированного праха"  DeepSeek )
вместо sudo -> su -l,
Да, в Alt Linux (как и в других Linux-системах) можно управлять прокси на лету без перезагрузки,
даже если настройки хранятся в /etc/sysconfig/network.
Вот несколько способов:
1. Через sysconfig и экспорт переменных

Файл /etc/sysconfig/network используется для глобальных настроек сети,
включая прокси (HTTP_PROXY, HTTPS_PROXY, NO_PROXY и т. д.).
Чтобы изменения применились без перезагрузки, нужно:

    Обновить переменные окружения для текущей сессии.
    Перезапустить зависящие от них сервисы (например, демон apt, браузеры и т. д.).

Пример включения прокси:
bash

# Записываем настройки в файл (если нужно)
sudo sed -i '/^HTTP_PROXY=/d;/^HTTPS_PROXY=/d;/^NO_PROXY=/d' /etc/sysconfig/network
echo 'HTTP_PROXY="http://proxy.example.com:8080"' | sudo tee -a /etc/sysconfig/network
echo 'HTTPS_PROXY="http://proxy.example.com:8080"' | sudo tee -a /etc/sysconfig/network
echo 'NO_PROXY="localhost,127.0.0.1"' | sudo tee -a /etc/sysconfig/network

# Применяем настройки без перезагрузки
source /etc/sysconfig/network
export HTTP_PROXY HTTPS_PROXY NO_PROXY

# Для apt-get (если используется)
sudo systemctl restart apt-cacher-ng  # или другой прокси-сервис

Отключение прокси:
bash

# Удаляем настройки из файла
sudo sed -i '/^HTTP_PROXY=/d;/^HTTPS_PROXY=/d;/^NO_PROXY=/d' /etc/sysconfig/network

# Убираем переменные из текущей сессии
unset HTTP_PROXY HTTPS_PROXY NO_PROXY

# Перезапускаем сервисы
sudo systemctl restart apt-cacher-ng

2. Через gsettings (если используется GNOME)

Графический инструмент Альтератора, скорее всего, меняет настройки через D-Bus или GSettings. В терминале это можно сделать так:
bash

# Включить прокси (пример для GNOME)
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host 'proxy.example.com'
gsettings set org.gnome.system.proxy.http port 8080

# Выключить прокси
gsettings set org.gnome.system.proxy mode 'none'

Это повлияет на все приложения, использующие GSettings (браузеры, GUI-приложения).
3. Через update-alternatives или скрипты

Если Альтератор использует какие-то свои скрипты, можно найти их в системе
(например, в /usr/lib/alterator/) и вызывать их из терминала.
Например:
bash

sudo /usr/lib/alterator/alterator-proxy-config --enable --host=proxy.example.com --port=8080

4. Через environment.d (современные системы)

Если система использует systemd-environmentd, можно поместить настройки в /etc/environment.d/10-proxy.conf:
ini

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

После этого выполнить:
bash

sudo systemctl daemon-reload
sudo systemctl restart user@$(id -u).service  # для пользовательских сервисов

Важно:

    Некоторые приложения (например, apt-get) могут кэшировать настройки прокси — может потребоваться их перезапуск.

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

Если нужно полное системное применение (как в Альтераторе), лучше всего изучить скрипты,
которые вызывает графический инструмент (например, через strace или ps aux при его работе).

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
Нельзя.
Но почему? Или это ко всем Линуксам относится?

В общем...
Всё проверялось при работе с браузером.
Ни один из способов не работает.
export и unset добавляют и удаляют переменные, но фактически это ни на что не влияет.
Перезапуск браузера бесполезен.

И самое главное: оказалось, что и через GUI Альтератора настройки прокси на лету применяются только визуально, а по факту они всё те же, что и были в /etc/sysconfig/network на момент загрузки системы.

Да что это такое вообще??? Вот в Винде...

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 201
    • Домашняя страница
Используйте Windows.
Андрей Черепанов (cas@)

Оффлайн fraks

  • Участник
  • *
  • Сообщений: 26
На Альт П10 с управлением проксями было получше. Чел который ими пользовался, попытался переехать на П11 и столкнулся с проблемой что на лету теперь никак не переключиться (ну или он не нашел).

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

Что-то на эту тему:

Т.е. меняем параметр в конфиге и рестартуем squid.
Естессно, делаем для этого скриптик[и].
« Последнее редактирование: 11.07.2025 07:11:13 от fraks »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 201
    • Домашняя страница
Прокси-сервера – анахронизм 15-летней давности.
Андрей Черепанов (cas@)

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 257
  • ITS
Прокси-сервера – анахронизм 15-летней давности.

Варианты, фильтрации трафика? В том же Альте из opensource?

Оффлайн fraks

  • Участник
  • *
  • Сообщений: 26
Прокси-сервера – анахронизм 15-летней давности.

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

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 257
  • ITS
Хотя бы просто включать и выключать его.
для SQUID (соответственным образом настроив)
# Для работы в прозрачном режиме, без указания порта в браузере, необходимо настроить iptables
touch /etc/rc.d/rc-firewall
echo '#!/bin/bash' > /etc/rc.d/rc-firewall
chmod +x /etc/rc.d/rc-firewall
nano -b /etc/rc.d/rc-firewall

# Вставить в файл rc-firewall скрипт и можно его запускать при старте системы:

##################################

# Локальная подсеть
LAN_RANGE="192.168.3.0/24"
# Сетевая карта шлюз смотрящая в локальную сеть
LAN="ether1"
# Правила для таблицы nat, для перенаправления портов 80 > 3128, 443 > 3129
iptables -t nat -A PREROUTING -i $LAN -s $LAN_RANGE -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i $LAN -s $LAN_RANGE -p tcp -m multiport --dport 443 -j REDIRECT --to-port 3129

##################################

Создание сервисного файла:
Сначала создайте файл с именем rc-firewall.service в директории /etc/systemd/system/:

# nano /etc/systemd/system/rc-firewall.service

Заполнение сервисного файла:
Вставьте в него следующий код:

    [Unit]
    Description=Custom Firewall Rules
    After=network.target

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/bash -c "iptables -t nat -A PREROUTING -i ether0 -s 192.168.3.0/24 -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128; iptables -t nat -A PREROUTING -i ether0 -s 192.168.3.0/24 -p tcp -m multiport --dport 443 -j REDIRECT --to-port 3129"
    RemainAfterExit=yes

    [Install]
    WantedBy=multi-user.target

[Unit]:
Description: Краткое описание сервиса.
After=network.target: Обеспечивает выполнение скрипта после старта сетевых служб.
[Service]:
Type=oneshot: Скрипт выполняется один раз, и затем сервис завершает работу.
ExecStart=… : Указывает команду для запуска скрипта.
RemainAfterExit=yes: Указывает, что сервис должен считаться активным даже после завершения выполнения команды.
[Install]:
WantedBy=multi-user.target: Определяет, что сервис должен запускаться при старте системы в многопользовательском режиме.

Активирование и управление сервисом:
После того как вы создали и сохранили файл, выполните следующие команды:
    # systemctl daemon-reload   # Перезагрузить конфигурацию systemd
    # systemctl enable rc-firewall.service   # Включить сервис при старте системы
    # systemctl start rc-firewall.service    # Запустить сервис вручную
    # systemctl status rc-firewall.service   # Проверить статус сервиса

# Смотрим изменения
iptables -t nat -n -v -L --line-numbers
iptables -n -v -L --line-numbers
# Удаление правил
iptables -t nat -D PREROUTING 1
iptables -t nat -F PREROUTING - очистить все правила в  PREROUTING
Т.е. запускаем сервис или скрипт (прокси постоянно включен) и весь трафик пошёл через прокси, если в терминале выполнить "iptables -t nat -F PREROUTING", то трафик пошел напрямую. И не надо ни какие ПО настраивать, все что использует http, https, будет заворачиваться на прокси с помощью iptables.
Кстати, а в браузере включено, использование системного прокси? Приложениям плевать, на /etc/sysconfig/network, там лишь подсказка для вопрошающих через что ходить.

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
Спасибо конечно, интересно было ознакомиться, но городить такое - это уже перебор... Прокси через прокси :-) Вопрос, кстати, был про вкл/выкл хождения через внешний прокси, доступа к управлению которым, естественно, нет, есть только его адрес и порт.

Кстати, а в браузере включено, использование системного прокси?
Да, конечно, включено по умолчанию.

Оффлайн Александр Ерещенко

  • Участник
  • *
  • Сообщений: 1 250
Спасибо конечно, интересно было ознакомиться, но городить такое - это уже перебор... Прокси через прокси :-) Вопрос, кстати, был про вкл/выкл хождения через внешний прокси, доступа к управлению которым, естественно, нет, есть только его адрес и порт.

Кстати, а в браузере включено, использование системного прокси?
Да, конечно, включено по умолчанию.
Если не секрет, что за необходимость так часто переключать системный прокси?
Может, проще сделать отдельные скрипты запуска конкретных программ с нужными настройками (определение системных переменных, либо ключей запуска самих программ) ?

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
Александр Ерещенко
Для переключения между разными сетями. И если организовать через терминал изменение и тут же применение настроек сетевой карты не проблема, то с прокси...

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 257
  • ITS
Вопрос, кстати, был про вкл/выкл хождения через внешний прокси
Сеть чем управляется, NetworkManager, Systemd, Etcnet?