Перейти к содержимому
Использование

Оверрайды

Свои настройки поверх подписки — порядок объединения, что Exodus задаёт сам, mixin-файл и примеры.

Подписка скачивается заново при каждом обновлении, поэтому правки в её файле пропадают. Свои настройки задаются поверх профиля: Exodus накладывает их при каждом запуске и при каждом обновлении подписки.

Профиль запуска собирается из трёх слоёв, каждый следующий важнее предыдущего:

  1. Профиль — подписка или загруженный файл.
  2. Mixin-файл — ваши настройки Mihomo.
  3. Настройки Exodus — страница «Настройки» на Keenetic и Asus, «Расширенные» → «Опции mixin» в LuCI на OpenWrt. Незаполненный параметр оставляет значение профиля.

Потом Exodus дописывает то, без чего не работает перехват, — см. что Exodus задаёт сам. Результат — профиль запуска run/config.yaml. Его можно посмотреть на странице «Редактор», он только для чтения и перезаписывается при каждом запуске.

Как объединяются слои:

  • Словари — по ключам. dns: { nameserver: [...] } в mixin-файле меняет только серверы, остальные параметры dns профиля сохраняются.
  • Списки и значения — целиком. rules, proxies или proxy-groups в mixin-файле заменяют все правила, прокси или группы профиля. Чтобы добавить свои к профилю, используйте ключи nikki-*.
  • Комментарии удаляются, якоря YAML (&, *, <<) раскрываются.

Без этих параметров не работают правила перехвата и веб-интерфейс, поэтому mixin-файл их не изменит:

ПараметрЗначение
redir-port, tproxy-port7891, 7892
dns.enable, dns.listentrue, [::]:1053
allow-lantrue
external-controller[::]:9090, порт — «Порт API»
external-uiui
profile.store-selected, profile.store-fake-iptrue

Со страницы «Настройки», только если параметр заполнен:

ПараметрОткуда
log-level«Уровень логов»
interface-name«Исходящий интерфейс»
mixed-port«Порт прокси»; если его нет ни в настройках, ни в профиле — 7890
authentication«Авторизация»: включена — логин и пароль из настроек, выключена — без авторизации, даже если она есть в профиле
external-ui-url«Панель»
secret«Секрет API»
routing-mark255, если включён «Трафик роутера»

Если перехват включён («Настройки» → «Включить»), после объединения:

  • 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-файле.

Любые настройки 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: password
nikki-proxy-groups:
- name: PROXY_GROUP
type: select
proxies:
- PROXY
nikki-rules:
- DOMAIN,direct.example.com,DIRECT
- DOMAIN-SUFFIX,proxy.example.com,PROXY_GROUP

Правило ссылается на группу или прокси по имени: на группу профиля, на DIRECT, REJECT или на добавленную выше.

Все примеры — для mixin-файла. Справочник параметров — документация Mihomo.

dns:
nameserver:
- https://1.1.1.1/dns-query
- https://dns.google/dns-query

Список заменяет nameserver профиля, остальные параметры dns профиля сохраняются. На OpenWrt с «Переопределить DNS-сервер» важнее серверы из LuCI.

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: 86400
nikki-rules:
- RULE-SET,my-direct,DIRECT

Провайдер добавляется к провайдерам профиля, правило с ним — в начало правил.

Если подписка подключает прокси через 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 не нужен.