From 0db3d8f3ff049458680e74809d649d09ced34ce0 Mon Sep 17 00:00:00 2001 From: Zhoel Sherk Date: Mon, 25 May 2026 02:11:24 +0300 Subject: [PATCH 1/6] docs: fill empty handbook ru pages --- docs/handbook/dns.ru.md | 35 ++++++++++++++++++++++++++++++- docs/handbook/out.ru.md | 44 ++++++++++++++++++++++++++++++++++++++- docs/handbook/route.ru.md | 38 ++++++++++++++++++++++++++++++++- 3 files changed, 114 insertions(+), 3 deletions(-) diff --git a/docs/handbook/dns.ru.md b/docs/handbook/dns.ru.md index e7f7b0381..3879cba65 100644 --- a/docs/handbook/dns.ru.md +++ b/docs/handbook/dns.ru.md @@ -1,3 +1,36 @@ # DNS -Mihomo перехватывает DNS через DNS-перехват, что позволяет трафику из входящих соединений TUN, Redirect или TProxy сопоставлять IP-адреса с соответствующими доменными именами. \ No newline at end of file +Mihomo перехватывает DNS-запросы через DNS-hijack, что позволяет трафику из входящих соединений TUN, Redirect или TProxy сопоставлять IP-адреса с соответствующими доменными именами. + +## Схема работы + +1. Устройство отправляет DNS-запрос на DNS-сервер (например, 8.8.8.8) +2. Mihomo перехватывает запрос и обрабатывает через встроенный DNS-модуль +3. В зависимости от `enhanced-mode`: + - **redir-host** — Mihomo возвращает реальный IP, извлекая домен из SNI + - **fake-ip** — Mihomo возвращает «фейковый» IP из диапазона `fake-ip-range`, а реальный IP узнаёт позже через sniffer + +## Цепочка DNS-серверов + +- `default-nameserver` — для резолва имён самих DNS-серверов (только IP) +- `nameserver` — основные серверы +- `fallback` — резервные серверы (обычно зарубежные) +- `nameserver-policy` — назначает конкретные серверы для определённых доменов/GEOSITE +- `proxy-server-nameserver` — отдельные серверы для имён прокси-узлов (избегает проблемы курицы и яйца) + +## fake-ip + +Режим `fake-ip` выдаёт клиенту IP из частного диапазона (по умолчанию `198.18.0.0/16`). Mihomo хранит соответствие «домен → fake-ip» и при реальном соединении восстанавливает настоящий адрес через sniffer. + +```{.yaml linenums="1"} +dns: + enhanced-mode: fake-ip + fake-ip-range: 198.18.0.1/16 + fake-ip-filter: + - '*.lan' + - '+.local' +``` + +Для доменов из `fake-ip-filter` (локальные имена, зоны nfqws) реальный IP не подменяется — они резолвятся обычным образом. + +Подробнее: [Настройка DNS](../config/dns/index.md), [Типы DNS](../config/dns/type.md), [hosts](../config/dns/hosts.md). diff --git a/docs/handbook/out.ru.md b/docs/handbook/out.ru.md index 0519ecba6..2a799a4ff 100644 --- a/docs/handbook/out.ru.md +++ b/docs/handbook/out.ru.md @@ -1 +1,43 @@ - \ No newline at end of file +# Исходящие соединения + +Исходящее соединение (outbound) в Mihomo определяет, **куда** и **как** отправлять трафик после применения правил маршрутизации. + +## Типы исходящих соединений + +### Прокси-узлы (proxies) + +Задают параметры подключения к удалённому серверу (VPS): + +- `type` — протокол: `ss`, `vmess`, `vless`, `trojan`, `hysteria2`, `tuic` и др. +- `server` — IP/домен сервера +- `port` — порт +- `tls`, `sni`, `client-fingerprint` — настройки TLS +- `smux` — мультиплексирование + +### Встроенные политики (built-in) + +- **DIRECT** — прямой выход в интернет без прокси +- **REJECT** — блокировка трафика (отправка RST) +- **REJECT-DROP** — молчаливый сброс пакетов +- **PASS** — пропуск правила, переход к следующему +- **COMPATIBLE** — заменяет DIRECT при ошибке в группе + +### Группы прокси (proxy-groups) + +Объединяют несколько узлов в одну логическую политику: + +- `select` — ручной выбор +- `url-test` — автоматический выбор по задержке +- `fallback` — резервное переключение +- `load-balance` — распределение нагрузки +- `relay` — цепочка прокси (устарел, вместо него `dialer-proxy`) + +### Провайдеры прокси (proxy-providers) + +Динамическая загрузка узлов из внешних подписок (URL, файл, inline). + +## Цепочка outbound + +Трафик проходит: `правила → группа/прокси → (dialer-proxy →) DIRECT/внешний сервер` + +Подробнее: [Прокси](../config/proxies/index.md), [Группы прокси](../config/proxy-groups/index.md), [Провайдеры прокси](../config/proxy-providers/index.md). diff --git a/docs/handbook/route.ru.md b/docs/handbook/route.ru.md index 0519ecba6..2a803f9ce 100644 --- a/docs/handbook/route.ru.md +++ b/docs/handbook/route.ru.md @@ -1 +1,37 @@ - \ No newline at end of file +# Маршрутизация + +Mihomo направляет трафик на основе правил из блока `rules:`. + +## Принцип работы + +1. Входящий пакет (TCP/UDP) попадает в Mihomo через один из портов или TUN +2. Mihomo по возможности определяет домен (через DNS + sniffer) +3. Пакет последовательно сравнивается с каждым правилом в блоке `rules:` сверху вниз +4. При первом совпадении трафик направляется на указанную политику (прокси, DIRECT, REJECT) + +## Типы правил + +- **Доменные**: `DOMAIN`, `DOMAIN-SUFFIX`, `DOMAIN-KEYWORD`, `DOMAIN-WILDCARD`, `DOMAIN-REGEX`, `GEOSITE` +- **IP-адреса**: `IP-CIDR`, `IP-CIDR6`, `IP-SUFFIX`, `IP-ASN`, `GEOIP` +- **Источник**: `SRC-GEOIP`, `SRC-IP-ASN`, `SRC-IP-CIDR`, `SRC-IP-SUFFIX` +- **Порты**: `DST-PORT`, `SRC-PORT` +- **Сеть**: `NETWORK` (TCP/UDP), `DSCP` +- **Входящие метаданные**: `IN-PORT`, `IN-TYPE`, `IN-USER`, `IN-NAME` +- **Процессы**: `PROCESS-PATH`, `PROCESS-NAME`, `UID` +- **Логические**: `AND`, `OR`, `NOT` +- **Ссылочные**: `RULE-SET`, `SUB-RULE` +- **Финальное**: `MATCH` — ловит весь трафик, не подошедший ни под одно правило выше + +## Порядок имеет значение + +Первое совпавшее правило выигрывает — весь трафик, подходящий под него, уходит на указанную политику, остальные правила игнорируются. + +```{.yaml linenums="1"} +rules: + - DOMAIN,ad.com,REJECT # реклама — в REJECT + - GEOSITE,youtube,DIRECT # ютуб — напрямую + - GEOIP,RU,DIRECT # российские IP — напрямую + - MATCH,PROXY # всё остальное — через прокси +``` + +Подробнее: [Правила маршрутизации](../config/rules/index.md). From 2a30e6621efe58212f12e6f943cff8cfbb252fd9 Mon Sep 17 00:00:00 2001 From: Zhoel Sherk Date: Mon, 25 May 2026 02:11:41 +0300 Subject: [PATCH 2/6] docs(dns): enhance ru DNS docs --- docs/config/dns/hosts.ru.md | 58 ++++++++++++++++++++++++++-- docs/config/dns/index.ru.md | 14 +++++-- docs/config/dns/type.ru.md | 75 +++++++++++++++++++++++++++++++++---- 3 files changed, 133 insertions(+), 14 deletions(-) diff --git a/docs/config/dns/hosts.ru.md b/docs/config/dns/hosts.ru.md index eba71ee2e..2b9120fef 100644 --- a/docs/config/dns/hosts.ru.md +++ b/docs/config/dns/hosts.ru.md @@ -1,5 +1,7 @@ # hosts +Блок **hosts** — встроенный аналог системного файла `/etc/hosts`. Mihomo отдаёт указанный IP для домена мгновенно, без обращения к внешним DNS-серверам. + ```{.yaml linenums="1"} hosts: '*.clash.dev': 127.0.0.1 @@ -8,9 +10,59 @@ hosts: baidu.com: google.com ``` -Ключи поддерживают [маску доменов](../../handbook/syntax.md#domain-wildcards) +## Включение + +Для активации блока `hosts` в корневом разделе `dns:` укажите: + +```{.yaml linenums="1"} +dns: + use-hosts: true # читать внутренний блок hosts + use-system-hosts: true # читать /etc/hosts операционной системы +``` + +## Синтаксис масок -Значения поддерживают строки/массивы, перенаправление доменов не поддерживает массивы +Mihomo поддерживает три формы записи: + +| Формат | Пример | Описание | +|--------|--------|----------| +| Точное совпадение | `'example.com': 1.1.1.1` | Срабатывает только на этот домен | +| Wildcard-маска | `'*.example.com': 2.2.2.2` | Покрывает поддомены, НЕ корень | +| Максимальный охват | `'+.example.com': 3.3.3.3` | Корень + все поддомены | !!! note - Полные доменные имена имеют более высокий приоритет, чем доменные имена с использованием масок, например: foo.example.com > \*.example.com > .example.com \ No newline at end of file + Полные доменные имена имеют приоритет над масками: `foo.example.com > *.example.com > +.example.com` + +## Сценарии применения + +### Локальная сеть (LAN) + +Назначение понятных имён устройствам в домашней сети: + +```{.yaml linenums="1"} +dns: + hosts: + 'nas.lan': 192.168.1.10 + 'router.keenetic': 192.168.1.1 +``` + +### Блокировка рекламы и телеметрии (null-routing) + +Отправка нежелательных доменов в несуществующий адрес `0.0.0.0` — запросы обрываются на уровне ядра, без нагрузки на CPU: + +```{.yaml linenums="1"} +dns: + hosts: + '*.telemetry.microsoft.com': 0.0.0.0 + '*.doubleclick.net': 0.0.0.0 +``` + +### Обход DNS-подмены провайдера (IP-pinning) + +Если провайдер подменяет DNS-ответы (DNS-hijacking), но целевой IP доступен напрямую — пропишите его жёстко: + +```{.yaml linenums="1"} +dns: + hosts: + 'example.com': 185.199.108.153 +``` diff --git a/docs/config/dns/index.ru.md b/docs/config/dns/index.ru.md index e51fa8d83..48fdc8034 100644 --- a/docs/config/dns/index.ru.md +++ b/docs/config/dns/index.ru.md @@ -58,8 +58,11 @@ dns: Поддерживаемые алгоритмы: -- lru: Least Recently Used (наименее недавно использованный), значение по умолчанию -- arc: Adaptive Replacement Cache (адаптивная замена кэша) +- `lru`: Least Recently Used (наименее недавно использованный), значение по умолчанию +- `arc`: Adaptive Replacement Cache (адаптивная замена кэша) + +!!! tip "" + `arc` эффективнее на неравномерных нагрузках, но потребляет немного больше памяти. ## prefer-h3 @@ -99,6 +102,9 @@ dns: Когда параметр `fake-ip-filter-mode` установлен в значение `rule`, включается режим на основе правил, и синтаксис `fake-ip-filter` изменяется: +!!! warning "Ограничения режима rule" + В режиме `rule` список `fake-ip-filter` принимает **только доменные** типы правил: `DOMAIN*`, `GEOSITE`, `RULE-SET`, `MATCH`. Строки `IP-CIDR,...`, `GEOIP,...` или `IP-ASN,...` приведут к ошибке парсинга: *rule type 'IP-CIDR' not supported, only domain-based rules allowed*. Исключения по подсетям задавайте в блоке `rules:`, а не в DNS-фильтре. + ```{.yaml linenums="1"} dns: fake-ip-filter-mode: rule @@ -114,7 +120,7 @@ dns: ## fake-ip-ttl -Настройте TTL, возвращаемый запросами fakeip; не изменяйте его без крайней необходимости. +Настройте TTL, возвращаемый запросами fakeip (по умолчанию 1 секунда). Не изменяйте без крайней необходимости. ## use-hosts @@ -170,7 +176,7 @@ DNS-сервер для разрешения доменных имен чере Резервные серверы разрешения доменных имен, обычно используются зарубежные DNS-серверы для обеспечения достоверности результатов. -После настройки `fallback` по умолчанию включается `fallback-filter` с `geoip-code` равным cn. +После настройки `fallback` по умолчанию включается `fallback-filter` с `geoip-code` равным cn. Для пользователей в РФ замените `geoip-code` на `RU` в явной конфигурации `fallback-filter`. ## fallback-filter diff --git a/docs/config/dns/type.ru.md b/docs/config/dns/type.ru.md index b1fafa346..2c26ce8d9 100644 --- a/docs/config/dns/type.ru.md +++ b/docs/config/dns/type.ru.md @@ -1,7 +1,11 @@ -# Поддерживаемые типы +# Поддерживаемые типы DNS + +В блоках `nameserver`, `fallback`, `default-nameserver` и `nameserver-policy` протокол определяется префиксом (схемой) перед адресом. ## UDP +Классический незашифрованный DNS. Префикс `udp://` можно опускать — запись `8.8.8.8` считается UDP. Самый быстрый, но легко перехватывается и подменяется провайдером. + ```{.yaml linenums="1"} - 223.5.5.5 - udp://223.5.5.5 @@ -9,23 +13,31 @@ ## TCP +DNS через TCP-соединение. Медленнее UDP, но защищает от простейшего спуфинга (подмены пакетов на лету). + ```{.yaml linenums="1"} - tcp://8.8.8.8 ``` -## DNS over TLS +## DNS over TLS (DoT) + +Трафик упаковывается в TLS-туннель. Провайдер видит факт подключения к серверу, но не содержимое запросов. ```{.yaml linenums="1"} - tls://1.1.1.1 ``` -## DNS over HTTPS +## DNS over HTTPS (DoH) + +Самый популярный шифрованный протокол. Запросы маскируются под обычный HTTPS-трафик, что затрудняет их блокировку. ```{.yaml linenums="1"} - https://doh.pub/dns-query ``` -## DNS over QUIC +## DNS over QUIC (DoQ) + +Современный шифрованный протокол на базе QUIC. Сочетает свойства DoT/DoH со скоростью UDP. ```{.yaml linenums="1"} - quic://dns.adguard.com:784 @@ -33,6 +45,8 @@ ## system +Принудительное использование системных DNS-настроек ОС (файл `/etc/resolv.conf` или настройки KeeneticOS). + ```{.yaml linenums="1"} - system:// - system @@ -40,11 +54,13 @@ ## dhcp +Динамический подхват DNS-серверов, полученных роутером по DHCP от конкретного интерфейса провайдера. + ```{.yaml linenums="1"} - dhcp://en0 ``` -Только для cmfa, использует системный dns +`dhcp://system` использует системный DNS: ```{.yaml linenums="1"} - dhcp://system @@ -52,11 +68,56 @@ ## rcode +Виртуальный тип, возвращающий клиенту статический DNS-ответ **без отправки запроса в интернет**. Используется в `nameserver-policy` для мгновенной блокировки или фильтрации. + ```{.yaml linenums="1"} - rcode://success # Нет ошибки - rcode://format_error # Ошибка формата - rcode://server_failure # Ошибка сервера -- rcode://name_error # Несуществующий домен +- rcode://name_error # NXDOMAIN — домен не существует - rcode://not_implemented # Не реализовано - rcode://refused # Запрос отклонен -``` \ No newline at end of file +``` + +!!! tip "Блокировка трекеров через rcode" + Используйте `rcode://name_error` в `nameserver-policy` для глухой блокировки рекламных и трекерных доменов быстрее и легче, чем через `hosts`. + +## Дополнительные параметры + +К URI публичных DNS-серверов можно добавлять хвост через `#` и `&`: + +```{.yaml linenums="1"} +dns: + nameserver: + - 'https://8.8.8.8/dns-query#proxy&ecs=1.1.1.1/24&ecs-override=true' +proxies: +- name: proxy + type: ss +``` + +### Прокси/интерфейс для соединения + +`#proxy` — использовать указанный прокси для DNS-запроса. `#RULES` — следовать правилам маршрутизации (аналог `respect-rules`). + +!!! note "" + Для запросов через прокси настройте `proxy-server-nameserver`, чтобы избежать проблемы курицы и яйца. + +### h3 + +Принудительный HTTP/3 для DoH-соединения. Не конфликтует с `prefer-h3`. + +### skip-cert-verify + +Пропуск проверки сертификата TLS. + +### ecs / ecs-override + +Указание подсети в EDNS Client Subnet. `ecs-override` принудительно заменяет адрес. + +### disable-ipv4 / disable-ipv6 + +Отбрасывание A или AAAA ответов соответственно. + +### disable-qtype-\ + +Отбрасывание определённых типов ответов. Например, `disable-qtype-65` блокирует разрешение HTTPS (TYPE65). From f8a186c1e30879adec4a9356a1182b9dc579ac05 Mon Sep 17 00:00:00 2001 From: Zhoel Sherk Date: Mon, 25 May 2026 02:11:57 +0300 Subject: [PATCH 3/6] docs(config): enhance ru config reference --- docs/config/experimental.ru.md | 22 ++++++++++++-- docs/config/general.ru.md | 8 ++++- docs/config/inbound/tun.ru.md | 3 ++ docs/config/ntp/index.ru.md | 20 +++++++++---- docs/config/sniff/index.ru.md | 54 ++++++++++++++++++++++++++-------- docs/config/sub-rule.ru.md | 36 +++++++++++++++++++++-- docs/config/tunnels.ru.md | 39 ++++++++++++++++++------ 7 files changed, 149 insertions(+), 33 deletions(-) diff --git a/docs/config/experimental.ru.md b/docs/config/experimental.ru.md index 3c974ca67..1409886ff 100644 --- a/docs/config/experimental.ru.md +++ b/docs/config/experimental.ru.md @@ -1,5 +1,7 @@ # Экспериментальная конфигурация +Блок **experimental** содержит низкоуровневые параметры оптимизации сетевого стека Go (движок `quic-go`) и преобразования IP-адресов. Может влиять на скорость QUIC-трафика (HTTP/3) и совместимость с ТСПУ провайдера. + ```{.yaml linenums="1"} experimental: quic-go-disable-gso: false @@ -9,12 +11,26 @@ experimental: ## quic-go-disable-gso -Отключить `GSO` +Отключение механизма Generic Segmentation Offload (GSO) для QUIC-трафика. + +- `false` (по умолчанию) — GSO включён. Сетевой стек формирует крупные блоки данных, нарезка на пакеты ложится на аппаратный чип сетевой карты. Рекомендуется для большинства роутеров. +- `true` — GSO отключён. Может помочь при обрывах голосовых звонков или ошибках в логе на старых драйверах Linux. ## quic-go-disable-ecn -Отключить `ECN` +Отключение Explicit Congestion Notification — механизма явного уведомления о перегрузках. + +- `false` (по умолчанию) — ECN активен. Позволяет роутерам и серверам предупреждать друг друга о перегрузках без сброса пакетов, снижая задержки. +- `true` — ECN отключён. Рекомендуется, если QUIC-протоколы (Hysteria2, TUIC) работают нестабильно — некоторые ТСПУ некорректно обрабатывают ECN-флаги. + +!!! warning "Для РФ" + Если Hysteria2 или TUIC работают с «плавающей» скоростью, попробуйте `quic-go-disable-ecn: true`. ## dialer-ip4p-convert -Включить преобразование адреса [IP4P](https://github.com/heiher/natmap/wiki/faq#域名访问是如何实现的) \ No newline at end of file +Включение преобразования адресов формата [IP4P](https://github.com/heiher/natmap/wiki/faq#域名访问是如何实现的). + +IP4P упаковывает IPv4-адрес и порт в один IPv6-адрес. Применяется в P2P-сетях (торренты, игровые лобби) для обхода NAT без UPnP. + +- `false` (по умолчанию) — выключено. Оставляйте, если нет задач под P2P/IP4P. +- `true` — включено. Mihomo конвертирует IP4P-адреса на лету для корректной маршрутизации. diff --git a/docs/config/general.ru.md b/docs/config/general.ru.md index c25a526f5..d544afb07 100644 --- a/docs/config/general.ru.md +++ b/docs/config/general.ru.md @@ -232,7 +232,7 @@ unified-delay: true ## TCP одновременность -Включить одновременные TCP-соединения, которые будут использовать все IP-адреса, разрешенные DNS для соединений, используя первое успешное соединение. +Включить одновременные TCP-соединения, которые будут использовать все IP-адреса, разрешенные DNS для соединений, используя первое успешное соединение. Значительно ускоряет открытие сайтов. Возможные значения: `true/false` @@ -298,6 +298,9 @@ geodata-mode: true * `standard`: стандартный загрузчик * `memconservative`: загрузчик, оптимизированный для устройств с ограниченной памятью (значение по умолчанию) +!!! tip "Для домашних роутеров" + Режим `memconservative` удерживает базы гео-данных на флеш-накопителе, загружая в ОЗУ только нужные фрагменты. Предотвращает падение ядра по нехватке памяти (OOM). Настоятельно рекомендуется для Keenetic и других роутеров с ограниченной памятью. + ```{.yaml linenums="1"} geodata-loader: memconservative ``` @@ -308,6 +311,9 @@ geodata-loader: memconservative geo-auto-update: false ``` +!!! warning "Для Keenetic с XKeen" + Если вы используете XKeen, установите `geo-auto-update: false` — XKeen сам обновляет гео-базы через свои скрипты по крону. Включение автообновления в ядре может привести к конфликтам. + Интервал обновления в часах ```{.yaml linenums="1"} diff --git a/docs/config/inbound/tun.ru.md b/docs/config/inbound/tun.ru.md index 1878cb9f0..116704d66 100644 --- a/docs/config/inbound/tun.ru.md +++ b/docs/config/inbound/tun.ru.md @@ -93,6 +93,9 @@ tun: Автоматическая настройка глобальной маршрутизации, автоматически направляет весь глобальный трафик в TUN-устройство +!!! warning "Для Keenetic + XKeen" + Включение `auto-route: true` на роутере с XKeen часто означает захват дефолтного маршрута всей системы и конфликтует с цепочкой **nftables → nfqws → tproxy Mihomo**. Это может привести к петлям маршрутизации или обходу nfqws. На типичном Keenetic+XKeen чаще используют прозрачный tproxy-порт, а не полный TUN-захват. Перед включением TUN ознакомьтесь со схемой маршрутов и mark. + ## auto-redirect Поддерживается только на Linux, автоматически настраивает iptables/nftables для перенаправления TCP-соединений, требует включенного `auto-route` diff --git a/docs/config/ntp/index.ru.md b/docs/config/ntp/index.ru.md index 082be874d..f4e1f2c5e 100644 --- a/docs/config/ntp/index.ru.md +++ b/docs/config/ntp/index.ru.md @@ -1,5 +1,7 @@ # NTP +Блок **ntp** запускает встроенную службу синхронизации времени внутри ядра Mihomo. Точное время необходимо для проверки TLS-сертификатов, временных токенов (VMess/VLESS) и успешного рукопожатия с удалённым VPS. + ```{.yaml linenums="1"} ntp: enable: true @@ -11,20 +13,28 @@ ntp: ## enable -Включение службы NTP +Включение или выключение встроенной службы NTP. ## write-to-system -Синхронизировать со временем системы, требуется запуск от root или с правами администратора. +Синхронизация полученного времени с системными часами устройства. + +!!! warning "Права доступа" + Для работы параметра требуется запуск от `root` (Linux/Entware) или Администратора (Windows). ## server -Адрес сервера NTP, по умолчанию `time.apple.com` +Хост NTP-сервера. Примеры: `pool.ntp.org`, `time.google.com`, `time.apple.com`. + +Указывайте реальное имя хоста, а не URL со схемой `http://`. ## port -Порт сервера NTP, по умолчанию `123` +Порт NTP-сервера. Стандартный — `123` (UDP). Изменение без необходимости на стороне сервера не требуется. ## interval -Интервал синхронизации времени в минутах, по умолчанию 30 минут \ No newline at end of file +Интервал между синхронизациями в минутах. По умолчанию — 30. + +!!! tip "Для Keenetic" + На Keenetic уже есть встроенная синхронизация времени. Но если при загрузке или сбое сети время «уплывает», NTP-модуль Mihomo служит страховкой: при первом подключении к сети он корректирует часы, предотвращая `TLS handshake timeout` на прокси-узлах. diff --git a/docs/config/sniff/index.ru.md b/docs/config/sniff/index.ru.md index 0e39d1ff6..59b2d0621 100644 --- a/docs/config/sniff/index.ru.md +++ b/docs/config/sniff/index.ru.md @@ -1,11 +1,13 @@ -# Обнаружение доменов +# Сниффинг доменов + +Блок **sniffer** перехватывает трафик на сетевом уровне и «заглядывает» внутрь пакетов (без расшифровки контента), чтобы прочитать SNI/hostname. Это критически важно в режиме `fake-ip` или когда приложения обращаются к серверам по IP без DNS-запроса. ```{.yaml linenums="1"} sniffer: - enable: false + enable: true force-dns-mapping: true parse-pure-ip: true - override-destination: false + override-destination: true sniff: HTTP: ports: [80, 8080-8880] @@ -26,39 +28,65 @@ sniffer: ## enable -Включить или отключить sniffer. +Включение или отключение сниффера. ## force-dns-mapping -Принудительное обнаружение для трафика типа `redir-host`. +Принудительное сопоставление доменов для режима `redir-host`. ## parse-pure-ip -Принудительное обнаружение для всего трафика, для которого не удалось получить доменное имя. +Сниффер анализирует любой «чистый» IP-трафик, для которого не было обнаружено доменное имя. ## override-destination -Использовать ли результат обнаружения в качестве фактического адреса доступа, по умолчанию true. +Перезаписывать оригинальный IP-адрес назначения тем адресом, который сниффер получил после определения домена. Рекомендуется `true`. ## sniff -Настройки протоколов для обнаружения, поддерживаются только `HTTP`/`TLS`/`QUIC`. +Настройки протоколов для сниффинга. Поддерживаются только `HTTP`, `TLS`, `QUIC`. - `ports`: [диапазоны портов](../../handbook/syntax.md#port-ranges) -- `override-destination`: переопределяет глобальную настройку `override-destination` +- `override-destination`: переопределяет глобальную настройку `override-destination` для конкретного протокола ## force-domain -Список доменов для принудительного обнаружения, использует [подстановочные знаки доменов](../../handbook/syntax.md#domain-wildcards). +Список доменов для принудительного сниффинга, поддерживает [подстановочные знаки доменов](../../handbook/syntax.md#domain-wildcards). ## skip-domain -Список доменов для пропуска обнаружения, использует [подстановочные знаки доменов](../../handbook/syntax.md#domain-wildcards). +Список доменов, которые сниффер **не должен** обрабатывать. + +!!! tip "Совместная работа с nfqws2 — пример" + Если вы используете nfqws2 (zapret), стоит занести в `skip-domain` зоны, где подмена адреса после сниффинга нежелательна. Иначе sniffer может расходиться с тем, что уже «исправил» nfqws: + ```yaml + sniffer: + sniff: + TLS: + ports: [443, 8443] + skip-domain: + - 'geosite:google' + - 'geosite:discord' + - 'geosite:youtube' + - 'geosite:ru' + HTTP: + ports: [80, 8080-8880] + skip-domain: + - 'geosite:google' + - 'geosite:discord' + - 'geosite:ru' + QUIC: + ports: [443, 5055, 5056] + skip-domain: + - 'geosite:google' + - 'geosite:discord' + - 'geosite:ru' + ``` ## skip-src-address -Список диапазонов исходных IP-адресов для пропуска обнаружения. +Список диапазонов исходных IP-адресов, для которых сниффер отключён. Полезно, чтобы запретить сниффинг для конкретного устройства (ТВ, приставка). ## skip-dst-address -Список диапазонов целевых IP-адресов для пропуска обнаружения. \ No newline at end of file +Список диапазонов целевых IP-адресов, которые сниффер игнорирует (например, DNS-сервера или локальные адреса провайдера). diff --git a/docs/config/sub-rule.ru.md b/docs/config/sub-rule.ru.md index 23c4d2bc0..b01f1c1bf 100644 --- a/docs/config/sub-rule.ru.md +++ b/docs/config/sub-rule.ru.md @@ -1,4 +1,6 @@ -# SUB-RULE +# Подправила (SUB-RULE) + +Блок **sub-rules** — подсистема изолированных списков правил. Работают как «подпрограммы»: можно вынести специфическую логику из глобального `rules:` и вызывать по имени. ```{.yaml linenums="1"} sub-rules: @@ -9,4 +11,34 @@ sub-rules: - IP-CIDR,1.1.1.1/32,REJECT - IP-CIDR,8.8.8.8/32,ss1 - DOMAIN,dns.alidns.com,REJECT -``` \ No newline at end of file +``` + +## Вызов из rules + +Через селектор `SUB-RULE` в глобальном блоке `rules:`: + +```{.yaml linenums="1"} +rules: + - SUB-RULE,(NETWORK,tcp),sub-rule2 # если TCP — проверить в sub-rule2 + - GEOSITE,google,PROXY + - MATCH,DIRECT +``` + +## Привязка к listener + +Можно заставить конкретный входящий порт обрабатывать трафик по уникальным правилам, игнорируя глобальный блок `rules:`: + +```{.yaml linenums="1"} +listeners: + - name: guest-socks + type: socks + port: 10890 + rule: rule1 # трафик на этом порту обрабатывается только sub-rule1 +``` + +!!! tip "Применение" + Изолированные «гостевые» порты или порты для детского интернета с жёстким чёрным списком. + +## Преимущество + +Sub-rules снижают нагрузку на CPU: вместо прогона каждого пакета по огромному глобальному списку правил Mihomo отправляет пакет в короткий специализированный список по условию (протокол, порт и т.д.). diff --git a/docs/config/tunnels.ru.md b/docs/config/tunnels.ru.md index 0d692b8e6..2a4892363 100644 --- a/docs/config/tunnels.ru.md +++ b/docs/config/tunnels.ru.md @@ -1,6 +1,6 @@ -# TUNNEL +# TUNNEL (Туннели) -Туннель для переадресации трафика, способный пересылать трафик TCP/UDP, а также может передаваться через прокси. +Туннель для переадресации трафика. Mihomo открывает локальный порт и перенаправляет все входящие TCP/UDP-пакеты на заданный целевой сервер, минуя блок `rules:`. Трафик может дополнительно упаковываться в выбранный прокси-туннель. ```{.yaml linenums="1"} tunnels: @@ -18,6 +18,8 @@ tunnels: - tcp/udp,127.0.0.1:6553,8.8.8.8:53,proxy ``` +Формат: `протокол,локальный_адрес:порт,целевой_адрес:порт,имя_прокси` + ## Многострочный вариант ```{.yaml linenums="1"} @@ -28,22 +30,41 @@ tunnels: proxy: proxy ``` -В однострочном примере порядок соответствует многострочному варианту: `network`/`address`/`target`/`proxy`. - ### network -Тип сети для прослушивания, может быть tcp/udp. +Тип сети для прослушивания: `tcp`, `udp` или `[tcp, udp]` (строка `tcp/udp`). ### address -Локальный адрес прослушивания. +Локальный адрес прослушивания. `127.0.0.1:port` — доступен только на самом роутере; `0.0.0.0:port` — доступен всем устройствам в локальной сети. ### target -Целевой адрес для переадресации. +Целевой адрес для переадресации (IP или домен + порт). ### proxy -Опционально, трафик отправляется через определенный `proxies`/`proxy-groups`. +Опционально. Если указано, трафик туннеля идёт через заданный `proxies`/`proxy-groups`. Если удалить — трафик идёт напрямую (DIRECT). + +## Сценарии использования + +### Защита DNS (DNS Tunneling) -В примере выше, доступ к `127.0.0.1:6553` перенаправляется через `proxy` из `proxies`/`proxy-groups` для доступа к `8.8.8.8:53`. \ No newline at end of file +Открыть локальный порт, направить на Google DNS через прокси — все DNS-запросы пойдут в зашифрованном туннеле, защищённые от DNS-hijacking: + +```{.yaml linenums="1"} +tunnels: +- tcp/udp,127.0.0.1:6553,8.8.8.8:53,Riga-VLESS +``` + +### Проброс игрового сервера или БД + +Создать прямой мост до конкретного сервера через прокси с низким пингом, минуя общие правила маршрутизации: + +```{.yaml linenums="1"} +tunnels: +- network: [tcp, udp] + address: 0.0.0.0:25565 + target: mc.example.com:25565 + proxy: Gaming-Proxy +``` From 2bf6aa10e502e93d325cbed2accd4caa4607497b Mon Sep 17 00:00:00 2001 From: Zhoel Sherk Date: Mon, 25 May 2026 02:12:17 +0300 Subject: [PATCH 4/6] docs(proxies): enhance ru proxy/routing docs --- docs/config/proxies/index.ru.md | 3 +++ docs/config/proxies/tls.ru.md | 3 +++ docs/config/proxies/vless.ru.md | 6 +++++ docs/config/proxy-groups/index.ru.md | 6 ++++- docs/config/proxy-groups/url-test.ru.md | 5 +++- docs/config/proxy-providers/index.ru.md | 3 +++ docs/config/rule-providers/content.ru.md | 12 ++++++--- docs/config/rules/index.ru.md | 34 +++++++++++++----------- 8 files changed, 52 insertions(+), 20 deletions(-) diff --git a/docs/config/proxies/index.ru.md b/docs/config/proxies/index.ru.md index a60bd22d0..e2411e836 100644 --- a/docs/config/proxies/index.ru.md +++ b/docs/config/proxies/index.ru.md @@ -52,6 +52,9 @@ proxies: Версия IP, используемая прокси для исходящих соединений. Если это не direct, влияет на IP-адрес, используемый при разрешении имени сервера. +!!! tip "Совместимость с nfqws" + При использовании nfqws2 рекомендуется `ipv4` или `ipv4-prefer` — меньше обходов через IPv6, которые nfqws может не учитывать. + Допустимые значения: `dual`/`ipv4`/`ipv6`/`ipv4-prefer`/`ipv6-prefer`, по умолчанию `dual` * ipv4: Использовать только IPv4 diff --git a/docs/config/proxies/tls.ru.md b/docs/config/proxies/tls.ru.md index edfedcb1d..a32f3a79c 100644 --- a/docs/config/proxies/tls.ru.md +++ b/docs/config/proxies/tls.ru.md @@ -75,6 +75,9 @@ openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem !!! note Возможные значения: `chrome`, `firefox`, `safari`, `iOS`, `android`, `edge`, `360`, `qq`, `random`. При выборе `random` генерируется отпечаток современного браузера на основе данных вероятности Cloudflare Radar. +!!! tip "Обход DPI" + Установка `client-fingerprint` (например, `chrome`) заставляет Mihomo имитировать структуру TLS-рукопожатия браузера, что защищает соединение от активного зондирования системами DPI. + ## reality-opts Настройки reality, если не пусто, включает reality diff --git a/docs/config/proxies/vless.ru.md b/docs/config/proxies/vless.ru.md index de07b34ad..3cea9968c 100644 --- a/docs/config/proxies/vless.ru.md +++ b/docs/config/proxies/vless.ru.md @@ -49,6 +49,9 @@ proxies: Кодирование UDP-пакетов, если пусто, используется оригинальное кодирование. Возможные значения: `packetaddr` (поддерживается `v2ray 5+`) / `xudp` (поддерживается `xray`) +!!! tip "Для Keenetic" + На роутерах Keenetic рекомендуется `xudp` — он критически важен для стабильной работы голосовых каналов Discord и онлайн-игр без потерь датаграмм. + ## encryption Конфигурация клиента шифрования Vless: @@ -73,4 +76,7 @@ proxies: Транспортный уровень, поддерживает ws/http/h2/grpc/xhttp, если не настроен или настроен с другим значением, используется tcp +!!! warning "XTLS Vision + smux" + При использовании `flow: xtls-rprx-vision` мультиплексирование (`smux.enabled`) должно быть отключено — XTLS Vision несовместим с mux. + См. [Конфигурация транспортного уровня](./transport.md) diff --git a/docs/config/proxy-groups/index.ru.md b/docs/config/proxy-groups/index.ru.md index 6a67238ff..38b586ca4 100644 --- a/docs/config/proxy-groups/index.ru.md +++ b/docs/config/proxy-groups/index.ru.md @@ -28,6 +28,7 @@ proxy-groups: exclude-type: "Shadowsocks|Http" expected-status: 204 hidden: true + icon: "https://example.com/icon.png" icon: xxx ``` @@ -57,13 +58,16 @@ proxy-groups: !!! note Проверяются только прокси из поля proxies группы прокси, но не прокси из наборов прокси (proxy-providers), подключенных через use. +!!! tip "Рекомендуемый URL" + `http://www.gstatic.com/generate_204` — сервер отвечает `204 No Content` маленьким телом, удобно для замера задержки. При использовании этого URL в сочетании с `expected-status: 204` проверка будет максимально лёгкой. + ## interval Интервал проверки работоспособности; если не равен 0, включается периодическое тестирование, измеряется в секундах. ## lazy -Ленивое состояние, по умолчанию `true`. Если текущая группа прокси не выбрана, тестирование не выполняется. +Ленивое состояние, по умолчанию `true`. Если текущая группа прокси не выбрана (не используется ни одним правилом), тестирование не выполняется — экономит CPU и трафик на роутере. ## timeout diff --git a/docs/config/proxy-groups/url-test.ru.md b/docs/config/proxy-groups/url-test.ru.md index dba6ca7e9..66cffae10 100644 --- a/docs/config/proxy-groups/url-test.ru.md +++ b/docs/config/proxy-groups/url-test.ru.md @@ -19,4 +19,7 @@ proxy-groups: ## tolerance -Допустимая погрешность при переключении узлов, измеряется в миллисекундах (мс). \ No newline at end of file +Допустимая погрешность при переключении узлов, измеряется в миллисекундах (мс). Если разница задержек между узлами меньше tolerance, переключения не происходит — это предотвращает «скачки» между серверами с близкими пингами. + +!!! tip "" + Рекомендуемое значение — `50` (мс). Слишком маленькое значение вызовет частые переключения, слишком большое — сделает группу нечувствительной к изменениям. \ No newline at end of file diff --git a/docs/config/proxy-providers/index.ru.md b/docs/config/proxy-providers/index.ru.md index 12e91605d..e9cce0fb9 100644 --- a/docs/config/proxy-providers/index.ru.md +++ b/docs/config/proxy-providers/index.ru.md @@ -166,6 +166,9 @@ proxy-providers: Фильтрация узлов, соответствующих ключевым словам или [регулярным выражениям](https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md), несколько регулярных выражений можно разделить символом `. +!!! tip "Примеры" + `"(?i)riga|lv|latvia"` — оставить только узлы с Riga, LV или Latvia в имени (флаг `(?i)` отключает регистр). Для нескольких условий используйте `|` внутри одного regex. + ## exclude-filter Исключение узлов, соответствующих ключевым словам или [регулярным выражениям](https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md), несколько регулярных выражений можно разделить символом `. diff --git a/docs/config/rule-providers/content.ru.md b/docs/config/rule-providers/content.ru.md index d731b0634..84feab0fc 100644 --- a/docs/config/rule-providers/content.ru.md +++ b/docs/config/rule-providers/content.ru.md @@ -31,7 +31,10 @@ ## domain -Содержимое набора правил `domain` должно соответствовать [подстановочным знакам clash](../../handbook/syntax.md#domain-wildcards). +Содержимое набора правил `domain` должно соответствовать [подстановочным знакам clash](../../handbook/syntax.md#domain-wildcards). **Важно:** синтаксис масок здесь подчиняется правилам wildcards оригинального Clash, а не Mihomo — ведущая точка (`.blogger.com`) включает и корень, и поддомены. + +!!! tip "Производительность" + Тип `domain` компилируется в Trie-дерево в памяти для мгновенного поиска по миллионам записей без нагрузки на CPU. === "yaml" ```{.yaml linenums="1"} @@ -50,15 +53,18 @@ ## ipcidr +!!! tip "Производительность" + Тип `ipcidr` оптимизирован через Radix Tree для эффективной работы с большими списками IP-диапазонов (например, списки антифильтра). + === "yaml" ```{.yaml linenums="1"} payload: - '192.168.1.0/24' - - '10.0.0.0.1/32' + - '10.0.0.1/32' ``` === "text" ```text 192.168.1.0/24 - 10.0.0.0.1/32 + 10.0.0.1/32 ``` \ No newline at end of file diff --git a/docs/config/rules/index.ru.md b/docs/config/rules/index.ru.md index 005afae61..ad274679a 100644 --- a/docs/config/rules/index.ru.md +++ b/docs/config/rules/index.ru.md @@ -153,14 +153,9 @@ rules: Сопоставляет по полному пути процесса. -### DOMAIN-WILDCARD - -Используется сопоставление путей обработки с помощью символов подстановки, поддерживаются только символы подстановки `*` и `?`. +### PROCESS-PATH-WILDCARD -Здесь символ `*` соответствует нулю или более символам, а символ `?` соответствует ровно одному символу. - -!!! note - Обратите внимание, что используемые здесь подстановочные знаки отличаются от [подстановочных знаков формата Clash](../../handbook/syntax.md#domain-wildcards) в других местах конфигурационного файла. +Сопоставление по подстановочным знакам для пути процесса, поддерживает только `*` и `?`. ### PROCESS-PATH-REGEX @@ -170,14 +165,9 @@ rules: Сопоставляет по имени процесса; на платформе `Android` может сопоставлять имена пакетов. -### DOMAIN-WILDCARD +### PROCESS-NAME-WILDCARD -Использует сопоставление по подстановочным знакам в именах процессов, поддерживая только подстановочные знаки `*` и `?`. На платформе Android также может сопоставлять имена пакетов. - -Здесь символ `*` соответствует нулю или более символам, а символ `?` соответствует ровно одному символу. - -!!! note - Обратите внимание, что используемые здесь подстановочные знаки отличаются от [подстановочных знаков формата Clash](../../handbook/syntax.md#domain-wildcards) в других местах конфигурационного файла. +Сопоставление по подстановочным знакам для имени процесса, поддерживает только `*` и `?`. На платформе Android также может сопоставлять имена пакетов. ### PROCESS-NAME-REGEX @@ -229,4 +219,18 @@ rules: Поддерживает только правила, касающиеся `целевого IP`. -Преобразует сопоставление `целевого IP` в сопоставление `исходного IP`. +Преобразует сопоставление `целевого IP` в сопоставление `исходного IP`. + +## Типичные ошибки + +### GEOIP вместо GEOSITE + +`GEOIP` сопоставляет только **код страны** (двухбуквенный ISO: `RU`, `CN`, `US`). Правила вида `GEOIP,discord`, `GEOIP,chatgpt`, `GEOIP,antifilter` **не работают** как ожидается — для сервисов используйте `GEOSITE`, `DOMAIN`, `RULE-SET` или `IP-CIDR`/`IP-ASN`. + +### DOMAIN с IP-адресом + +`DOMAIN` ожидает **имя хоста** (FQDN), а не IPv4/IPv6 и не CIDR. Для адресов и подсетей используйте `IP-CIDR` / `IP-CIDR6` (при необходимости с `no-resolve`). + +### fake-ip-filter-mode: rule + IP-CIDR + +В `fake-ip-filter` при `fake-ip-filter-mode: rule` допустимы **только доменные** селекторы (`DOMAIN*`, `GEOSITE`, `RULE-SET`, `MATCH`). `IP-CIDR`, `GEOIP` и `IP-ASN` вызовут ошибку парсинга. From e96eb7896dedfcf3798143a0f09999be9f2c37f2 Mon Sep 17 00:00:00 2001 From: Zhoel Sherk Date: Mon, 25 May 2026 02:12:33 +0300 Subject: [PATCH 5/6] docs: add integration tips for Keenetic ecosystem (XKeen, nfqws2, sign-craze) --- docs/startup/client/client.ru.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/startup/client/client.ru.md b/docs/startup/client/client.ru.md index 3378b964e..8fa12ca68 100644 --- a/docs/startup/client/client.ru.md +++ b/docs/startup/client/client.ru.md @@ -143,3 +143,22 @@ |:----|:----|:----| |[DeckyClash](https://github.com/chenx-dust/DeckyClash)|поддерживается | |[ToMoon](https://github.com/YukiCoco/ToMoon)|поддерживается | + +## Keenetic (Entware) + +Инструменты для роутеров Keenetic, которые работают поверх Mihomo или рядом с ним. + +| Проект | Назначение | +|--------|------------| +| [XKeen](https://github.com/Corvus-Malus/XKeen) | Установка и оркестрация Mihomo (и/или Xray) на Entware, бэкапы, обновление ядер и геофайлов, настройка iptables для прозрачного прокси (TProxy/Mixed/Redirect). | +| [XKeen-UI](https://github.com/zxc-rv/XKeen-UI) | Веб-панель мониторинга и управления XKeen + Mihomo: логи, редактирование конфигов, переключение ядер, Clash API. | +| [nfqws2-keenetic](https://github.com/nfqws/nfqws2-keenetic) | Пакеты DPI-обхода: модификация TCP/UDP на уровне NFQUEUE (ветка zapret). Работает параллельно с Mihomo, но требует согласования DNS, sniffer и правил — особенно `fake-ip-filter` и `skip-domain`. | +| [sign-craze](https://github.com/kittylabassistant/sign-craze) | Оркестратор ядер (sing-box / xray / mihomo), iptables/ipset, опционально nfqws2. Свой Web UI на портах 9090–9092. | + +!!! warning "Типичные конфликты" + - **TUN vs tproxy**: корневой `tun.auto-route: true` перехватывает маршрут по умолчанию и конфликтует с уже настроенной цепочкой nftables → nfqws → tproxy. Типичная схема на Keenetic — прозрачный tproxy-порт Mihomo без полного TUN-захвата. + - **DNS / fake-ip**: для доменов, которые nfqws целит по имени, задавайте `real-ip` в `fake-ip-filter` или ранний `DIRECT` в `rules:` — чтобы Mihomo не подменял ответ DNS. + - **Sniffer**: в `skip-domain` заносите зоны `geosite:ru`, `geosite:google`, `geosite:youtube`, `geosite:discord` — иначе sniffer разойдётся с тем, что уже «исправил» nfqws. + - **Порты API**: sign-craze использует 9090–9092; Mihomo по умолчанию тоже `external-controller: …:9090`. Разведите порты в `config.yaml`. + - **Два оркестратора**: XKeen и sign-craze не стоит запускать одновременно для одной роли — каждый ставит свои iptables-правила и может перезаписывать бинарники. + - **QUIC**: решите, кто отвечает за QUIC — Mihomo (REJECT в `rules:`) или nfqws — не дублируйте без понимания. From 0674ffab886de4b19779beb6b0f7e949eaae3af0 Mon Sep 17 00:00:00 2001 From: Zhoel Sherk Date: Mon, 25 May 2026 02:12:52 +0300 Subject: [PATCH 6/6] docs(startup): enhance web panel guide; i18n: add missing nav_translations --- docs/startup/web.ru.md | 73 ++++++++++++++++++++++++++++++++++++++++-- mkdocs.yml | 55 ++++++++++++++++++++++++++++++- 2 files changed, 124 insertions(+), 4 deletions(-) diff --git a/docs/startup/web.ru.md b/docs/startup/web.ru.md index bb4100df0..53973ed99 100644 --- a/docs/startup/web.ru.md +++ b/docs/startup/web.ru.md @@ -1,6 +1,73 @@ +# Веб-интерфейсы: Mihomo API, Yacd-meta, metacubexd, XKeen-UI, Zashboard -[Yacd](http://yacd.metacubex.one) +Mihomo поддерживает несколько веб-интерфейсов для управления через REST API. Панели — это статический фронтенд, который отправляет запросы к HTTP API ядра. -[Metacubexd](http://d.metacubex.one) +## REST API (Controller) -[zashboard](http://board.zash.run.place/) +Mihomo поднимает HTTP API на адресе, заданном в `external-controller`. + +| Параметр конфига | Назначение | +|--------------------|------------| +| `external-controller` | `IP:порт` API (на роутере часто `0.0.0.0:9090` для доступа из LAN). | +| `secret` | Токен в заголовке `Authorization: Bearer …` (обязательно задать при доступе не только с localhost). | +| `external-ui` | Путь к **распакованной** папке UI на диске рядом с `-d`. | +| `external-ui-url` | URL **zip**-архива с UI — ядро может скачать/обновить. | +| `external-ui-name` | Подкаталог URL вида `http://…:9090/ui/`. | +| `allow-lan` | Должен быть `true`, если заходите к API/UI с других машин. | + +Типичный адрес после настройки: `http://:9090/ui/` (или с `external-ui-name`). + +!!! warning "Безопасность" + Не оставляйте `secret: ""` и `0.0.0.0:9090` без файрвола — любой в LAN сможет менять маршрутизацию и читать статистику. + +### Пример конфигурации + +```{.yaml linenums="1"} +external-controller: 0.0.0.0:9090 +secret: "ваш_пароль" +external-ui: /opt/etc/mihomo/ui +external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip" +``` + +## Официальные панели + +| Панель | Ссылка | Описание | +|--------|--------|----------| +| [Yacd-meta](https://github.com/MetaCubeX/Yacd-meta) | [http://yacd.metacubex.one](http://yacd.metacubex.one) | Форк Yet Another Clash Dashboard под Mihomo: лёгкая панель, привычный интерфейс «прокси / правила / лог». | +| [Metacubexd](https://github.com/MetaCubeX/metacubexd) | [http://d.metacubex.one](http://d.metacubex.one) | «Домашняя» панель MetaCubeX, активно развивается, часто используется как дефолтный `external-ui-url`. Удобно сочетать с `profile.store-selected` — выбор узлов сохраняется между перезапусками. | +| [Zashboard](http://board.zash.run.place) | [http://board.zash.run.place](http://board.zash.run.place) | Лёгкая панель, устанавливается аналогично. | + +## XKeen-UI + +Веб-интерфейс для установщика [XKeen](https://github.com/Corvus-Malus/XKeen) на роутерах Keenetic. Это не встроенная панель бинарника Mihomo: XKeen-UI помогает настраивать окружение XKeen (в т.ч. Mihomo, nfqws, Xray). + +Интегрируется через файловую систему роутера и автоматически обнаруживает API Mihomo. Если UI предлагает ввести URL или адрес API Mihomo, укажите тот же хост/порт, что в `external-controller`, и тот же `secret`. + +## sign-craze + +Отдельная Go-утилита для Keenetic + Entware: управление iptables/ipset, установка и переключение ядер (sing-box, xray, mihomo), опционально nfqws2 для DPI. По README проекта при включённом Web UI слушаются порты: + +| Порт | Назначение | +|------|------------| +| 9090 | Zashboard (дашборд) | +| 9091 | admin API | +| 9092 | Routing Editor | + +!!! warning "Конфликт портов с Mihomo" + У Mihomo типичный `external-controller` — тоже HTTP API, часто на `0.0.0.0:9090`. Если на одном хосте работают sign-craze и Mihomo с одним портом, один из сервисов не поднимется. Смените `external-controller` в `config.yaml` Mihomo на другой порт (например, 9093) или следуйте рекомендациям sign-craze. + +## Сравнение + +| Проект | К чему подключается | Типичный сценарий | +|--------|---------------------|-------------------| +| XKeen-UI | XKeen на Keenetic | Установка, сценарии, связка с Mihomo/nfqws | +| Yacd-meta | REST Mihomo | Универсальная лёгкая панель | +| Metacubexd | REST Mihomo | Рекомендуемая панель Meta, близка к актуальным фичам ядра | +| sign-craze | sing-box / xray / mihomo + свой UI | Файрвол, DPI (nfqws2), переключение ядра | +| Zashboard | REST Mihomo | Лёгкая альтернатива | + +## Доступ из локальной сети + +Для доступа к веб-панели с других устройств (ПК, смартфон) укажите `external-controller: 0.0.0.0:9090` и настройте `secret`. + +Подробнее: [Общие настройки](../config/general.md#external-control-api). diff --git a/mkdocs.yml b/mkdocs.yml index d540ac24b..b7fff27de 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -207,8 +207,61 @@ plugins: 内置代理策略: Встроенные исходящие соединения 内置代理组: Предопределенные группы прокси + # Proxies protocols + hosts: Файл hosts + Tun: TUN + dialer-proxy: Dialer-прокси + DIRECT: Прямое подключение + DNS: DNS + HTTP: HTTP + SOCKS: SOCKS + Shadowsocks: Shadowsocks + ShadowsocksR: ShadowsocksR + Snell: Snell + VMess: VMess + VLESS: VLESS + Trojan: Trojan + AnyTLS: AnyTLS + Mieru: Mieru + Sudoku: Sudoku + Hysteria: Hysteria + Hysteria2: Hysteria2 + TUIC: TUIC + WireGuard: WireGuard + Tailscale: Tailscale + SSH: SSH + MASQUE: MASQUE + TrustTunnel: TrustTunnel + OpenVPN: OpenVPN + + # Listener protocols + listeners: Слушатели + http: HTTP + socks: SOCKS + mixed: Mixed + redirect: Redirect + tproxy: TProxy + tun: TUN + ShadowSocks: ShadowSocks + VMess: VMess + VLESS: VLESS + Trojan: Trojan + AnyTLS: AnyTLS + Mieru: Mieru + Sudoku: Sudoku + TUIC v4: TUIC v4 + TUIC v5: TUIC v5 + Hysteria2: Hysteria2 + Hysteria2 Realm: Hysteria2 Realm + TrustTunnel: TrustTunnel + tunnel: Tunnel + + # Other + NTP: NTP + APIs: API + - git-revision-date-localized: - locale: zh + locale: zh nav: - 简介: index.md