ClashMi — документация по параметрам (RU)

Обновлено 28 августа 2026~37 мин чтения

Справочник по всем настройкам приложения ClashMi (GUI-клиент поверх ядра mihomo / Clash.Meta). Составлено по исходникам приложения: строки локализации (lib/i18n/strings_en.g.dart), экраны настроек (lib/screens/group_helper.dart, home_screen_widgets.dart, net_check_screen.dart) и значения по умолчанию (lib/app/modules/*, lib/app/clash/clash_config.dart).

В скобках у многих пунктов указан ключ конфига mihomo (то, что в приложении показывается серой подсказкой-tips) — по нему удобно искать документацию mihomo. Официальная документация ядра: <https://wiki.metacubex.one/>

Оглавление:


Частые задачи (быстрый старт)

Не хотите читать всё — вот куда идти под конкретную цель:

Хочу…Что сделать
Выбрать сервер вручнуюГлавный экран → группа-селектор → тапнуть узел; или Board → Прокси (§2, §5)
Пустить один сайт мимо VPN (напрямую)Своё правило: тип DOMAIN-SUFFIX, цель DIRECT (§4.8 → «Как завести своё правило»)
Один сайт — через конкретную нодуСвоё правило: DOMAIN-SUFFIX, цель = имя ноды (§4.8)
Ускорить / убрать тормозаСменить ноду на ближнюю; стек TUN mixed/system (§7)
Сайт не открывается — понять почемуNetwork Check по домену этого сайта (§6)
Проверить, что прокси вообще живРежим Global на минутку (§1) или «пинг» узла (§3)
Раздать VPN на другое устройство/ТВLAN device access (§4.7)
VPN отваливается после сна (Android)Wake Lock + отключить оптимизацию батареи (§3)

Дальше — полный справочник по разделам.


1. Режимы прокси: Rule / Global / Direct

Переключатель на главном экране (сегментированная кнопка под индикатором подключения). Определяет как ядро выбирает исход для каждого соединения. Меняется на лету, без переподключения.

РежимЧто делает
Rule (по умолчанию)Маршрутизация по правилам (rules) из профиля: часть трафика идёт в прокси, часть — напрямую (DIRECT), часть блокируется (REJECT). Обычный рабочий режим.
GlobalВесь трафик идёт через выбранную прокси-группу GLOBAL, правила игнорируются. Удобно проверить, что прокси вообще работает, или пробить всё через один узел.
DirectВесь трафик идёт напрямую, мимо прокси. Фактически «выключить проксирование», не разрывая VPN/TUN.

Подробнее про Global. GLOBAL — это не сервер, а встроенная группа-селектор, в которую mihomo автоматически включает все узлы конфига. В режиме Global правила rules не действуют вообще: весь трафик уходит в тот узел, что выбран в группе GLOBAL (на главном экране ClashMi при этом режиме показывается цепочка именно этой группы, и там же переключается узел). Полезно для диагностики (работает ли узел без влияния правил) или чтобы принудительно пустить всё за границу. Минусы: игнорируются доменные DIRECT-исключения — российские сервисы/банки поедут через зарубежный узел (гео-блоки, капчи, замедление); не режется реклама (REJECT-правила выключены); может отвалиться доступ в локальную сеть (GEOIP,private,DIRECT тоже не применяется). Для повседневного использования лучше Rule, а Global включать точечно и потом возвращаться обратно.

Сопутствующие понятия (не режимы, а цели правил — встречаются в rules и прокси-группах): DIRECT — напрямую, REJECT/Block — заблокировать (соединение обрывается), PASS — пропустить правило дальше. Полный набор типов прокси-групп в ClashMi: URLTest, Selector, LoadBalance, Fallback, Direct, Compatible, Pass, Reject, RejectDrop.


2. Инструменты на главном экране

Помимо переключателя режима, на главном экране есть три диагностических пункта.

Board

Встроенная веб-панель управления ядром (dashboard типа zashboard/yacd/metacubexd). Открывает интерфейс, где видно активные соединения, логи, прокси-группы, задержки, и где можно вручную переключать выбранный узел в группах.

Подробный разбор вкладок панели и ответ на вопрос «откуда берутся подключения» — см. §5. Board — панель zashboard подробно.

Runtime Profile

Показывает итоговый рабочий конфиг, который реально запущен в ядре, — уже после применения всех overwrite/patch (исходный профиль → Custom Overwrite → App Overwrite). Это файл serviceCoreRuntimeProfile, доступный только для чтения. Главный инструмент отладки: «а что на самом деле сейчас крутится в mihomo».

Network Check (Network Check)

Экран сетевой диагностики по конкретному домену. Проверяет 4 стадии и помогает понять, где именно рвётся доступ:

РазделЧто проверяет
1. DNS QueryРезолв домена (запросы A и AAAA). Метка «Suspected DNS poisoning» = подозрение на подмену/загрязнение DNS (ТСПУ/GFW).
2. HTTP (via TUN)HTTP-запрос через TUN-интерфейс. Требует включённого TUN — иначе «TUN is not enabled». Проверяет сквозной путь «приложение → TUN → ядро».
3. HTTP (via Proxy, port: N)HTTP-запрос напрямую через локальный прокси-порт ядра (Mixed Port). Проверяет сам прокси в обход TUN.
4. Route TableТаблица маршрутизации системы — видно, перехватывает ли TUN маршруты.

Логика чтения: если стадия 3 (Proxy) работает, а 2 (TUN) — нет, проблема в TUN/маршрутах; если не резолвится DNS (стадия 1) — проблема в DNS-настройках.

Подробный разбор всех проверок, значение «подозрения на подмену DNS» и таблица «результат → диагноз» — см. §6. Network Check — диагностика подробно.


3. App Settings — настройки приложения

Настройки самого приложения (интерфейс, обновления, поведение), не влияют на конфиг ядра. Часть пунктов видна только на определённых платформах.

ПараметрНазначениеПо умолчанию
ResetСброс всех настроек приложения к заводским.
LanguageЯзык интерфейса (en, ru, zh-CN/TW, ja, ko, ar, fa, es).системный
ThemeТема оформления: light / dark / system.light (или системная)
TV Mode (Android)Режим для ТВ/пультов: правки полей идут через всплывающий редактор (удобно без сенсора).выкл
Rotate with the screenПоворот интерфейса вслед за экраном (иначе только портрет).
Auto Update Channel (где поддерживается)Канал автообновления приложения (stable/beta и т.п.).
Auto Download Update Packages (где поддерживается)Автоскачивание пакетов обновления.
Log LevelУровень логов приложения: trace / debug / info / warning / error. (Отдельно от Log Level ядра!)warning (релиз) / info (отладка)
UserAgentUser-Agent, с которым приложение скачивает профили/подписки.
Delay Test URLURL для замера задержки узлов (кнопка «пинг»).https://www.gstatic.com/generate_204
Delay Test Timeout(ms)Таймаут замера задержки, мс.5000
Use Online BoardИспользовать онлайн-панель Board вместо локальной.выкл
Online Board URLURL онлайн-панели (виден, если Use Online Board включён).
Local Board PortПорт локальной панели Board (виден, если онлайн выключен).7066

Пункты ниже — платформозависимые:

ПараметрПлатформаНазначение
Launch at StartupWindowsАвтозапуск приложения при входе в систему (нужны права администратора).
Hide window after startupWindowsСкрывать окно сразу после старта (в трей).
Auto Connection after LaunchПКАвтоподключение сразу после запуска приложения.
Auto Set System Proxy when ConnectedПКАвтоматически прописывать системный прокси при подключении.
Domain names that are allowed to bypass the system proxyПКДомены-исключения для системного прокси (в обход).
Portable ModeWindowsПортативный режим (данные рядом с clashmi.exe, папка portable). Отключается только вручную.
Hide from [Recent Tasks]AndroidПрятать приложение из списка недавних задач.
Wake LockAndroidУдерживать процессор активным, чтобы система не «усыпляла» VPN.
Auto Connection after System StartupAndroidАвтоподключение после загрузки устройства (требует переподключения для применения; системе может понадобиться разрешение на автозапуск).
Hide Dock IconmacOSПрятать иконку из Dock (применяется после перезапуска).
Show traffic info in traymacOSПоказывать скорость/трафик в системном трее.

Подробно: Log Level, User-Agent и Delay Test

Log Level (логирование приложения)

Уровень подробности логов самого приложения ClashMi (Flutter-часть): импорт профилей, сетевые запросы приложения, ошибки UI. Значения по нарастанию детализации: tracedebuginfowarningerror (каждый следующий пишет меньше, только более важное).

User-Agent

HTTP-заголовок User-Agent, с которым приложение скачивает профили/подписки (не путать с UA вашего браузинга — на реальный трафик через VPN он не влияет).

Delay Test URL / Timeout — и что такое «пинг до сервера»

Эти два поля управляют замером задержки узлов — той самой цифрой в мс, что видна у каждого сервера в списке прокси (кнопка «молния»/пинг).

Как считается «пинг» (важно!). Это не ICMP-ping до IP сервера и не ваша задержка «телефон → IP узла». ClashMi просит ядро выполнить HTTP-пробу командой /proxies/<узел>/delay?url=<Delay Test URL>&timeout=<мс>: ядро через этот конкретный узел открывает соединение до тест-URL и замеряет время до ответа в миллисекундах. То есть цифра отражает сквозную задержку всего пути:

вы → прокси-узел → тест-сайт (generate_204) → ответ обратно

Отсюда практические следствия:

Итог одним предложением: «пинг до выбранного сервера» в ClashMi = время полного HTTP-запроса до Delay Test URL, проложенного через этот сервер, а не пинг до его IP.

Wake Lock (Android) — отзывчивость vs батарея

Тумблер Wake Lock (App Settings, только Android) держит процессор активным, пока VPN включён, чтобы система в простое (Doze/deep-sleep) не «усыпляла» туннель. Без него при погашенном экране соединение может подвисать/рваться, а при пробуждении VPN «оживает» с лагом (первые запросы отваливаются).

Чем платишь и грабли:

Рекомендация: по умолчанию держать выключенным (экономия батареи), включать точечно, если «после сна VPN тупит/отваливается», и обязательно в паре с «отключить оптимизацию батареи».


4. Core Settings — настройки ядра

Настройки ядра mihomo — то, что попадает в рабочий конфиг. Изменения применяются после переподключения (в приложении об этом висит зелёная подсказка: «After modifying the configuration, you need to reconnect to take effect»).

Механика Overwrite (важно понимать): итоговый конфиг собирается по цепочке Исходный профиль ← Custom Overwrite ← App Overwrite. То есть эти настройки «перекрывают» то, что пришло в подписке. У большинства блоков (TUN, DNS, NTP, TLS, Sniffer, LAN) есть тумблер Overwrite — пока он выключен, значения берутся из профиля, а блок не трогается; включив его, вы переопределяете блок настройками из приложения.

Основной список Core Settings

ПараметрКлюч конфигаНазначение
ResetСброс настроек ядра и патчей к заводским.
External Controllerexternal-controllerАдрес RESTful API ядра (host:port). На нём работают Board и внешние дашборды.
SecretsecretСекрет-токен доступа к External Controller. Тап — скопировать, долгий тап — сгенерировать новый.
Mixed Proxy Portmixed-portПорт локального прокси (SOCKS5 + HTTP на одном порту). Обязательное поле.
Log Levellog-levelУровень логов ядра: debug / info / warning / error / silent.
Per-App Proxy (Android)Пофайловый выбор приложений в туннель (см. ниже).
Pprof Address / PprofАдрес отладочного pprof-профайлера Go (host:port) и кнопка открыть …/debug/pprof/. Для диагностики производительности ядра.
Find Process Mode (не iOS)find-process-modeКак ядро определяет процесс-источник соединения (для правил PROCESS-NAME): always / strict / off.
IPv6ipv6, dns.ipv6Включение IPv6 в ядре и в DNS. Значения: наследовать/вкл/выкл.
TUNtunПодраздел настроек TUN (см. 4.1).
Geo RuleSetПодраздел источников/обновления Geo-баз (см. 4.6).
Diversion TemplateШаблоны маршрутизации: rule-providers, rules, proxy-groups (см. 4.8).
Overwrite (Custom Overwrite)Выбор/редактирование пользовательского патча поверх профиля. Подсказка о порядке: Original Profile ← Custom Overwrite ← App Overwrite.

Блок ниже отображается только для встроенного/пустого патча (не показывается, если выбран пользовательский Custom Overwrite):

ПараметрКлюч конфигаНазначение
TCP Concurrent Handshaketcp-concurrentПараллельные TCP-хендшейки ко всем IP домена (быстрее коннект). Наследовать/вкл/выкл.
TCP Keep-alive Intervaldisable-keep-alive, keep-alive-idle, keep-alive-intervalИнтервал keep-alive TCP. Можно выключить (Disable) или задать интервал (по умолчанию 30 с).
TLS Global Fingerprintglobal-client-fingerprintГлобальный TLS-фингерпринт (uTLS) для узлов без явного client-fingerprint: none / random / chrome / firefox / safari / ios (или «не переопределять»).
LAN device accessallow-lanПодраздел доступа из локальной сети (см. 4.7).
DNSdnsПодраздел DNS (см. 4.2).
NTPntpПодраздел NTP (см. 4.3).
TLStlsПодраздел TLS-сертификатов (см. 4.4).
SniffersnifferПодраздел сниффинга протоколов (см. 4.5).

Кнопка сохранения на этом экране (иконка файла) показывает итоговый сгенерированный патч-конфиг — можно посмотреть, что уйдёт в ядро.

Per-App Proxy (Android) — экран выбора приложений:


4.1 TUN

Виртуальный сетевой интерфейс — перехват всего трафика системы. На мобильных поднимается через системный VpnService (тумблер запуска = включение TUN).

ПараметрКлючНазначениеПо умолчанию
OverwriteПереопределять блок tun настройками приложения.
EnableenableВключить TUN (доступно при Overwrite).
IPv4 Gateway Addressinet4-addressАдрес/маска шлюза TUN.172.19.0.1/30
Network stackstackСетевой стек: gvisor / mixed / system. На iOS/macOS доступен только gvisor. system — быстрее (стек ОС), gvisor — совместимее (userspace), mixed — TCP через system, UDP через gvisor.gvisor (первый в списке)
DNS Hijackdns-hijackПерехват DNS-запросов внутри TUN. Без него DNS может утекать мимо туннеля.0.0.0.0:53
Strict Routestrict-routeСтрогая маршрутизация — жёстче режет утечки мимо TUN (иногда мешает локальной сети).
ICMP Forwarding (ПК)disable-icmp-forwarding (инверт.)Пересылка ICMP (ping) через TUN.вкл

Android:

ПараметрКлючНазначение
Allow Apps to Bypass VPNallow_bypassРазрешить приложениям в обход VPN (если они так умеют).
Append HTTP Proxy to VPNДобавить в VPN системный HTTP-прокси (127.0.0.1:mixed-port).
Domains allowed to bypass HTTP proxyДомены-исключения для этого HTTP-прокси.

iOS / macOS (низкоуровневые флаги NetworkExtension, у каждого своя мин. версия ОС):

ПараметрНазначение
Default RouteИспользовать TUN как маршрут по умолчанию (иначе — суб-диапазоны).
includeAllNetworksЗахватывать вообще весь трафик (iOS 14.0+/macOS 10.15+).
excludeLocalNetworksИсключить локальные сети из туннеля.
excludeCellularServicesИсключить сотовые сервисы (iOS 16.4+).
excludeAPNsИсключить Apple Push (APNs) (iOS 16.4+).
excludeDeviceCommunicationИсключить межустройственный обмен (iOS 17.4+).
enforceRoutesПринудительно применять маршруты (iOS 14.2+).
Hide VPN Icon (iOS)Прятать значок VPN в статус-баре (не работает при включённом IPv6).

💡 На пальцах (Network stack): это то, как приложение «врезается» в сеть. system = напрямую в ядро ОС — быстрее, но капризнее (нужны права, не работает при включённом фаерволе). gvisor = свой софтверный стек — совместимее, но грузит процессор. mixed — TCP через ядро (скорость) + UDP через gvisor (совместимость). Не знаете что выбрать — оставьте gvisor; тормозит на ПК/Android — попробуйте mixed. На iOS/macOS выбора нет — только gvisor.


4.2 DNS

Как ядро резолвит домены. Критично для работы TUN (см. режим fake-ip).

ПараметрКлючНазначениеПо умолчанию
OverwriteПереопределять блок dns.
EnableenableВключить встроенный DNS ядра.
ListenlistenАдрес:порт, на котором слушает DNS-сервер ядра.0.0.0.0:53
Prefer DoH H3prefer-h3Предпочитать HTTP/3 для DoH-апстримов.
Use System Hostsuse-system-hostsИспользовать системный hosts.
Use Hostsuse-hostsИспользовать пользовательский hosts (задаётся ниже).
hostshostsСтатические записи домен→IP.
Enhanced Modeenhanced-modeРежим: fake-ip (выдаёт фейковые IP — лучший для TUN), redir-host, normal.normal (последний в списке)
fake-ip Filter Modefake-ip-filter-modeКак трактовать фильтр fake-ip: blacklist / whitelist / rule.rule (последний)
fake-ip Filterfake-ip-filterСписок доменов-исключений для fake-ip (кому отдавать реальный IP).
Respect Rulesrespect-rulesРезолвить апстримы DNS согласно rules (а не напрямую).
Default NameServerdefault-nameserverDNS для резолва адресов самих DNS-серверов (только IP).
NameServernameserverОсновные DNS-серверы.
Proxy NameServerproxy-server-nameserverDNS для резолва доменов прокси-серверов.
Direct NameServerdirect-nameserverDNS для доменов, идущих напрямую (DIRECT).
Fallback NameServerfallbackРезервные DNS (обычно зарубежные, против подмены).
Fallback GeoIpgeoipВключить гео-фильтр для fallback.
Fallback GeoIpCodegeoip-codeКод страны для гео-фильтра fallback (напр. CN).

💡 На пальцах (fake-ip): на вопрос «какой IP у сайта?» ядро мгновенно отдаёт фейковый адрес (из диапазона 198.18.x.x), а настоящий резолвит уже выбранный сервер. Зачем: (1) быстрее — не ждём реального DNS; (2) провайдер не видит, какие сайты вы открываете; (3) маршрут выбирается по домену, а не по IP. Для TUN это лучший режим. Что-то ломается (STUN/игры/локальные сервисы) — добавьте такой домен в fake-ip-filter.


4.3 NTP

Встроенный NTP-клиент ядра (нужен, например, протоколам с проверкой времени — VMess/Reality-подобным).

ПараметрКлючНазначение
OverwriteПереопределять блок ntp.
EnableenableВключить NTP-клиент ядра.
ServerserverАдрес NTP-сервера (обязательное поле).
PortportПорт NTP-сервера (обязательное поле).

4.4 TLS

Пользовательские TLS-сертификаты для ядра (RESTful API поверх TLS, MITM-функции и т.п.).

ПараметрКлючНазначение
OverwriteПереопределять блок tls.
CertificatecertificateСертификат (путь/содержимое).
Private Keyprivate-keyПриватный ключ.
Custom Certifactescustom-certifactesСписок пользовательских доверенных сертификатов.

4.5 Sniffer

Определение реального протокола/домена внутри соединения (по трафику), даже если клиент ушёл по IP. Помогает точнее применять доменные правила.

ПараметрКлючНазначение
OverwriteПереопределять блок sniffer.
EnableenableВключить сниффер.
Overrideoverride-destinationПодменять целевой адрес соединения на распознанное имя домена (тогда правила применяются к домену, а не к IP).

💡 На пальцах (Sniffer): иногда приложение подключается сразу по IP, без домена — и доменные правила (пустить youtube.com через нужный узел) не срабатывают. Сниффер подсматривает домен внутри самого соединения и «возвращает» его правилам. Зачем: чтобы маршрутизация по доменам работала, даже когда клиент ушёл по голому IP. Обычно держат включённым.


4.6 Geo RuleSet

Источники и обновление гео-баз (GeoSite/GeoIP), которые ClashMi преобразует в RuleSet. На iOS правила IP-ASN/SRC-IP-ASN игнорируются (ограничения памяти).

ПараметрНазначениеПо умолчанию
Update intervalИнтервал автообновления гео-баз (в днях/часах).2 дня
Downloading Geo RuleSet by proxyКачать гео-базы через прокси (актуально, если напрямую заблокировано).
GeoSiteURL базы GeoSite (домены).
GeoIpURL базы GeoIP (диапазоны IP).

4.7 LAN device access

Доступ к прокси с других устройств локальной сети (например, раздать прокси на роутер/ТВ).

ПараметрКлючНазначение
OverwriteПереопределять allow-lan.
Enableallow-lanРазрешить подключения из LAN (не только с localhost).
AuthenticationauthenticationЛогин:пароль для доступа из LAN (username:password). Доступно при включённом allow-lan.

Осторожно: включённый allow-lan без аутентификации делает ваш прокси открытым для всей локальной сети.


4.8 Diversion Template

Шаблоны маршрутизации, из которых собираются правила и группы конфига.

ПараметрКлючНазначение
Rule Providersrule-providersВнешние наборы правил (подгружаемые списки доменов/IP).
Rule TemplatesrulesШаблоны самих правил маршрутизации.
Proxy Group Templateproxy-groupsШаблоны прокси-групп (Selector, URLTest, Fallback, LoadBalance).

Как завести своё правило (пошагово): этот домен — напрямую, тот — через нужную ноду. Правило собирается в два шага: (A) создать шаблон правил, (B) на профиле включить его и выбрать, КУДА направить трафик. Так правило переживает обновление подписки — это отдельный override-слой, саму подписку он не меняет.

Русский перевод меню машинный: Diversion Templates там называется «Шаблон сортировки пациентов», Proxy Groups — «Группа агентов». Путаетесь — переключите язык на English.

Шаг A — создать шаблон правил. Настройки → Diversion TemplatesRule Templates → «+»:

  1. Name — любое имя (напр. direct-list, via-de).
  2. Внутри шаблона «+» добавьте правило: Type (тип совпадения — таблица ниже) + значение (домен/IP). Для IP-типов включите тумблер NO-RESOLVE. Правил в один шаблон можно много — все уйдут в одну цель.
  3. Сохраните. Цель (куда направить) здесь не выбирается — только «что ловим».

Шаг B — привязать к профилю и выбрать цель.

  1. Сделайте нужный профиль активным и подключитесь — без активного подключения список узлов для выбора цели не подтянется.
  2. Настройки профиля → раздел Rules → включите Overwrite [Rules].
  3. Тапните свой шаблон и выберите цель из живого списка выходов: DIRECT (напрямую, мимо VPN), имя конкретной ноды, главную группу-селектор или авто-группу по пингу (URLTest).
  4. Переподключитесь — правило применится.

Типы правил (пикер Type):

TypeЧто совпадаетПример значенияNO-RESOLVE
DOMAINточный хост, буква-в-буквуya.ru → только ya.ru
DOMAIN-SUFFIXдомен и все поддоменыya.ruya.ru, mail.ya.ru
DOMAIN-KEYWORDподстрока в домене (грубо)yandexyandex.ru, myyandex.net
DOMAIN-REGEXрегулярка по домену`(^\\.)ya\.ru$`
GEOSITEцелая категория доменовyoutube, telegram, category-ru
IP-CIDR / IP-CIDR6подсеть/адрес по IP назначения8.8.8.8/32, 2606:4700::/32нужен
IP-ASNвсе IP автономной системы13335 (Cloudflare)нужен
GEOIPстрана по IPRU, USнужен
RULE-SETвнешний авто-список (Rule Provider)имя провайдераможно
PROCESS-NAME / -REGEXпо приложению-инициатору (ПК/Android; iOS — нет)chrome.exe
AND / OR / NOTсклейка условий (продвинутое)AND,((DOMAIN-SUFFIX,ya.ru),(NETWORK,udp))
MATCH«всё остальное», самым последним, без значения

💡 На пальцах: для «весь сайт целиком» берите DOMAIN-SUFFIX (ловит и поддомены). DOMAIN — строго один хост. IP-типы (IP-CIDR/GEOIP/IP-ASN) требуют NO-RESOLVE, иначе ядро зря резолвит домен в IP. GEOSITE — готовая пачка доменов, не перечисляя руками.

Примеры (Type · значение · цель → строка правила):

Грабли:


5. Board — панель zashboard подробно

Локальный Board в ClashMi — это встроенный сторонний open-source веб-дашборд zashboard, вшитый в приложение (assets/zashboard/, собранная PWA ~3.9 МБ) и раздаваемый локальным HTTP-сервером на 127.0.0.1:<Local Board Port> (по умолчанию 7066). Он подключается к RESTful API работающего ядра mihomo (адрес/порт/secret берутся из External Controller) и через этот API показывает и меняет состояние ядра в реальном времени. Из интернета ничего не тянется — панель работает офлайн; сервер слушает только 127.0.0.1, доступ к API защищён Secret.

Ниже приведены текстовые схемы-макеты вкладок (это схемы, а не скриншоты).

Вкладки панели

zashboard разбит на вкладки (русские названия — из локализации самой панели): Обзор, Прокси, Подключения, Правила, Журнал, Настройки.

Обзор

Сводка в реальном времени: текущая скорость ↑/↓, число активных подключений, память ядра, график трафика.

[СХЕМА, не скриншот]
┌──────────────────────────────────────────────┐
│ zashboard              Обзор ▾            🌙   │
├──────────────────────────────────────────────┤
│  ↑ Выгрузка 1.2 MB/s      ↓ Загрузка 5.4 MB/s │
│  Активные: 37             Память ядра: 84 MB  │
│  ┌──────────── график трафика ─────────┐      │
│  │        ╱╲     ╱╲╱╲                   │      │
│  └─────────────────────────────────────┘      │
└──────────────────────────────────────────────┘

Прокси

Список прокси-групп и узлов. Здесь можно прогнать задержку (пинг) и вручную выбрать узел в группах типа Selector — это единственный способ из панели повлиять на маршрут (см. ниже про правила).

[СХЕМА, не скриншот]
┌──────────────────────────────────────────────┐
│  Прокси                          [Тест ⚡]     │
│  GLOBAL  (Selector)                            │
│    ● 🇺🇸 US-1      42 ms                        │
│    ○ 🇳🇱 NL-2      68 ms                        │
│  YouTube (Selector)                            │
│    ● 🇫🇮 FI-Node   30 ms                        │
└──────────────────────────────────────────────┘

Подключения

Живой список соединений, которые ядро прямо сейчас обрабатывает. Переключатель Активные / Закрытые (Закрытые — недавно завершённые за текущую сессию панели, сбрасываются при перезапуске). Есть фильтр/поиск. По каждому соединению доступна кнопка Закрыть.

Колонки (реальные из zashboard): Источник (локальный IP:порт), Хост (домен/адрес назначения), Процесс (какое приложение инициировало), Правило (какое правило сработало), Цепочки (через какую группу/узел идёт, или Прямое = DIRECT), Сеть (TCP/UDP), Тип, Загрузка/Скорость, Время (длительность), Задержка.

[СХЕМА, не скриншот]
┌───────────────────────────────────────────────────────────────┐
│ Подключения     [Активные] Закрытые          🔎 фильтр…        │
├──────────────┬────────────────────┬───────────┬───────────────┤
│ Хост         │ Процесс            │ Правило   │ Цепочки        │
├──────────────┼────────────────────┼───────────┼───────────────┤
│ chatgpt.com  │ com.openai.chatgpt │ GEOSITE,  │ GLOBAL→🇺🇸US-1 │
│ :443  TCP    │                    │ openai    │ ↑2KB ↓40KB 8s  │
│ *.push.apple │ apsd (система)     │ MATCH     │ Прямое         │
│ vk.com:443   │ Chrome             │ GEOSITE,ru│ Прямое  ↑1KB   │
│ mtalk.google │ com.google.gms     │ MATCH     │ GLOBAL→🇺🇸US-1 │
└──────────────┴────────────────────┴───────────┴───────────────┘

Правила

Список правил маршрутизации текущего конфига — только для чтения. Отсюда правила менять нельзя (ограничение Clash API: эндпоинт /rules доступен лишь на чтение). Также показывает подключённые Rule Providers.

[СХЕМА, не скриншот]
┌──────────────────────────────────────────────┐
│  Правила (только чтение)         Rule Providers│
│  0  DOMAIN-SUFFIX,openai.com    → GLOBAL       │
│  1  GEOSITE,category-ru         → Прямое       │
│  2  GEOIP,private               → Прямое       │
│  …                                             │
│  N  MATCH                       → GLOBAL       │
└──────────────────────────────────────────────┘

Журнал

Логи ядра в реальном времени (уровень — как в Core Settings → Log Level). Полезно видеть, какое правило сматчилось и куда ушло соединение.

Настройки

Настройки самой панели: адрес External Controller (host/port/secret), тема, язык, период обновления. К конфигу ядра отношения не имеют.

Откуда берутся подключения (и почему там GPT, хотя я к нему не заходил)

Ключевой момент: вкладка Подключения — это не история ваших действий, а live-срез всего, что ядро проксирует в данный момент. Панель подписана на поток /connections API ядра (websocket) и показывает соединения по мере их появления.

А теперь главное: при включённом TUN через ядро проходит трафик всех приложений и системы на устройстве — не только того, что вы осознанно открыли. Поэтому «Подключения» = рентген всей сетевой активности телефона в реальном времени.

Почему вы видите chatgpt.com / openai, хотя «не заходили»:

  1. Фоновая активность приложения. Если установлено приложение ChatGPT (или оно висит в фоне) — оно само периодически стучится на свои серверы: обновление сессии, синхронизация, загрузка конфигов, аналитика. Это происходит без вашего участия.
  2. Пуш-уведомления и телеметрия. Постоянные keep-alive к push-серверам (в схеме выше — push.apple, mtalk.google для FCM), плюс отправка телеметрии.
  3. Открытая вкладка/виджет/webview. Вкладка браузера на chatgpt.com, PWA, виджет или встроенный в другое приложение webview продолжают фоновые запросы.
  4. Предзагрузка/предрезолв. Браузеры заранее коннектятся и резолвят домены, которые «могут понадобиться».
  5. fake-ip / sniffer подписывают соединение доменом, поэтому вы прямо видите chatgpt.com, даже если фоновый запрос шёл по IP.

Как проверить, кто именно инициировал: смотрите колонку Процесс — там имя приложения/пакета. (На Android для заполнения этой колонки нужен Core Settings → Find Process Mode = always или strict.) Если это фоновый процесс — можно нажать Закрыть на соединении или выгрузить приложение; но обычно это нормальный фоновый шум, а не что-то тревожное.

Вывод: появление GPT в списке почти всегда означает, что установленное приложение ChatGPT или открытая где-то страница обращаются к своим серверам в фоне. Это ожидаемо для TUN-режима, где виден весь трафик устройства.

Что через Board можно и нельзя

ДействиеBoardГде иначе
Смотреть подключения / трафик / логи
Переключить узел в группе Selectorглавный экран
Прогнать пинг узлов
Закрыть активное соединение
Сменить режим Rule/Global/Direct✅ (через API)главный экран
Смотреть правила✅ (только чтение)
Добавить/изменить своё правилоCore Settings → Diversion Template → Rule Templates

6. Network Check — диагностика подробно

Network Check (главный экран → доп. инструменты) — встроенный сетевой диагност по одному домену. Вводите домен (по умолчанию example.com; для реальной диагностики вбивайте тот, что не открывается — chatgpt.com, youtube.com и т.п.), жмёте Check — и приложение по очереди выполняет 4 проверки. Кнопка копирования вверху выгружает весь отчёт (домен, ОС, все 4 секции) — удобно приложить в тикет поддержки.

Важно: проверки идут сверху вниз и независимо, поэтому смотреть надо не на одну строку, а на комбинацию результатов — именно она указывает на слой, где ломается.

Что делает каждая проверка (по коду)

1. DNS Query. Резолвит домен через DNS самого ядра (запрос к API /dns/query, типы A и AAAA) — то есть ровно так, как ядро резолвит его в бою, с вашими настройками DNS из профиля. Для каждого полученного IP:

2. HTTP (via TUN). Сначала проверяет tun.enable: если TUN выключен — пишет «TUN is not enabled» и пропускает. Если включён — делает HTTPS-запрос https://<домен>/ в режиме DIRECT (без явного прокси-порта). Но так как TUN включён, этот «прямой» сокет всё равно перехватывается TUN → уходит в ядро → маршрутизируется по правилам. То есть это сквозной путь, как у обычного приложения: приложение → TUN → ядро → правила → наружу. Успех = HTTP 200, таймаут 15 с.

3. HTTP (via Proxy, port: N). Тот же HTTPS-запрос, но явно через локальный прокси-порт ядра (PROXY 127.0.0.1:<mixed-port>), в обход TUN. Проверяет связку ядро + прокси-узел напрямую, независимо от TUN и таблицы маршрутов.

4. Route Table (не на iOS). Выгружает таблицу маршрутизации ОС — видно, установил ли TUN свои маршруты (дефолт через TUN-шлюз). Нужна, когда TUN включён, но трафик мимо него.

Что такое «подозрение на подмену DNS»

Флаг ставится по простому признаку: ядро вернуло для домена не-публичный IP. Это классическая сигнатура DNS-инъекции со стороны цензора (ТСПУ/GFW): на plain-DNS (UDP :53) в ответ на запрос заблокированного домена подсовывается поддельная запись, ведущая в «никуда» — 0.0.0.0, 127.0.0.1 или приватный диапазон. Клиент честно коннектится по этому адресу, попадает в пустоту — сайт «не работает».

Поскольку проверка идёт через ваш DNS ядра, результат фактически отвечает на вопрос: «чистое ли у меня сейчас разрешение имён для этого домена?»

⚠️ Ложные срабатывания. Если домен легитимно резолвится в приватный адрес (внутренний сервис, self-hosted, что-то в вашей локалке) — проверка тоже пометит его как «подмену», хотя это норма. Флаг — это подсказка, а не приговор.

Нюанс fake-ip: в режиме enhanced-mode: fake-ip ядро отдаёт домену адрес из диапазона 198.18.0.0/16. Он публичный по формальному признаку, так что как «подмена» он не помечается — это ожидаемо.

Таблица «результат → диагноз»

1. DNS3. Proxy2. TUNВероятная причина / что делать
public IP✅ 200✅ 200Всё работает. Если сайт всё равно не грузится — проблема в самом приложении/сайте, не в VPN.
[подмена]✅ 200✅ 200DNS «грязный», но трафик спасает прокси (remote-resolve / fake-ip). Работает, но лучше починить DNS (DoH-nameserver, fallback, fake-ip).
public IP✅ 200❌ ошибкаУзел жив, но TUN не доносит трафик. Смотрите проверку 4 (нет маршрута TUN), включён ли DNS Hijack, стек TUN; на Android — выключите системный Private DNS.
public IP❌ ошибка❌ ошибкаУзел недоступен/заблокирован (таймаут, TLS-ошибка, connection refused) или нет сети. Смените узел, проверьте подписку/креды.
[подмена]❌ ошибка❌ ошибкаПохоже на полный блок пути + грязный DNS. Смените узел И почините DNS; проверьте, что ядро вообще подключено.
любой«TUN is not enabled»TUN просто выключен — включите TUN (тумблер запуска VPN).
query failedЯдро не отвечает/не подключено или нет сети вообще. Переподключитесь.

Правило чтения по слоям: DNS (1) — чистое ли имя; Proxy (3) — жив ли сам узел/ядро; TUN (2) — доходит ли до приложений; Route Table (4) — установлен ли перехват. Идёте снизу вверх: если 3 (Proxy) хорошо, а 2 (TUN) плохо — чините TUN/маршруты, а не узел.

Как пользоваться — по шагам

  1. Столкнулись, что сайт не открывается → откройте Network Check, введите его домен (не example.com).
  2. Нажмите Check, дождитесь всех 4 секций.
  3. Сверьтесь с таблицей выше: комбинация DNS / Proxy / TUN покажет слой проблемы.
  4. Если ничего не понятно — нажмите копировать и приложите отчёт в поддержку.

7. Настройки под производительность

Что крутить ради скорости и чем за это платишь. Сами параметры описаны выше — здесь сведено «для скорости → последствие».

Настройка (раздел)Для скоростиЧем платишь
Network stack (§4.1)gvisor (дефолт) → mixed или systemmixed = TCP через ядро + UDP через gvisor; ⬆ throughput, CPU ниже на 30–50%. Но при включённом фаерволе system/mixed недоступны → останется gvisor; на iOS/macOS только gvisor
find-process-modeдержать offalways/strict матчат процесс на каждый коннект = лишний CPU; off → правила PROCESS-NAME не работают
Выбор нодыближняя/разгруженная или авто-группа по пингу (URLTest)«одна ближняя нода»: заблокируют/просядет — падать некуда; авто-группа устойчивее
Log Level (§3)warning/silentНЕ debug/trace: жрут CPU/диск/батарею; минус — меньше диагностики
IPv6держать выкл, если не нуженнет двойных A/AAAA-резолвов и битых v6-маршрутов; минус — чисто-IPv6 сайты недоступны (редко)

Главный рычаг — не тумблер, а нода. Большая часть «тормозит» лечится сменой на ближнюю/менее загруженную ноду (или авто-группой по пингу), а не настройками. Стек system/mixed — второй по величине выигрыш.

Из обсуждений сообщества (mihomo): приоритет стеков по скорости — systemmixedgvisor (gvisor целиком в userspace → самый прожорливый по CPU, на слабом железе +30–50% нагрузки; ядро-стеки берут аппаратное ускорение). Держите fake-ip, но исключайте из fake-ip-filter STUN/локалку/ сетевые проверки, иначе часть приложений ломается. Источники: mihomo wiki · TUN, mihomo wiki · DNS, гайд Clash Meta 2026.

Чего НЕ включать: мультиплексирование (mux), если попадётся — для VLESS+Vision/Reality оно режет параллельную скорость и мешает Vision; выигрыш только на «дорогих» рукопожатиях.


Поддерживаемые платформы и версии

По официальному README и сборочным конфигам ClashMi (ядро — Flutter):

ПлатформаМинимумПримечания
Windows10только 64-бит (amd64/x64); Windows 7/8 и ARM/32-бит не поддерживаются. TUN требует прав администратора
macOS12 (Monterey)Intel + Apple Silicon; TUN-стек — только gvisor
Android8.0 (API 26)arm64-v8a, armeabi-v7a
iOS15TUN-стек — только gvisor
Linuxтолько amd64

Приложение: значения по умолчанию (сводка)

НастройкаЗначение по умолчанию
Темаlight
Log Level (приложение)warning (релиз) / info (отладочная сборка)
Delay Test URLhttps://www.gstatic.com/generate_204
Delay Test Timeout5000 мс
Local Board Port7066
Режим проксиrule
TUN стекgvisor (iOS/macOS — только он); на Android/ПК доступны mixed/system
TUN IPv4 шлюз172.19.0.1/30
TUN DNS Hijack0.0.0.0:53
DNS Listen0.0.0.0:53
TCP Keep-alive30 с
Geo update interval2 дня

Документ отражает исходники ClashMi на момент 2026-07-13 (ветка feature/mihomo-clash-sub). Названия пунктов даны по английской локализации — в приложении с русским языком часть из них переведена.

Вопросы по статье — в обсуждении выше, в поддержку из бота или из кабинета.