Системный прокси: принцип работы и ограничения
Содержание
Системный прокси — это не туннель и не перехват трафика, а всего лишь запись в настройках операционной системы: «для выхода в сеть используйте такой-то адрес и порт». Приложения читают эту запись по собственной воле. Кто читает — идёт через прокси, кто не читает — продолжает соединяться напрямую, и никакой ошибки при этом не возникает.
Из этого добровольного характера растут все особенности режима: и его безопасность для системы, и его главный недостаток — неполный охват. Разберём, как клиент включает системный прокси, какой трафик через него проходит, какой проходит мимо и что с этим делать.
Что происходит при включении переключателя
Когда вы включаете системный прокси в Clash Verge Rev, FlClash или другом клиенте на ядре mihomo, происходит две вещи. Во-первых, ядро уже слушает локальный порт — обычно смешанный, принимающий и HTTP-, и SOCKS-соединения (в конфигурации это поле mixed-port; в готовых профилях встречаются значения 7890 и 7897). Во-вторых, клиент записывает адрес 127.0.0.1 и этот порт в системные настройки прокси.
Механизм записи у каждой ОС свой:
| Система | Где хранится настройка |
|---|---|
| Windows | Параметры сети и интернета, раздел «Прокси-сервер» |
| macOS | Настройки сети — параметры прокси активного интерфейса |
| Linux | Настройки прокси рабочего окружения (GNOME, KDE и другие) |
Отсюда полезное следствие для диагностики: если клиент завершился аварийно, запись может остаться в системе, и тогда сеть перестанет работать вовсе — приложения будут стучаться на порт, который больше никто не слушает. Лечится это возвратом настроек в «без прокси» вручную.
Какие приложения используют системный прокси
Читают системную настройку и честно ей следуют браузеры (Chrome, Edge, Safari — все, кроме тех, где прокси задаётся отдельно, как в Firefox по умолчанию), почтовые клиенты, мессенджеры, магазины приложений и большинство программ с графическим интерфейсом. Для повседневного сценария «открыть сайт, посмотреть видео, зайти в мессенджер» системного прокси достаточно, и именно поэтому он включён по умолчанию почти во всех клиентах.
Кто ходит мимо прокси
Мимо идут программы, которые системную настройку просто не читают:
- Многие игры и игровые лаунчеры — они работают по UDP и часто открывают соединения напрямую.
- Консольные утилиты —
curl,git, менеджеры пакетов, Docker. Часть из них смотрит на переменные окружения, часть — на собственные конфигурационные файлы. - Служебные процессы и фоновые службы — они запускаются вне пользовательского сеанса и системный прокси могут не видеть.
Для консольных программ есть простое решение — переменные окружения. Задайте их в текущей сессии терминала, подставив свой порт:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
В Windows PowerShell тот же смысл имеет запись $env:HTTP_PROXY="http://127.0.0.1:7890". Переменные действуют только внутри текущего окна терминала — это удобно, когда прокси нужен разово.
Примечание. Часть утилит распознаёт только версии переменных в нижнем регистре, часть — только в верхнем. Если после установки переменных ничего не изменилось, задайте оба варианта написания.
Режим PAC: прокси по правилам браузера
Кроме прямого указания адреса существует режим PAC — система получает ссылку на небольшой скрипт, который для каждого запрошенного домена решает, идти ли через прокси или напрямую. Раньше так разгружали прокси от локального трафика; сегодня в клиентах на ядре mihomo это почти не нужно: маршрутизацией занимаются правила самого ядра, которые гибче любого PAC-файла и работают одинаково для всех приложений, а не только для браузера.
Ограничения и переход к TUN
Подведём итог. Системный прокси прост, не требует прав администратора, легко включается и выключается, а при сбое клиента не оставляет систему без сети — достаточно снять настройку. Взамен он не даёт полного охвата: любое приложение вправе его проигнорировать, а UDP-трафик через HTTP-прокси не проходит.
Когда нужен гарантированный охват — игры, консольные инструменты, приложения с собственной сетевой логикой — применяют режим TUN: виртуальный сетевой адаптер забирает весь IP-трафик на сетевом уровне, независимо от желания программ. Сравнение двух подходов по охвату, правам и сложности отладки собрано в статье TUN или системный прокси. А если прокси включён, но страницы не открываются, начните с пошаговой диагностики: в половине случаев виновата как раз оставшаяся или пропавшая системная настройка.