Proxy - Системный HTTP/HTTPS прокси
Системный Proxy в VyOS
Обзор
Системный прокси-сервер в VyOS позволяет настроить централизованную точку доступа для всех исходящих HTTP, HTTPS и FTP соединений, инициируемых системой. Это критически важно в корпоративных средах, где прямой доступ к интернету ограничен политиками безопасности.
Назначение
Конфигурация прокси-сервера в VyOS используется для:
- Обновления системы: Загрузка новых образов VyOS через команду
add system image - Установка пакетов: Доступ к репозиториям пакетов через прокси
- Загрузка файлов: Системные операции, требующие доступа к внешним ресурсам
- Централизованное управление трафиком: Единая точка контроля исходящих соединений
- Соблюдение корпоративных политик: Обязательное использование корпоративного прокси
Области применения
Системный прокси применяется в следующих сценариях:
- Корпоративные сети: Обязательное использование корпоративного прокси-сервера
- Изолированные сегменты: DMZ зоны с ограниченным доступом к интернету
- Облачные инфраструктуры: Yandex Cloud, VK Cloud с централизованным управлением трафиком
- Аудит и мониторинг: Контроль всех исходящих соединений
- Кэширование: Оптимизация загрузки часто используемых ресурсов
Принцип работы
При настройке системного прокси VyOS:
- Устанавливает переменные окружения:
http_proxy,https_proxy,ftp_proxy - Применяет настройки ко всем системным процессам
- Использует прокси для всех HTTP/HTTPS/FTP соединений
- Поддерживает аутентификацию по RFC 7617 (Basic Authentication)
- Позволяет исключать определенные хосты из проксирования
Конфигурация
Базовая настройка прокси
Установка 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:porthttps_proxy
Используется для HTTPS соединений.
Формат:
https_proxy=http://[username:password@]proxy-url:portПримечание: Даже для HTTPS соединений часто используется протокол http:// для самого прокси-соединения, если прокси не требует SSL.
ftp_proxy
Используется для FTP соединений.
Формат:
ftp_proxy=http://[username:password@]proxy-url:portno_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"
save3. Мониторинг и логирование
Создайте скрипт мониторинга /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
save4. Резервный прокси-сервер
Для критичных систем подготовьте альтернативную конфигурацию:
Создайте скрипт /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
fi5. Тестирование после изменений
После любых изменений конфигурации прокси:
# 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.zip6. Регулярное обслуживание
Создайте чек-лист регулярного обслуживания:
Еженедельно:
- Проверка логов прокси
/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
saveVPN и прокси
При использовании VPN туннелей, убедитесь что трафик к прокси-серверу не идет через VPN:
configure
# Добавьте маршрут к прокси-серверу через основной gateway
set protocols static route <proxy-network>/24 next-hop <gateway-ip>
commit
saveБезопасность
Рекомендации по безопасности
- Шифрование паролей: Пароли в конфигурации хранятся в зашифрованном виде
- Изоляция учетных записей: Используйте отдельные учетные записи для разных роутеров
- Ограничение прав: Прокси-аккаунты должны иметь минимальные необходимые права
- Аудит: Логируйте все соединения через прокси на уровне прокси-сервера
- Мониторинг: Отслеживайте аномальную активность
Защита учетных данных
# После настройки прокси с паролем
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.