Оверрайды
Свои настройки поверх подписки — порядок объединения, что Exodus задаёт сам, mixin-файл и примеры.
Подписка скачивается заново при каждом обновлении, поэтому правки в её файле пропадают. Свои настройки задаются поверх профиля: Exodus накладывает их при каждом запуске и при каждом обновлении подписки.
Порядок объединения
Заголовок раздела «Порядок объединения»Профиль запуска собирается из трёх слоёв, каждый следующий важнее предыдущего:
- Профиль — подписка или загруженный файл.
- Mixin-файл — ваши настройки Mihomo.
- Настройки Exodus — страница «Настройки» на Keenetic и Asus, «Расширенные» → «Опции mixin» в LuCI на OpenWrt. Незаполненный параметр оставляет значение профиля.
Потом Exodus дописывает то, без чего не работает перехват, — см. что Exodus задаёт сам. Результат — профиль запуска run/config.yaml. Его можно посмотреть на странице «Редактор», он только для чтения и перезаписывается при каждом запуске.
Как объединяются слои:
- Словари — по ключам.
dns: { nameserver: [...] }в mixin-файле меняет только серверы, остальные параметрыdnsпрофиля сохраняются. - Списки и значения — целиком.
rules,proxiesилиproxy-groupsв mixin-файле заменяют все правила, прокси или группы профиля. Чтобы добавить свои к профилю, используйте ключиnikki-*. - Комментарии удаляются, якоря YAML (
&,*,<<) раскрываются.
Что Exodus задаёт сам
Заголовок раздела «Что Exodus задаёт сам»Без этих параметров не работают правила перехвата и веб-интерфейс, поэтому mixin-файл их не изменит:
| Параметр | Значение |
|---|---|
redir-port, tproxy-port | 7891, 7892 |
dns.enable, dns.listen | true, [::]:1053 |
allow-lan | true |
external-controller | [::]:9090, порт — «Порт API» |
external-ui | ui |
profile.store-selected, profile.store-fake-ip | true |
Со страницы «Настройки», только если параметр заполнен:
| Параметр | Откуда |
|---|---|
log-level | «Уровень логов» |
interface-name | «Исходящий интерфейс» |
mixed-port | «Порт прокси»; если его нет ни в настройках, ни в профиле — 7890 |
authentication | «Авторизация»: включена — логин и пароль из настроек, выключена — без авторизации, даже если она есть в профиле |
external-ui-url | «Панель» |
secret | «Секрет API» |
routing-mark | 255, если включён «Трафик роутера» |
Если перехват включён («Настройки» → «Включить»), после объединения:
- TUN выключается:
tun.enable: false, листенеры сtype: tunудаляются. TUN изменил бы маршруты роутера. - Для метки выбранного прокси добавляются листенеры
exodus-force-redirиexodus-force-tproxy. - Имена самого роутера добавляются в
dns.fake-ip-filter, еслиfake-ip-filter-mode—blacklist(по умолчанию): на Keenetic —my.keenetic.net, домены KeenDNS и Netcraze, на Asus —router.asus.com,www.asusrouter.com,www.asusnetwork.net,+.asuscomm.comи локальный домен. - Только Asus: имена веб-интерфейса попадают в
hostsс LAN-адресом роутера, а локальный домен — вdns.nameserver-policyс DNS роутера. Значения профиля и mixin-файла для этих имён важнее.
Режим (mode), ipv6 и режим DNS (dns.enhanced-mode) Exodus не задаёт: они берутся из профиля, изменить их можно в mixin-файле.
Параметры «Расширенные» → «Опции mixin» важнее mixin-файла. Незаполненный параметр оставляет значение профиля.
Флаги «Переопределить…» («Переопределить hosts», «Переопределить DNS-сервер», «Переопределить политику DNS-серверов», «Переопределить фильтр Fake-IP», «Заменить учётные данные», «Переопределить перехват DNS» и флаги сниффера): включённый флаг заменяет значение профиля списком из LuCI, выключенный оставляет значение профиля как есть.
- «Добавить правило» — правила из LuCI идут в начало правил профиля.
- «Добавить список правил» — провайдеры правил добавляются к провайдерам профиля, у провайдера с тем же именем параметры берутся из LuCI.
Если включён перехват («Настройки прокси» → «Включить»), у TUN профиля выключаются auto-route, auto-redirect и auto-detect-interface: маршруты настраивает Exodus.
С «Только ядро» профиль запускается как есть: без mixin-файла и без «Опций mixin».
Mixin-файл
Заголовок раздела «Mixin-файл»Любые настройки Mihomo поверх профиля. Правится на странице «Редактор»: /opt/etc/exodus/mixin.yaml на Keenetic и Asus, /etc/nikki/mixin.yaml на OpenWrt.
- Keenetic и Asus: применяется всегда. Пока в файле одни комментарии, он ничего не меняет.
- OpenWrt: применяется, только если включено «Расширенные» → «Опции mixin» → «Содержимое файла mixin».
Изменения применяются при следующем запуске — «Сохранить и перезапустить» в редакторе. Если профиль с mixin-файлом не собирается (например, из-за ошибки в YAML), на Keenetic и Asus сервис не запускается, а в логе Exodus появляется Mixin failed, check the mixin file and the profile. При обновлении подписки на лету в этом случае ядро остаётся на работающем профиле.
Прокси, группы и правила
Заголовок раздела «Прокси, группы и правила»Ключи nikki-proxies, nikki-proxy-groups и nikki-rules добавляют прокси, группы и правила в начало списков профиля, не заменяя их:
nikki-proxies: - name: PROXY type: ss server: proxy.example.com port: 443 cipher: chacha20-ietf-poly1305 password: passwordnikki-proxy-groups: - name: PROXY_GROUP type: select proxies: - PROXYnikki-rules: - DOMAIN,direct.example.com,DIRECT - DOMAIN-SUFFIX,proxy.example.com,PROXY_GROUPПравило ссылается на группу или прокси по имени: на группу профиля, на DIRECT, REJECT или на добавленную выше.
Примеры
Заголовок раздела «Примеры»Все примеры — для mixin-файла. Справочник параметров — документация Mihomo.
DNS-серверы
Заголовок раздела «DNS-серверы»dns: nameserver: - https://1.1.1.1/dns-query - https://dns.google/dns-queryСписок заменяет nameserver профиля, остальные параметры dns профиля сохраняются. На OpenWrt с «Переопределить DNS-сервер» важнее серверы из LuCI.
Домены без Fake-IP
Заголовок раздела «Домены без Fake-IP»dns: fake-ip-filter: - +.lan - +.local - +.msftconnecttest.comСписок заменяет fake-ip-filter профиля целиком: перенесите из профиля записи, которые нужно сохранить. Имена роутера Exodus добавит сам.
hosts: nas.home: 192.168.1.20 printer.home: 192.168.1.30Записи добавляются к hosts профиля, совпадающие имена заменяются.
Сниффер
Заголовок раздела «Сниффер»sniffer: enable: true sniff: HTTP: ports: [80, 8080-8880] override-destination: true TLS: ports: [443, 8443] QUIC: ports: [443, 8443] skip-domain: - +.push.apple.comПровайдер правил
Заголовок раздела «Провайдер правил»rule-providers: my-direct: type: http behavior: domain format: text url: https://example.com/direct.txt interval: 86400nikki-rules: - RULE-SET,my-direct,DIRECTПровайдер добавляется к провайдерам профиля, правило с ним — в начало правил.
Override провайдера прокси
Заголовок раздела «Override провайдера прокси»Если подписка подключает прокси через proxy-providers, ключ override меняет сразу все прокси провайдера:
proxy-providers: provider-name: override: udp: true additional-prefix: '[Sub] 'provider-name — имя провайдера из подписки, его видно в профиле запуска на странице «Редактор». Остальные параметры провайдера сохраняются. Ещё полезны skip-cert-verify, dialer-proxy, interface-name, additional-suffix и proxy-name для переименования по шаблону. Если прокси перечислены в подписке прямо в proxies, провайдера нет и override не нужен.