Proxy - Системный HTTP/HTTPS прокси

Системный Proxy в VyOS

Обзор

Системный прокси-сервер в VyOS позволяет настроить централизованную точку доступа для всех исходящих HTTP, HTTPS и FTP соединений, инициируемых системой. Это критически важно в корпоративных средах, где прямой доступ к интернету ограничен политиками безопасности.

Назначение

Конфигурация прокси-сервера в VyOS используется для:

  • Обновления системы: Загрузка новых образов VyOS через команду add system image
  • Установка пакетов: Доступ к репозиториям пакетов через прокси
  • Загрузка файлов: Системные операции, требующие доступа к внешним ресурсам
  • Централизованное управление трафиком: Единая точка контроля исходящих соединений
  • Соблюдение корпоративных политик: Обязательное использование корпоративного прокси

Области применения

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

  1. Корпоративные сети: Обязательное использование корпоративного прокси-сервера
  2. Изолированные сегменты: DMZ зоны с ограниченным доступом к интернету
  3. Облачные инфраструктуры: Yandex Cloud, VK Cloud с централизованным управлением трафиком
  4. Аудит и мониторинг: Контроль всех исходящих соединений
  5. Кэширование: Оптимизация загрузки часто используемых ресурсов

Принцип работы

При настройке системного прокси VyOS:

  1. Устанавливает переменные окружения: http_proxy, https_proxy, ftp_proxy
  2. Применяет настройки ко всем системным процессам
  3. Использует прокси для всех HTTP/HTTPS/FTP соединений
  4. Поддерживает аутентификацию по RFC 7617 (Basic Authentication)
  5. Позволяет исключать определенные хосты из проксирования

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

Базовая настройка прокси

Установка URL прокси-сервера

set system proxy url <proxy-url>

Параметры:

  • <proxy-url>: URL прокси-сервера (с протоколом http:// или https://)

Пример:

configure
set system proxy url http://proxy.example.com
commit
save

Установка нестандартного порта

По умолчанию используется порт 80 для HTTP прокси. Для изменения порта:

set system proxy port <port-number>

Параметры:

  • <port-number>: Номер порта (1-65535)

Пример:

configure
set system proxy url http://proxy.example.com
set system proxy port 8080
commit
save

Аутентификация на прокси-сервере

VyOS поддерживает базовую HTTP аутентификацию согласно RFC 7617.

Настройка имени пользователя

set system proxy username <username>

Параметры:

  • <username>: Имя пользователя для аутентификации

Настройка пароля

set system proxy password <password>

Параметры:

  • <password>: Пароль для аутентификации

Пример полной конфигурации с аутентификацией:

configure
set system proxy url http://proxy.corp.local
set system proxy port 3128
set system proxy username admin
set system proxy password SecurePassword123
commit
save

Исключения из проксирования (No-Proxy)

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

Примечание: На момент VyOS 1.4/1.5, явная команда no-proxy отсутствует в стандартной конфигурации, но можно использовать переменные окружения напрямую через скрипты или настроить исключения на уровне прокси-сервера.

Примеры конфигурации

Пример 1: Простой прокси без аутентификации

Сценарий: Организация использует прокси-сервер proxy.company.ru на стандартном порту 8080.

configure

# Настройка прокси-сервера
set system proxy url http://proxy.company.ru
set system proxy port 8080

# Применение конфигурации
commit
save
exit

Результат:

vyos@router:~$ env | grep -i proxy
http_proxy=http://proxy.company.ru:8080
https_proxy=http://proxy.company.ru:8080
ftp_proxy=http://proxy.company.ru:8080

Пример 2: Yandex Cloud - Корпоративный прокси для обновлений

Сценарий: VyOS в Yandex Cloud, доступ к интернету только через корпоративный прокси-сервер с аутентификацией.

configure

# Основные параметры прокси
set system proxy url http://proxy.yandex-cloud.internal
set system proxy port 3128

# Аутентификация
set system proxy username yc-vyos-router
set system proxy password 'Yc!Pr0xy@2024'

# Применение конфигурации
commit
save
exit

Проверка подключения:

# Проверка переменных окружения
vyos@yc-router:~$ env | grep -i proxy

# Тест загрузки через прокси
vyos@yc-router:~$ curl -I https://cloud.yandex.ru

Обновление образа VyOS через прокси:

add system image https://downloads.vyos.io/rolling/current/vyos-1.5-rolling-latest.iso

Пример 3: VK Cloud - Прокси с аутентификацией

Сценарий: VyOS в VK Cloud (Mail.ru Cloud Solutions), сегментированная сеть с обязательным прокси.

configure

# Настройка прокси VK Cloud
set system proxy url http://proxy.vkcloud.local
set system proxy port 8888

# Аутентификация пользователя
set system proxy username vk-network-admin
set system proxy password 'VKCloud$ecure2024'

# Применение и сохранение
commit
save
exit

Проверка конфигурации:

show system proxy

Ожидаемый вывод:

proxy {
    port 8888
    url http://proxy.vkcloud.local
    username vk-network-admin
    password ****************
}

Пример 4: Многоуровневая инфраструктура

Сценарий: DMZ сегмент с доступом через корпоративный прокси, специфичные настройки для различных протоколов.

configure

# Прокси-сервер DMZ
set system proxy url http://dmz-proxy.corp.local
set system proxy port 8080

# Учетная запись для DMZ роутера
set system proxy username dmz-vyos-01
set system proxy password 'DmZ!R0ut3r#2024'

commit
save
exit

Дополнительная настройка через переменные окружения (в скриптах):

Создание скрипта /config/scripts/proxy-exceptions.sh:

#!/bin/bash
# Дополнительные настройки прокси

export no_proxy="localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12,.local,.corp.local"
export NO_PROXY="$no_proxy"

Пример 5: HTTPS прокси с SSL

Сценарий: Использование HTTPS прокси-сервера с шифрованным соединением.

configure

# HTTPS прокси
set system proxy url https://secure-proxy.enterprise.com
set system proxy port 8443

# Аутентификация
set system proxy username enterprise-router
set system proxy password 'EnT3rpr!se#SSL'

commit
save
exit

Важно: При использовании самоподписанных сертификатов на прокси-сервере могут возникнуть проблемы с проверкой SSL. В таких случаях может потребоваться дополнительная настройка доверия к сертификату на уровне системы.

Проверка конфигурации

Просмотр текущих настроек прокси

show system proxy

Пример вывода:

proxy {
    port 8080
    url http://proxy.example.com
    username admin
    password ****************
}

Проверка переменных окружения

env | grep -i proxy

Ожидаемый вывод:

http_proxy=http://admin:SecurePassword123@proxy.example.com:8080
https_proxy=http://admin:SecurePassword123@proxy.example.com:8080
ftp_proxy=http://admin:SecurePassword123@proxy.example.com:8080

Тестирование подключения через прокси

Проверка HTTP соединения

curl -I http://example.com

Проверка HTTPS соединения

curl -I https://www.google.com

Детальная диагностика с curl

curl -v -x http://proxy.example.com:8080 https://downloads.vyos.io

Параметры:

  • -v: Подробный вывод
  • -x: Явное указание прокси-сервера

Проверка работы обновлений

# Попытка загрузки образа VyOS
add system image https://downloads.vyos.io/rolling/current/vyos-1.5-rolling-latest.iso

Если прокси настроен корректно, загрузка начнется через указанный прокси-сервер.

Операционные команды

Просмотр конфигурации в режиме конфигурирования

configure
show system proxy

Просмотр в формате JSON

show configuration json | jq '.system.proxy'

Пример вывода:

{
  "port": "8080",
  "url": "http://proxy.example.com",
  "username": "admin"
}

Экспорт конфигурации прокси

show configuration commands | grep "system proxy"

Вывод:

set system proxy port '8080'
set system proxy url 'http://proxy.example.com'
set system proxy username 'admin'

Переменные окружения

VyOS автоматически создает следующие переменные окружения при настройке прокси:

http_proxy

Используется для HTTP соединений.

Формат:

http_proxy=http://[username:password@]proxy-url:port

https_proxy

Используется для HTTPS соединений.

Формат:

https_proxy=http://[username:password@]proxy-url:port

Примечание: Даже для HTTPS соединений часто используется протокол http:// для самого прокси-соединения, если прокси не требует SSL.

ftp_proxy

Используется для FTP соединений.

Формат:

ftp_proxy=http://[username:password@]proxy-url:port

no_proxy

Список хостов и подсетей, которые не должны проксироваться.

Формат:

no_proxy=localhost,127.0.0.1,.local,10.0.0.0/8

Примечание: В стандартной конфигурации VyOS no_proxy нужно настраивать вручную через скрипты.

Устранение неполадок

Проблема 1: Прокси не применяется

Симптомы:

  • Команды обновления не работают
  • Переменные окружения не установлены

Решение:

# Проверьте статус конфигурации
show system proxy

# Убедитесь, что конфигурация закоммичена
configure
commit
save

# Перезапустите сессию
exit

Проблема 2: Ошибка аутентификации 407

Симптомы:

HTTP 407 Proxy Authentication Required

Решение:

configure

# Проверьте правильность учетных данных
show system proxy

# Обновите пароль
set system proxy password 'NewPassword'
commit
save

Проблема 3: Таймауты соединения

Симптомы:

  • Долгое ожидание при попытке соединения
  • Timeout errors

Диагностика:

# Проверьте доступность прокси-сервера
ping proxy.example.com

# Проверьте порт прокси
telnet proxy.example.com 8080

# Проверьте сетевую связность
traceroute proxy.example.com

Решение:

configure

# Убедитесь в правильности URL и порта
set system proxy url http://proxy.example.com
set system proxy port 8080

# Проверьте маршрутизацию до прокси
show ip route

commit
save

Проблема 4: SSL/TLS ошибки с HTTPS прокси

Симптомы:

SSL certificate problem: self signed certificate

Диагностика:

# Проверьте сертификат прокси
openssl s_client -connect proxy.example.com:8443

# Проверьте переменные окружения
env | grep -i proxy

Временное решение для тестирования:

# Отключение проверки SSL (только для тестирования!)
curl -k https://example.com

Постоянное решение:

Добавьте сертификат прокси в доверенные:

configure

# Установите сертификат CA
set pki ca proxy-ca certificate '<base64-encoded-cert>'

commit
save

Проблема 5: Некоторые сервисы не используют прокси

Симптомы:

  • Системные команды работают через прокси
  • Пользовательские скрипты игнорируют прокси

Решение:

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

#!/bin/vbash
source /etc/profile.d/vyatta-environment.sh

# Явное указание прокси
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"

# Ваш код

Проблема 6: Прокси блокирует внутренние ресурсы

Симптомы:

  • Не работает доступ к внутренним серверам
  • Внутренние DNS запросы идут через прокси

Решение:

Настройте исключения через no_proxy:

Создайте скрипт /config/scripts/post-config.d/proxy-no-proxy.sh:

#!/bin/bash

# Исключения из прокси
export no_proxy="localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12,.local,.internal"
export NO_PROXY="$no_proxy"

# Сохранить в профиль
cat > /etc/profile.d/no-proxy.sh << EOF
export no_proxy="$no_proxy"
export NO_PROXY="$no_proxy"
EOF

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

chmod +x /config/scripts/post-config.d/proxy-no-proxy.sh

Лучшие практики

1. Безопасность учетных данных

Не рекомендуется:

set system proxy password 'password123'

Рекомендуется:

  • Используйте сложные пароли
  • Регулярно меняйте учетные данные
  • Используйте отдельные учетные записи для каждого роутера
  • Ограничьте права прокси-аккаунтов
set system proxy username vyos-router-01
set system proxy password 'C0mpl3x!P@ssw0rd#2024'

2. Документирование конфигурации

Добавляйте комментарии к конфигурации:

configure
set system proxy url http://proxy.corp.local
set system proxy port 3128

# Сохраните информацию в описании системы
set system host-name vyos-with-proxy
set system domain-name corp.local

commit comment "Configured corporate proxy for system updates"
save

3. Мониторинг и логирование

Создайте скрипт мониторинга /config/scripts/check-proxy.sh:

#!/bin/bash

LOGFILE="/var/log/vyos/proxy-check.log"
PROXY_HOST="proxy.corp.local"
PROXY_PORT="8080"

# Функция логирования
log() {
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> $LOGFILE
}

# Проверка доступности прокси
if timeout 5 bash -c "cat < /dev/null > /dev/tcp/$PROXY_HOST/$PROXY_PORT" 2>/dev/null; then
    log "SUCCESS: Proxy $PROXY_HOST:$PROXY_PORT is reachable"
    exit 0
else
    log "ERROR: Proxy $PROXY_HOST:$PROXY_PORT is unreachable"
    exit 1
fi

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

chmod +x /config/scripts/check-proxy.sh

Настройте периодическую проверку через task scheduler:

configure
set system task-scheduler task check-proxy interval 5m
set system task-scheduler task check-proxy executable path /config/scripts/check-proxy.sh
commit
save

4. Резервный прокси-сервер

Для критичных систем подготовьте альтернативную конфигурацию:

Создайте скрипт /config/scripts/proxy-failover.sh:

#!/bin/vbash
source /opt/vyatta/etc/functions/script-template

PRIMARY_PROXY="proxy-primary.corp.local:8080"
SECONDARY_PROXY="proxy-backup.corp.local:8080"

# Проверка primary прокси
if timeout 3 curl -s -o /dev/null -x http://$PRIMARY_PROXY http://connectivity-check.vyos.io; then
    echo "Primary proxy is working"
    configure
    set system proxy url http://proxy-primary.corp.local
    set system proxy port 8080
    commit
    exit 0
else
    echo "Primary proxy failed, switching to backup"
    configure
    set system proxy url http://proxy-backup.corp.local
    set system proxy port 8080
    commit
    save
fi

5. Тестирование после изменений

После любых изменений конфигурации прокси:

# 1. Проверьте конфигурацию
show system proxy

# 2. Проверьте переменные окружения
env | grep -i proxy

# 3. Тестовое HTTP соединение
curl -I http://connectivity-check.vyos.io

# 4. Тестовое HTTPS соединение
curl -I https://www.google.com

# 5. Попробуйте загрузить небольшой файл
curl -o /tmp/test.txt http://ipv4.download.thinkbroadband.com/5MB.zip

6. Регулярное обслуживание

Создайте чек-лист регулярного обслуживания:

Еженедельно:

  • Проверка логов прокси /var/log/vyos/proxy-check.log
  • Тестирование доступности прокси-сервера

Ежемесячно:

  • Обновление паролей (при политике ротации)
  • Проверка версий VyOS и доступность обновлений

Ежеквартально:

  • Аудит конфигурации прокси
  • Тестирование процедуры failover
  • Обновление документации

7. Исключения для внутренних ресурсов

Всегда настраивайте исключения для:

# Локальные адреса
localhost, 127.0.0.1, ::1

# RFC 1918 приватные сети
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

# Link-local
169.254.0.0/16

# Внутренние домены
.local, .internal, .corp, .lan

# Cloud metadata сервисы
169.254.169.254 (AWS, Yandex Cloud, VK Cloud)

8. Интеграция с системами мониторинга

Экспортируйте метрики для Prometheus/Grafana:

Создайте /config/scripts/proxy-metrics.sh:

#!/bin/bash

METRICS_FILE="/var/lib/node_exporter/textfile_collector/proxy_status.prom"
PROXY_HOST="proxy.corp.local"
PROXY_PORT="8080"

# Проверка доступности
if timeout 3 bash -c "cat < /dev/null > /dev/tcp/$PROXY_HOST/$PROXY_PORT" 2>/dev/null; then
    STATUS=1
else
    STATUS=0
fi

# Запись метрик
cat > $METRICS_FILE << EOF
# HELP vyos_proxy_status Proxy server availability (1 = up, 0 = down)
# TYPE vyos_proxy_status gauge
vyos_proxy_status{host="$PROXY_HOST",port="$PROXY_PORT"} $STATUS
EOF

Взаимодействие с другими компонентами

Обновление образов системы

При настроенном прокси команда add system image автоматически использует прокси:

add system image https://downloads.vyos.io/rolling/current/vyos-1.5-rolling-latest.iso

Установка пакетов через apt

Если требуется установка дополнительных пакетов:

# Переменные прокси наследуются
sudo apt update
sudo apt install <package-name>

Container (Podman) конфигурация

Для контейнеров может потребоваться отдельная настройка прокси:

configure

# Пример конфигурации контейнера с прокси
set container name myapp environment HTTP_PROXY value 'http://proxy.example.com:8080'
set container name myapp environment HTTPS_PROXY value 'http://proxy.example.com:8080'
set container name myapp environment NO_PROXY value 'localhost,127.0.0.1,.local'

commit
save

VPN и прокси

При использовании VPN туннелей, убедитесь что трафик к прокси-серверу не идет через VPN:

configure

# Добавьте маршрут к прокси-серверу через основной gateway
set protocols static route <proxy-network>/24 next-hop <gateway-ip>

commit
save

Безопасность

Рекомендации по безопасности

  1. Шифрование паролей: Пароли в конфигурации хранятся в зашифрованном виде
  2. Изоляция учетных записей: Используйте отдельные учетные записи для разных роутеров
  3. Ограничение прав: Прокси-аккаунты должны иметь минимальные необходимые права
  4. Аудит: Логируйте все соединения через прокси на уровне прокси-сервера
  5. Мониторинг: Отслеживайте аномальную активность

Защита учетных данных

# После настройки прокси с паролем
configure
commit
save

# Пароль будет зашифрован в конфигурации
show system proxy

Вывод:

proxy {
    password ****************
    port 8080
    url http://proxy.example.com
    username admin
}

Логирование доступа

На стороне прокси-сервера настройте детальное логирование для аудита:

Squid пример:

access_log /var/log/squid/access.log squid
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm VyOS Proxy Authentication

Удаление конфигурации прокси

Для полного удаления настроек прокси:

configure

# Удалить всю конфигурацию прокси
delete system proxy

commit
save
exit

Проверка:

env | grep -i proxy

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

Совместимость версий

VyOS 1.4 (Sagitta LTS)

Полностью поддерживается:

  • Базовая конфигурация прокси
  • Аутентификация
  • Переменные окружения

VyOS 1.5 (Circinus/Current)

Полностью поддерживается:

  • Все функции из 1.4
  • Улучшенная обработка HTTPS прокси
  • Лучшая интеграция с контейнерами

Примечание: Синтаксис конфигурации идентичен между версиями.

Ссылки и ресурсы

Официальная документация

RFC стандарты

Связанные разделы документации

  • System Login - Управление пользователями и аутентификация
  • System Syslog - Логирование системных событий
  • Task Scheduler - Автоматизация задач

Заключение

Системный прокси в VyOS - критически важный компонент для работы в корпоративных и облачных средах с ограниченным доступом к интернету. Правильная настройка прокси обеспечивает:

  • Возможность обновления системы
  • Соблюдение корпоративных политик безопасности
  • Централизованное управление исходящим трафиком
  • Аудит и мониторинг сетевой активности

Следуйте рекомендациям по безопасности и лучшим практикам для обеспечения надежной и безопасной работы вашей сетевой инфраструктуры на базе VyOS.