Настройка конфигурации для VPN Clash Mi: полное руководство

Подробное руководство по созданию и оптимизации конфигурации для VPN Clash Mi. Разбираем структуру YAML, прокси-узлы, группы политик, правила маршрутизации, DNS и TUN. Примеры для Shadowsocks и VMess.

Что такое конфигурация 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 и задайте интервал обновления. Также можно скачать файлы вручную и поместить их в папку с конфигурацией.