Основы
Эта страница описывает плоские ключи верхнего уровня YAML-документа — порты слушателей, контроль доступа, сетевые флаги и выбор режима маршрутизации. Все они находятся непосредственно в RawConfig и пробрасываются в рантайм в config/config.go.
Параметры
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
port | int | 0 | 0 | <port> | Порт прослушивания HTTP-прокси. 0 отключает. |
socks-port | int | 0 | 0 | <port> | Порт прослушивания SOCKS5. 0 отключает. |
redir-port | int | 0 | 0 | <port> | Порт входящего Linux REDIRECT (iptables NAT). 0 отключает. |
tproxy-port | int | 0 | 0 | <port> | Порт входящего Linux TPROXY (iptables mangle). 0 отключает. |
mixed-port | int | 0 | 0 | <port> | Совмещённый порт, обслуживающий HTTP и SOCKS5 на одном слушателе. 0 отключает. |
inbound-tfo | bool | false | true | false | Включить TCP Fast Open на входящих слушателях (только Linux). |
inbound-mptcp | bool | false | true | false | Включить Multipath TCP на входящих слушателях (только Linux). |
authentication | []string | [] | <user:pass> | Список учётных данных аутентификации HTTP/SOCKS. Пустой список отключает аутентификацию. |
skip-auth-prefixes | []netip.Prefix | [] | <CIDR> | Префиксы IP-источников, которые обходят аутентификацию. |
lan-allowed-ips | []netip.Prefix | [] | <CIDR> | Когда allow-lan равно true, ограничить доступ этими префиксами IP-источников. |
lan-disallowed-ips | []netip.Prefix | [] | <CIDR> | Когда allow-lan равно true, запретить доступ с этих префиксов IP-источников. |
allow-lan | bool | false | true | false | Привязывать слушателей к 0.0.0.0 / :: вместо 127.0.0.1. |
bind-address | string | * | * | <address> | Переопределить адрес привязки; * следует выбору allow-lan. |
mode | T.TunnelMode | rule | rule | global | direct | Политика принятия решений туннеля. `rule` использует список правил; `global` направляет всё через GLOBAL; `direct` полностью обходит прокси. |
unified-delay | bool | false | true | false | Вычитать время TLS-рукопожатия из задержки URL-теста, чтобы сравнение задержек между прокси было честным. |
ipv6 | bool | false | true | false | Главный переключатель IPv6. При false записи AAAA отфильтровываются, а маршрутизация IPv6 отключена. |
interface-name | string | (auto) | <interface> | Привязать все исходящие подключения к этому интерфейсу (например, eth0). |
routing-mark | int | 0 | <uint32> | Linux SO_MARK, применяемый к исходящим сокетам. 0 отключает. |
tcp-concurrent | bool | false | true | false | Устраивать гонку подключений по A- и AAAA-записям для каждого соединения и использовать то, которое установится первым (в духе Happy Eyeballs). |
find-process-mode | process.FindProcessMode | strict | strict | always | off | Насколько активно определять процесс-инициатор для маршрутизации (правила `PROCESS-NAME`). |
global-client-fingerprint | string | (removed) | <utls fingerprint> | Удалён и игнорируется. Вместо него задавайте `client-fingerprint` непосредственно у каждого прокси. |
global-ua | string | clash.meta/<version> | <string> | User-Agent по умолчанию для загрузки подписок и ресурсов. |
etag-support | bool | true | true | false | Учитывать заголовки ETag при повторной загрузке URL подписок. |
keep-alive-idle | int | 0 | <seconds> | Время простоя TCP keepalive. 0 означает значение ОС по умолчанию. |
keep-alive-interval | int | 0 | <seconds> | Интервал зондов TCP keepalive. 0 означает значение ОС по умолчанию. |
disable-keep-alive | bool | false | true | false | Полностью отключить TCP keepalive. |
Исходный код: config/config.go:399-467 · зафиксировано на v1.19.29 (e26714a)
Пример
yaml
mode: rule
mixed-port: 7890
allow-lan: false
bind-address: '*'
ipv6: false
unified-delay: true
tcp-concurrent: true
find-process-mode: strict
global-ua: my-mihomo/1.0
keep-alive-idle: 600
keep-alive-interval: 30Примечания
port/socks-port/mixed-portсовместимы между собой — можно открыть все три, но дублирование роли HTTP наportиmixed-portодновременно лишь расходует лишний слушатель.- Значение
*дляbind-addressобрабатывается особо: оно означает «следовать текущему решениюallow-lan» (0.0.0.0при true,127.0.0.1при false). find-process-mode: alwaysзаставляет маршрутизатор выполнять платформозависимый системный вызов поиска процесса для каждого соединения, что дорого на нагруженных системах macOS / Windows. Предпочитайтеstrict(значение по умолчанию), если правила PROCESS-NAME не критичны.global-client-fingerprintбыл удалён: теперь он разбирается, но игнорируется. Задавайтеclient-fingerprintнепосредственно в каждой записи прокси.- Файл конфигурации может быть зашифрован age. Перед разбором YAML mihomo пытается расшифровать файл с помощью
age; если файл зашифрован, он прозрачно расшифровывается при загрузке, и полученный YAML разбирается как обычно. Обычные (незашифрованные) файлы конфигурации загружаются без изменений.
Исходный код: config/config.go:399-467 · v1.19.29 (e26714a)
