Что такое конфигурация Clash Mi и зачем она нужна
Clash Mi — это графическая оболочка для ядра Mihomo (ранее Clash Meta), которая позволяет гибко управлять проксированием трафика на устройствах Xiaomi и других Android-смартфонах. Основной файл конфигурации имеет формат YAML и определяет все параметры работы: список прокси-серверов, группы политик, правила маршрутизации, настройки DNS и TUN. Без правильно составленного config.yaml приложение не сможет корректно направлять трафик.
Файл конфигурации можно получить двумя способами: скачать готовую подписку от провайдера VPN или создать вручную. Ручная настройка даёт полный контроль над тем, какие сайты и приложения идут через прокси, а какие напрямую. Это особенно полезно, если вы используете собственный сервер с 3X-UI или аналогичной панелью.
Основные разделы конфигурации: proxies (прокси-узлы), proxy-groups (группы политик), rules (правила маршрутизации), dns (настройки DNS), tun (режим TUN) и общие параметры (порт, режим работы, логирование). Каждый раздел имеет свой синтаксис и требует внимательного заполнения.
Основы синтаксиса YAML для конфигурации Clash
YAML (YAML Ain't Markup Language) — это формат сериализации данных, ориентированный на удобство чтения. Для корректной работы конфигурации Clash необходимо соблюдать несколько строгих правил:
- Отступы делаются только пробелами, табуляция запрещена. Обычно используется 2 пробела на уровень вложенности.
- После двоеточия в паре ключ-значение обязательно ставится пробел:
key: value. - Списки обозначаются дефисом с пробелом:
- элемент. - Комментарии начинаются с символа
#и игнорируются ядром.
Пример базовых настроек:
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090Ошибка в отступах — самая частая причина неработающей конфигурации. Используйте редакторы с подсветкой синтаксиса YAML (VS Code, Notepad++ с плагином) или онлайн-валидаторы для проверки.
Общие настройки ядра Mihomo
Раздел общих настроек определяет глобальное поведение Clash. Ключевые параметры:
- allow-lan: разрешает другим устройствам в локальной сети использовать прокси-порты Clash. Значение
trueоткрывает доступ,false— запрещает. Для безопасности на мобильных устройствах обычно оставляютfalse. - bind-address: привязка к конкретному IP-адресу.
"*"означает все интерфейсы. - mode: режим работы.
rule— маршрутизация по правилам,global— весь трафик через выбранный прокси,direct— всё напрямую. Рекомендуетсяrule. - log-level: уровень логирования.
infoдля обычной работы,debugдля диагностики проблем. - ipv6: включает или отключает обработку IPv6-трафика. По умолчанию
true. - external-controller: адрес RESTful API для управления через веб-панель (например,
127.0.0.1:9090). - secret: ключ доступа к API. Если не задан, API доступен без пароля.
- unified-delay: при включении рассчитывается единая задержка для всех узлов, что устраняет различия между протоколами.
- tcp-concurrent: разрешает одновременные TCP-соединения ко всем IP-адресам, полученным от DNS, используя первое успешное.
- interface-name: указывает сетевой интерфейс для исходящего трафика (например,
en0на macOS илиwlan0на Android). - routing-mark: метка маршрутизации для Linux, позволяет применять правила iptables.
Эти параметры задаются в корне файла config.yaml и влияют на всю работу ядра.
Настройка прокси-узлов (proxies)
Раздел proxies содержит список всех доступных прокси-серверов. Каждый узел описывается набором обязательных и опциональных полей. Clash поддерживает множество протоколов: Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard и другие.
Пример узла Shadowsocks:
proxies:
- name: "My SS Node"
type: ss
server: 123.123.123.123
port: 55223
cipher: chacha20-ietf-poly1305
password: "your-password"
udp: trueПример узла VMess:
- name: "My VMess Node"
type: vmess
server: example.com
port: 27789
uuid: "1f829011-0a5f-4e1c-a797-57aa709ec672"
alterId: 0
cipher: auto
tls: false
network: tcp
ws-opts:
path: "/"
headers:
Host: "example.com"Пример узла Trojan:
- name: "US Trojan"
type: trojan
server: us.example.com
port: 443
password: "trojan-password"
sni: us.example.com
skip-cert-verify: false
udp: trueДля каждого узла обязательно указывать name (уникальное имя), type, server и port. Остальные поля зависят от протокола. Для Shadowsocks важны cipher и password, для VMess — uuid и alterId, для Trojan — password и опционально sni.
Если вы используете подписку от провайдера, узлы можно импортировать через proxy-providers, что упрощает обновление.
Группы политик (proxy-groups): стратегии выбора узла
Группы политик позволяют объединять несколько прокси-узлов и задавать логику их выбора. Это одна из самых мощных функций Clash. Основные типы групп:
- select: ручной выбор. Пользователь сам переключает активный узел в интерфейсе.
- url-test: автоматический выбор по минимальной задержке. Периодически проверяет указанный URL и выбирает самый быстрый узел.
- fallback: отказоустойчивость. Узлы проверяются по порядку; при недоступности первого автоматически переключается на следующий.
- load-balance: балансировка нагрузки. Трафик распределяется между узлами по стратегии (например, consistent-hashing).
Пример настройки групп:
proxy-groups:
- name: "🚀 Выбор прокси"
type: select
proxies:
- "♻️ Авто лучший"
- "My SS Node"
- "My VMess Node"
- DIRECT
- name: "♻️ Авто лучший"
type: url-test
proxies:
- "My SS Node"
- "My VMess Node"
url: "http://www.gstatic.com/generate_204"
interval: 300
tolerance: 50Группу select удобно использовать как основную — вы можете вручную выбрать нужный узел или переключиться на автоматический режим. Группы url-test и fallback полезны для обеспечения стабильности: если один сервер упал, трафик автоматически пойдёт через другой.
Внутри группы можно ссылаться как на отдельные узлы, так и на другие группы. Это позволяет создавать многоуровневые иерархии.
Правила маршрутизации (rules): как управлять трафиком
Правила маршрутизации определяют, какой трафик направлять через прокси, а какой — напрямую. Clash проверяет правила сверху вниз и применяет первое совпадение. Основные типы правил:
- DOMAIN-SUFFIX: совпадение по суффиксу домена (например,
google.comохватываетwww.google.comиmail.google.com). - DOMAIN-KEYWORD: совпадение по ключевому слову в домене (например,
telegramсработает дляtelegram.orgиcore.telegram.org). - DOMAIN: точное совпадение домена.
- IP-CIDR: совпадение по диапазону IP-адресов. Флаг
no-resolveотключает DNS-запрос для этого правила. - GEOIP: совпадение по геолокации IP-адреса (например,
GEOIP,CN,DIRECTнаправляет китайский трафик напрямую). - PROCESS-NAME: совпадение по имени процесса (например,
firefox.exe). Работает только на десктопах. - MATCH: правило по умолчанию, должно быть последним.
Пример правил:
rules:
- DOMAIN-SUFFIX,local,DIRECT
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-SUFFIX,google.com,🚀 Выбор прокси
- DOMAIN-SUFFIX,youtube.com,🚀 Выбор прокси
- DOMAIN-KEYWORD,telegram,🚀 Выбор прокси
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- GEOIP,CN,DIRECT
- MATCH,🚀 Выбор проксиПорядок правил критичен: более конкретные размещайте выше. Например, правило для локальных адресов должно быть до GEOIP. Правило MATCH обязательно должно быть последним — оно обрабатывает весь трафик, не попавший под предыдущие условия.
Для сложных конфигураций можно использовать rule-providers — внешние файлы с правилами, которые автоматически обновляются.
Настройка DNS для безопасности и скорости
DNS-настройки напрямую влияют на скорость работы и защиту от утечек. Clash поддерживает два режима: fake-ip и redir-host.
Режим fake-ip (рекомендуется): ядро возвращает поддельный IP-адрес из диапазона fake-ip-range (по умолчанию 198.18.0.1/16). Реальный DNS-запрос выполняется только при необходимости, что ускоряет работу и предотвращает утечки DNS-запросов за пределы прокси.
Режим redir-host: возвращает реальный IP-адрес, что обеспечивает лучшую совместимость с некоторыми приложениями, но может быть медленнее.
Пример конфигурации DNS:
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "localhost.ptlogin2.qq.com"
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
- 114.114.114.114
fallback:
- https://dns.google/dns-query
- https://cloudflare-dns.com/dns-query
- tls://8.8.4.4:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4Параметр nameserver задаёт основные DNS-серверы (обычно быстрые локальные или публичные DoH). fallback используется, когда ответы nameserver подозрительны (например, заблокированы). fallback-filter определяет условия для использования fallback: по геолокации или по диапазону IP.
fake-ip-filter позволяет исключить определённые домены из обработки fake-ip — для них будут возвращаться реальные IP. Это полезно для приложений, требующих настоящего адреса (например, некоторые игры или корпоративные сервисы).
Режим TUN: проксирование всего трафика устройства
Режим TUN позволяет перехватывать весь сетевой трафик устройства на уровне ядра, включая UDP и приложения, которые не поддерживают системный прокси. Это особенно полезно на Android, где многие приложения игнорируют настройки HTTP/SOCKS-прокси.
Для включения TUN в конфигурации добавляется раздел tun:
tun:
enable: true
stack: system # или gvisor
dns-hijack:
- any:53
auto-route: true
auto-detect-interface: true- stack: выбор стека.
systemиспользует системный стек (рекомендуется для совместимости),gvisor— пользовательский (может быть быстрее, но менее стабилен). - dns-hijack: перехватывает DNS-запросы, направляя их в DNS-резолвер Clash.
- auto-route: автоматически добавляет маршруты для перенаправления трафика в TUN.
- auto-detect-interface: автоматически определяет основной сетевой интерфейс.
На Android перед использованием TUN необходимо установить сервисный режим (Service Mode) в настройках приложения Clash Mi. После включения TUN весь трафик устройства обрабатывается правилами Clash, что обеспечивает полный контроль.
Важно: при использовании TUN убедитесь, что в правилах есть исключения для локальных сетей (192.168.0.0/16, 10.0.0.0/8, 127.0.0.0/8), иначе может нарушиться работа локальных сервисов.
Провайдеры прокси и правил: автоматическое обновление
Для удобства обновления списка узлов и правил Clash поддерживает провайдеров — внешние источники, которые автоматически загружаются и обновляются.
proxy-providers позволяют импортировать узлы из подписки (URL). Пример:
proxy-providers:
MyProvider:
type: http
url: "https://example.com/subscription"
interval: 86400
path: ./providers/myprovider.yaml
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300После импорта узлы из провайдера можно использовать в группах политик, ссылаясь на имя провайдера.
rule-providers работают аналогично для правил:
rule-providers:
Reject:
type: http
behavior: domain
url: "https://example.com/reject.yaml"
path: ./rules/reject.yaml
interval: 86400
Lan:
type: http
behavior: ipcidr
url: "https://example.com/lan.yaml"
path: ./rules/lan.yaml
interval: 86400Параметр behavior определяет тип правил: domain, ipcidr или classical. Провайдеры правил подключаются в разделе rules с синтаксисом RULE-SET,<имя_провайдера>,<политика>.
Использование провайдеров упрощает поддержку конфигурации: достаточно обновить файл на сервере, и все клиенты автоматически получат новые узлы или правила.
Вопросы и ответы
Как проверить синтаксис YAML конфигурации Clash?
Используйте онлайн-валидаторы YAML (например, yamllint.com) или редакторы с подсветкой синтаксиса. В Clash Mi можно загрузить конфигурацию и посмотреть логи — если есть ошибка, ядро выведет сообщение с указанием строки.
Что делать, если после изменения конфигурации изменения не применяются?
Убедитесь, что файл сохранён в правильной кодировке (UTF-8 без BOM). Перезагрузите конфигурацию в приложении (обычно кнопка «Перезагрузить» или «Reload»). Если ошибка остаётся, проверьте логи на наличие синтаксических ошибок YAML.
Какой режим DNS лучше выбрать: fake-ip или redir-host?
Рекомендуется fake-ip — он быстрее и предотвращает утечки DNS. Режим redir-host используйте только если приложениям требуются реальные IP-адреса (например, некоторые игры или корпоративные сервисы). В fake-ip можно добавить исключения через fake-ip-filter.
Можно ли использовать одновременно несколько подписок от разных провайдеров?
Да, для этого используются proxy-providers. Создайте несколько провайдеров с разными URL, затем объедините узлы в группы политик. Это позволяет комбинировать серверы из разных источников.
Как настроить Clash Mi для работы только с определёнными приложениями?
Используйте правила PROCESS-NAME (на десктопах) или настройте TUN-режим с правилами по IP-диапазонам. На Android можно также использовать функцию «Проксировать только выбранные приложения» в настройках Clash Mi.
Почему некоторые сайты не открываются через прокси?
Возможные причины: неправильные настройки TLS (skip-cert-verify), блокировка на стороне сервера, неверные правила маршрутизации или проблемы с DNS. Проверьте логи Clash на уровне debug, чтобы увидеть, какое правило сработало и какой узел выбран.
Как обновить GEO-файлы (geosite, geoip) вручную?
В разделе общих настроек укажите URL для загрузки GEO-файлов через параметры geox-url. Включите geo-auto-update и задайте интервал обновления. Также можно скачать файлы вручную и поместить их в папку с конфигурацией.