Прокси-сервер

Прокси-сервер пересылает запросы на вышестоящий прокси. Chute поддерживает протоколы прокси: HTTP/HTTPS/SOCKS5/SOCKS5-TLS/SS/SSR/Trojan/VMess/VLESS/AnyTLS/TUIC/Hysteria2/WireGuard/AmneziaWG/ShadowTLS/MASQUE/SSH.

Раздел [Proxy] объявляет прокси-серверы. Вы можете создать несколько прокси-серверов для разных правил.

Пример:

[Proxy]
ProxyHTTP = http, 1.2.3.4, 443, username, password
ProxyHTTPS = https, 1.2.3.4, 443, username, password, sni=example.com
ProxySOCKS5 = socks5, 1.2.3.4, 443, username, password
ProxySOCKS5TLS = socks5-tls, 1.2.3.4, 443, username, password, sni=example.com
SS = ss, 1.2.3.4, 443, method, password, obfs=http
SSR = ssr, 1.2.3.4, 443, method, password, protocol=auth_chain_f, protocol_param=user:pass, obfs=http_post, obfs_param=example.com
Trojan = trojan, 1.2.3.4, 443, password=password, tls=true, sni=example.com, skip-cert-verify=false, ws=true
VMess = vmess, 1.2.3.4, 443, uuid=uuid, sni=example.com, tls=true, ws=true
VLESS = vless, 1.2.3.4, 443, uuid=uuid, sni=example.com, xtls=true
AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com
TUIC = tuic, 1.2.3.4, 443, uuid=uuid, password=password, sni=example.com
Hysteria2 = hysteria2, 1.2.3.4, 443, auth=password, sni=example.com, up=10, down=100
WireGuard = wireguard, private-key=base64key, peer-public-key=base64key, section-name=wg0, self-ip=10.0.0.2
AmneziaWG = amneziawg, section-name=awg0
ShadowTLS = shadowtls, 1.2.3.4, 443, password=password, sni=example.com, skip-cert-verify=false, fingerprint=chrome
ProxyMASQUE = masque, 1.2.3.4, 443, token=auth-token, mode=connect-udp, sni=example.com, alpn=h3, skip-cert-verify=false
SSH = ssh, 1.2.3.4, 22, root, password=pw
SCHEME = scheme, ssr://....

Внимание: Политике Trojan требуется явный tls=true — TLS не подразумевается. Без него (и без grpc=true, который всегда работает поверх TLS) политика подключается открытым текстом, и при загрузке конфигурации журнал сообщает об этом: Trojan policy <name> has no tls=true; it connects without TLS. При импорте профиля Clash/mihomo tls=true записывается в каждый узел Trojan.

Внимание: scheme принимает ссылку для обмена одного из этих видов: ss://, ssr://, anytls://, tuic://, hysteria2:// и shadowtls://. Ссылка любого другого вида делает строку ошибкой конфигурации.

Параметры

Тип Имя пользователя Пароль Метод TLS XTLS Websocket QUIC
HTTP √ √
HTTPS √ √ TLS
Socks √ √
SOCKS5-TLS √ √ TLS
Shadowsocks √ Метод, OBFS TLS, Отпечаток, ECH WS
ShadowsocksR √ Метод, Протокол, OBFS TLS, Отпечаток, ECH WS
Trojan √ TLS, Отпечаток, ECH WS, gRPC, XHTTP
VMess uuid TLS, Отпечаток, ECH WS, gRPC, XHTTP
VLESS uuid TLS, Отпечаток, ECH XTLS WS, gRPC, XHTTP
AnyTLS √ TLS
TUIC uuid √ TLS √
Hysteria2 auth TLS √
WireGuard private-key Нативный WireGuard
AmneziaWG private-key Нативный WireGuard
ShadowTLS √ TLS, Отпечаток
MASQUE token TLS, Режим, Мультиплексирование √
SSH √ Аутентификация ​

Параметры прокси с TLS

tls: Необязательно.

tls=true

Включить транспорт TLS.

skip-cert-verify: Необязательно

skip-cert-verify=true

Если эта опция включена, Chute не будет проверять сертификат сервера. Включить её можно значениями true, 1 и yes, поэтому ссылки для обмена с insecure=1 тоже работают. skip-common-name-verify=true — написание Shadowrocket в строках socks5-tls — читается как та же опция.

sni (По умолчанию: hostname)

sni=exmaple.com

Вы можете настроить Server Name Indication (SNI) во время рукопожатия TLS. По умолчанию Chute отправляет SNI с именем хоста, как большинство браузеров.

fingerprint: Необязательно.

fingerprint=chrome

Отправляет TLS ClientHello браузера вместо системного, чтобы рукопожатие не выделялось как принадлежащее прокси-клиенту. Поддерживаемые значения: chrome, firefox, safari и ios, а также edge, 360, qq, android и random — все они обрабатываются как Chrome. Принимаются и имена, которые используют mihomo, sing-box и Xray; они сопоставляются с теми же четырьмя пресетами: например, randomized, chrome_pq и hellochrome_131 обрабатываются как Chrome, hellofirefox_120 — как Firefox, hellosafari_16_0 — как Safari, а helloios_14 — как iOS. Для hellogolang из Xray пресета нет.

Это относится к Trojan, VMess и VLESS поверх TLS, включая их транспорты WebSocket и gRPC, а также к Shadowsocks и ShadowsocksR поверх WebSocket с TLS. У REALITY и ShadowTLS та же опция описана в их собственных разделах. Чтобы задать один отпечаток для всех политик, не указавших свой, используйте global-client-fingerprint. Он всегда действует на политики ShadowTLS, а также на политики VLESS с tls=true или reality=true, на политики Trojan и VMess с tls=true и на политики Shadowsocks, в которых заданы и ws=true, и tls=true; политике с транспортом gRPC тоже нужно явно указать tls=true. На политики ShadowsocksR он не действует.

На этих протоколах fingerprint=none — или unsafe, что означает то же самое, — выбирает системный стек TLS и имеет приоритет над global-client-fingerprint. REALITY и ShadowTLS не обходятся без браузерного рукопожатия, поэтому там none приводит к отказу в соединении. Значение, которого Chute не знает, на любом протоколе приводит к отказу в соединениях этой политики вместо отката на системный TLS: серверу ничего не отправляется, соединение завершается ошибкой (группа url-test или fallback засчитывает её как любую другую неудачу), а при загрузке конфигурации журнал пишет Policy <name>: fingerprint '<value>' is not supported; connections through this policy are refused. Нераспознанный global-client-fingerprint, напротив, просто игнорируется.

Задание отпечатка заодно включает постквантовый обмен ключами: Chute предлагает гибридную группу X25519MLKEM768 наряду с X25519, поэтому записанный сегодня сеанс не удастся расшифровать позже даже тому, кто получит квантовый компьютер. Сервер, не знающий эту группу, просто выберет X25519 — ничего не сломается. Без отпечатка соединение идёт через системный стек TLS, который её не предлагает, — по той же причине отпечаток нужен и для ECH.


Параметры прокси с Shadowsocks

method: Обязательно.

В настоящее время поддерживаются:

rc4-md5
aes-128-cfb
aes-192-cfb
aes-256-cfb
aes-128-ctr
aes-192-ctr
aes-256-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
salsa20
chacha20
chacha20-ietf
aes-128-gcm
aes-192-gcm
aes-256-gcm
chacha20-ietf-poly1305
xchacha20-ietf-poly1305

Методы Shadowsocks 2022

Chute поддерживает протокол Shadowsocks 2022, который использует формирование ключей на основе BLAKE3 и шифры AEAD. Имя метода определяет набор шифров:

2022-blake3-aes-128-gcm
2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305

Формат пароля:

Поле пароля для SS2022 состоит из одного или двух ключей в кодировке base64, разделённых : (двоеточием).

Однопользовательский режим (один ключ):

SS2022 = ss, 1.2.3.4, 443, 2022-blake3-aes-256-gcm, "base64-key"

Многопользовательский режим с заголовками идентификации (два ключа):

Для 2022-blake3-aes-128-gcm и 2022-blake3-aes-256-gcm вы можете предоставить ключ заголовка идентификации и пользовательский ключ, разделённые ::

SS2022 = ss, 1.2.3.4, 443, 2022-blake3-aes-256-gcm, "header-base64-key:user-base64-key"

Каждый ключ — это строка в кодировке base64 (поддерживается как стандартный, так и URL-безопасный base64). Требуемая длина ключей:

Метод Длина пользовательского ключа Длина ключа заголовка
2022-blake3-aes-128-gcm 16 байт 16 байт
2022-blake3-aes-256-gcm 32 байта 32 байта
2022-blake3-chacha20-poly1305 32 байта Н/Д (нет поддержки заголовка идентификации)

Генерация ключа:

openssl rand -base64 32

Примечание: Методы SS2022 не поддерживают параметр obfs. Метод 2022-blake3-chacha20-poly1305 не поддерживает многопользовательский режим.

Методы Shadowsocks AEGIS

Chute также поддерживает семейство AEAD-шифров AEGIS. Они построены на раундовой функции AES и заметно быстрее AES-GCM и ChaCha20-Poly1305 на любом процессоре с аппаратным AES — а он есть во всех современных iPhone, iPad, Apple TV и Mac:

aegis-128l
aegis-256

Настраиваются так же, как классические AEAD-методы выше: пароль — обычная парольная фраза, а не ключ в base64:

AEGIS = ss, 1.2.3.4, 443, aegis-128l, your-password
Метод Ключ Nonce Тег
aegis-128l 16 байт 16 байт 16 байт
aegis-256 32 байта 32 байта 16 байт

Всё остальное в точности соответствует SIP004: соль имеет длину ключа, сеансовый подключ — HKDF-SHA1(key, salt, "ss-subkey"), полезная нагрузка TCP передаётся AEAD-блоками с префиксом длины, причём nonce увеличивается после каждой операции, а UDP использует нулевой nonce.

Сервер придётся поднимать самостоятельно. AEGIS не входит в спецификацию Shadowsocks — для него нет SIP, и ни один распространённый сервер Shadowsocks его не реализует, включая shadowsocks-rust, shadowsocks-libev, shadowsocks-go, sing-box и Xray. Выбор этих методов сработает только с вашим собственным сервером, специально собранным с их поддержкой. Если вы подключаетесь к коммерческому или общему узлу, используйте один из совместимых методов выше.

obfs: Необязательно.

В настоящее время поддерживаются:

tls
http

obfs_param: Необязательно.

obfs_param=example.com

Задаёт Host, используемый слоем obfs. Если не указан, по умолчанию используется cloudfront.net.

WebSocket (v2ray-plugin): Необязательно.

ws=true, ws-path=/path, ws-headers=Host:example.com, tls=true, sni=example.com, skip-cert-verify=false

Переносит поток Shadowsocks внутри WebSocket так же, как это делает режим websocket плагина v2ray-plugin, поэтому политика может подключиться к серверу Shadowsocks, работающему за v2ray-plugin, в том числе когда перед ним стоит CDN. Параметры — те же, что у транспорта WebSocket и у TLS. Методы Shadowsocks 2022 тоже работают поверх него, а политики ShadowsocksR принимают те же параметры, сохраняя собственные протокол и obfs.

  • ws-path по умолчанию равен /; к пути, записанному без ведущей косой черты, она добавляется.
  • Host запроса Upgrade — это Host из ws-headers в том виде, как он записан. Если его нет, это sni (или адрес сервера, если sni нет), за которым следует :<порт>.
  • tls=true запускает TLS под WebSocket. sni, skip-cert-verify, fingerprint и параметры ECH работают так же, как у Trojan. Без ws=true параметр tls=true ничего не делает: политика подключается без TLS, а строка получает предупреждение Shadowsocks tls=true only applies with ws=true (the v2ray-plugin transport); this policy connects without TLS.
  • ws-mux (по умолчанию true) открывает на каждом WebSocket один сеанс mux.cool — этого ждёт сервер v2ray-plugin, запущенный со своим значением по умолчанию mux=1. Для сервера, запущенного с mux=0, пишите ws-mux=false.
  • Если в той же строке есть и obfs=, используется WebSocket, а simple-obfs не применяется; при загрузке конфигурации журнал пишет Policy <name> ignored unsupported option(s): obfs.
  • UDP не проходит через плагин: это обычный UDP Shadowsocks, отправляемый прямо на host:port, и через CDN он не проходит. Для сервера, доступного через CDN, пишите udp-relay=false. Если сервер Shadowsocks за плагином поддерживает UoT, можно вместо этого включить udp-over-tcp=true: UDP пойдёт внутри потоков политики, а значит, и через WebSocket.
  • Режим quic плагина v2ray-plugin не поддерживается.

Запись в стиле Shadowrocket тоже читается: obfs=websocket (или obfs=ws), с Host в obfsParam или obfs-host и путём в path или obfs-uri. Сохраняется политика как ws=true. Любое другое значение obfs, которое стек Shadowsocks прочитать не может, — wss из Quantumult X или опечатка — называется в предупреждении, а политика подключается как обычный Shadowsocks: Shadowsocks over WebSocket (the v2ray-plugin transport) is written ws=true, with ws-path= and ws-headers=; obfs=<value> is not read, so this policy would connect as plain Shadowsocks.

SS = ss, 1.2.3.4, 443, aes-256-gcm, password, ws=true, ws-path=/ws, ws-headers=Host:cdn.example.com, tls=true, sni=cdn.example.com

udp-over-tcp: Необязательно.

udp-over-tcp=true, udp-over-tcp-version=2

Передаёт UDP политики внутри TCP-соединений этой же политики, а не через UDP-ретрансляцию сервера, — это UDP поверх TCP (UoT) из sing-box. Каждый UDP-поток получает собственное соединение с условным адресом, который распознаёт сервер (sp.v2.udp-over-tcp.arpa, для версии 1 — sp.udp-over-tcp.arpa). Это обычные соединения политики, поэтому они, как и любые другие, следуют её underlying-proxy: UDP работает и через вышестоящий узел, который UDP не передаёт, например HTTP-прокси, и через транспорт WebSocket. Сервер должен поддерживать UoT — серверы sing-box и mihomo поддерживают. Работает и с методами Shadowsocks 2022.

  • udp-over-tcp-version (по умолчанию 2): версия 2 начинает каждое соединение с запроса, называющего адрес назначения, а затем разделяет датаграммы по длине; в версии 1 запроса нет, и адрес ставится перед каждой датаграммой. В mihomo по умолчанию используется версия 1, поэтому профиль, импортированный из mihomo, указывает версию явно. Любое другое значение вызывает уведомление, используется как 2 и при сохранении профиля остаётся таким, как записано.
  • udp-relay=false по-прежнему отключает UDP политики.
  • В редакторе Shadowsocks приложения это переключатель UDP поверх TCP и выбор Версия UoT.
SS = ss, 1.2.3.4, 8388, aes-256-gcm, password, udp-over-tcp=true

Параметры прокси с ShadowsocksR/ShadowsocksRR/ShadowsocksR-Akarin

method: Обязательно.

В настоящее время поддерживаются:

rc4
rc4-md5-6
rc4-md5
aes-128-cfb
aes-192-cfb
aes-256-cfb
aes-128-ctr
aes-192-ctr
aes-256-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
cast5-cfb
des-cfb
idea-cfb
rc2-cfb
seed-cfb
salsa20
chacha20
chacha20-ietf

protocol: Необязательно.

В настоящее время поддерживаются:

origin
auth_sha1
auth_sha1_v2
auth_sha1_v4
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b
auth_chain_c
auth_chain_d
auth_chain_e
auth_chain_f
auth_akarin_rand
auth_akarin_spec_a

protocol_param: Необязательно.

obfs: Необязательно.

В настоящее время поддерживаются:

plain
http_simple
http_post
tls1.2_ticket_auth

obfs_param: Необязательно.


Параметры прокси с WebSocket

Транспорт WebSocket доступен для Trojan, VMess и VLESS, а также для Shadowsocks и ShadowsocksR, где это режим websocket плагина v2ray-plugin, — чем он там отличается, см. WebSocket (v2ray-plugin).

ws: Необязательно.

ws=true

Включить транспорт WebSocket.

ws-path: Необязательно.

ws-path=/exmaple

Изменить путь HTTP-запроса WebSocket.

ws-headers: Необязательно.

ws-headers=Header1:Value1|Header2:Value2

Изменить HTTP-заголовок запроса WebSocket.


Параметры прокси с gRPC

Транспорт gRPC доступен для протоколов Trojan, VMess и VLESS. Он использует фрейминг gRPC на основе HTTP/2 поверх TLS, что может помочь обойти определённые сетевые ограничения.

grpc: Необязательно.

grpc=true

Включить транспорт gRPC. Транспорт всегда работает поверх TLS, каким бы ни было значение tls у политики. Всё же пишите tls=true, если политика должна получать global-client-fingerprint: на политику gRPC он действует, только когда в ней задан tls=true.

grpc-service-name: Обязательно при grpc=true.

grpc-service-name=MyService

Укажите имя/путь сервиса gRPC для мультиплексирования. Оно должно совпадать с именем сервиса, настроенным на сервере; значения по умолчанию нет.

grpc-multi-mode: Необязательно.

grpc-multi-mode=true

Использовать мультирежим Xray: туннель вызывает /<service>/TunMulti вместо /<service>/Tun, и несколько записей передаются в одном сообщении gRPC. Сервер должен поддерживать мультирежим. У каждого туннеля по-прежнему своё соединение.

Пример с VMess и gRPC:

VMess = vmess, 1.2.3.4, 443, uuid=uuid, tls=true, grpc=true, grpc-service-name=GunService, sni=example.com

Параметры прокси с XHTTP

Транспорт XHTTP доступен для протоколов Trojan, VMess и VLESS. Вместо того чтобы держать одно соединение открытым, он помещает туннель внутрь обычных HTTP-запросов: входящий поток (download) приходит одним долгоживущим ответом, а исходящий поток (upload) идёт либо серией POST-запросов, либо одним долгоживущим POST. Благодаря этому он работает через CDN — главная причина выбрать его вместо WebSocket или gRPC.

Версия HTTP не настраивается напрямую. Без TLS это HTTP/1.1; с TLS — HTTP/2, если только alpn не равен в точности http/1.1 (тогда HTTP/1.1) или в точности h3 (тогда HTTP/3). REALITY всегда использует HTTP/2.

xhttp: Необязательно.

xhttp=true

Включает транспорт XHTTP.

xhttp-mode: Необязательно.

xhttp-mode=packet-up

Способ передачи исходящего потока. auto (по умолчанию) означает packet-up, а при использовании REALITY — stream-one.

  • packet-up — исходящий поток идёт серией пронумерованных POST-запросов. Самый совместимый вариант и лучший для CDN.
  • stream-up — исходящий поток идёт одним долгоживущим POST, входящий — отдельным запросом.
  • stream-one — один запрос несёт оба направления. Требует поддержки полнодуплексного HTTP сервером и промежуточными узлами.

Сервер обычно фиксирует режим; при несовпадении он отвечает 400.

xhttp-path: Необязательно.

xhttp-path=/yourpath

Путь запроса, по умолчанию /. Должен совпадать с путём, на котором сервер обслуживает XHTTP.

xhttp-host: Необязательно.

xhttp-host=example.com

Имя узла для заголовка Host и URL запроса. По умолчанию берётся sni, а если он не задан — адрес сервера.

xhttp-headers: Необязательно.

xhttp-headers=Header1:Value1|Header2:Value2

Дополнительные HTTP-заголовки в том же формате, что и ws-headers.

xhttp-padding: Необязательно.

xhttp-padding=100-1000

Диапазон длины заполнения, которое несёт каждый запрос, в виде MIN-MAX или одного числа. По умолчанию 100-1000. Сервер требует заполнение и проверяет его длину, поэтому диапазон должен укладываться в тот, который принимает сервер: запрос без заполнения или с неверной длиной получает 400.

xhttp-max-post-bytes: Необязательно.

xhttp-max-post-bytes=1000000

Максимальный размер одного POST исходящего потока в байтах, по умолчанию 1000000. Более крупные записи разбиваются на несколько POST-запросов.

xhttp-min-post-interval: Необязательно.

xhttp-min-post-interval=30

Минимальный промежуток между соседними POST-запросами исходящего потока в миллисекундах, по умолчанию 30.

xhttp-xmux-max-concurrency, xhttp-xmux-max-connections, xhttp-xmux-max-reuse-times, xhttp-xmux-max-lifetime: Необязательно.

xhttp-xmux-max-concurrency=4

XMUX объединяет нижележащие соединения HTTP/2 в пул, чтобы несколько туннелей использовали одно соединение. Это выглядит как обычная сессия браузера, а не как отдельное соединение на каждый туннель. Все четыре по умолчанию равны 0, то есть пул выключен.

  • xhttp-xmux-max-concurrency — сколько туннелей могут делить одно соединение.
  • xhttp-xmux-max-connections — сколько соединений разрешено на сервер.
  • xhttp-xmux-max-reuse-times — после скольких туннелей соединение перестаёт принимать новые.
  • xhttp-xmux-max-lifetime — через сколько секунд соединение перестаёт принимать новые туннели.

Учтите, что для политики XHTTP параметр mux=true отклоняется, каким бы ни был её протокол, и при загрузке конфигурации журнал пишет Policy <name> ignored unsupported option(s): mux: XHTTP несёт собственное мультиплексирование, и общее поверх него удвоило бы его.

xhttp-download-server, xhttp-download-port: Необязательно.

xhttp-download-server=cdn.example.com

Направляет входящий поток через другой адрес — обычно CDN перед тем же сервером — тогда как исходящий поток продолжает идти на основной. Оба должны вести на один и тот же сервер: сессия — это состояние на стороне сервера, поэтому второй маршрут допустим, а второй сервер нет.

Пример с VLESS и XHTTP:

VLESS = vless, 1.2.3.4, 443, uuid=uuid, tls=true, xhttp=true, xhttp-mode=packet-up, xhttp-path=/yourpath, sni=example.com

Параметры прокси с XTLS

xtls: Необязательно.

xtls=true

Обернуть транспорт в XTLS. Сам по себе он не объявляет никакого flow: запрос VLESS несёт пустой блок addons, поэтому flow не согласуется. Чтобы объявить его, используйте flow=xtls-rprx-vision ниже; xtls-rprx-direct не реализован.

flow: Необязательно.

flow = xtls-rprx-vision

Выбирает управление потоком XTLS. Единственное поддерживаемое значение — xtls-rprx-vision, включающее фрейминг Vision; значение flow передаётся серверу в addons VLESS.

skip-cert-verify: Необязательно

skip-cert-verify=true

Так же, как TLS.

sni (По умолчанию: hostname)

sni=exmaple.com

Так же, как TLS.


Параметры прокси с REALITY

REALITY — это техника обфускации на основе TLS, которая делает прокси-трафик неотличимым от обычного TLS-трафика к реальному веб-сайту. Может использоваться с протоколом VLESS.

reality: Необязательно.

reality=true

Включить обфускацию REALITY. Требуется целевой сервер, который будет действовать как пункт назначения камуфляжа.

public-key: Обязательно.

public-key=BASE64KEY

Открытый ключ X25519 сервера (base64). Без него рукопожатие REALITY не может быть построено.

short-id: Необязательно.

short-id=abcd1234

Короткий идентификатор, используемый для аутентификации REALITY. Обычно шестнадцатеричная строка.

server-name: Необязательно.

server-name=www.microsoft.com

SNI (Server Name Indication) для представления во время рукопожатия TLS. Это должен быть реальный, часто посещаемый веб-сайт для наилучшего эффекта камуфляжа. Сертификат целевого сервера должен соответствовать этому имени.

fingerprint: Необязательно.

fingerprint=chrome

Отпечаток TLS-клиента для имитации. Поддерживаемые значения: chrome, firefox, safari, ios, edge, 360, qq, android, random, а также остальные имена, перечисленные в разделе fingerprint. Использование распространённого отпечатка браузера помогает избежать обнаружения. Учтите, что android и random здесь не различаются — они обрабатываются как chrome. none и любое значение, которого Chute не знает, приводят к отказу в соединении, потому что системный стек TLS не может выполнить такое рукопожатие.

spiderx: Необязательно.

spiderx=/path

Пользовательский путь для камуфляжа REALITY spider.

Пример с VLESS:

VLESS = vless, 1.2.3.4, 443, uuid=uuid, reality=true, public-key=BASE64KEY, server-name=www.microsoft.com, short-id=abcd, fingerprint=chrome

Примечание: REALITY не использует традиционный сертификат. Соединение использует реальный сертификат сервера камуфляжа.


Параметры прокси с ECH

Encrypted Client Hello скрывает имя сервера от всех, кто наблюдает за соединением. Настоящее имя идёт зашифрованным внутри рукопожатия, а в канале видно public_name, опубликованное в ECHConfig сервера.

ECH работает поверх того же стека, что и отпечаток клиента, поэтому политика должна задавать и fingerprint — без него ech=true ничего не делает, и настоящее имя уходит открытым текстом. Относится к Trojan, VMess и VLESS поверх обычного TLS, включая их транспорты WebSocket, а также к Shadowsocks и ShadowsocksR поверх WebSocket с TLS.

Внимание: Транспорты gRPC и XHTTP не поддерживают ECH. При grpc=true или xhttp=true параметр ech=true молча игнорируется, и настоящее имя сервера уходит открытым текстом. (Отпечаток клиента и постквантовый обмен ключами при этом для gRPC и XHTTP действуют.)

ech: Необязательно.

ech=true

Включить ECH. Если ech-config не задан, Chute ищет ECHConfig в DNS-записи HTTPS для имени сервера — так же, как это делает браузер.

ech-config: Необязательно.

ech-config=AEX+DQBBAAAgACD...

ECHConfigList в base64, используется вместо запроса к DNS. Задайте его, если сервер не публикует запись HTTPS или если нужно закрепить конкретную конфигурацию. Если он задан, ECH включается сам; ech=true дополнительно указывать не нужно.

ech-public-name: Необязательно.

ech-public-name=cover.example.com

Переопределяет прикрывающее имя, отправляемое открытым текстом. По умолчанию это public_name из ECHConfig — именно его ожидает сервер; задавайте это только если конфигурацию публикует другой хост-«фронт».

Пример с Trojan:

Trojan = trojan, 1.2.3.4, 443, password=pw, tls=true, sni=secret.example.com, fingerprint=chrome, ech=true

Если сервер отклонит ECH — чаще всего потому, что конфигурация устарела, — он ответит под прикрывающим именем и предъявит его сертификат, а рукопожатие откатится к внешнему TLS. Пока проверка сертификата включена, соединение тогда не пройдёт проверку подлинности, а не продолжится незаметно; при skip-cert-verify=true это имя никто не проверяет, и сессия молча продолжается под прикрывающим именем. Обновите ech-config или удалите его, чтобы вернуться к запросу в DNS.


TCP Fast Open (Экспериментально)

tfo: Необязательно

tfo=true

Дополнительную информацию о TCP Fast Open можно найти в Википедии. Включение TCP Fast Open может привести к неожиданным сбоям соединения. Chute Android игнорирует tfo.


Общие параметры

udp-relay: Необязательно (По умолчанию: true)

udp-relay=false

Помечает политику как работающую только по TCP. Ретрансляция UDP включена по умолчанию там, где протокол её поддерживает; установите udp-relay=false, чтобы исключить политику из ретрансляции UDP-трафика. Trojan передаёт UDP через обычное TLS-соединение с портом сервера — без WebSocket, gRPC или XHTTP и без ECH, но с отпечатком политики, — поэтому для сервера, который обслуживает только один из этих транспортов, установите udp-relay=false.

mux: Необязательно

mux=true

Включить повторное использование соединений / мультиплексирование. Также принимаются псевдонимы multiplex и reuse. Поддерживается HTTP/HTTPS, SOCKS5/SOCKS5-TLS, Trojan, VMess, VLESS, Hysteria2, Shadowsocks(R), ShadowTLS и MASQUE. AnyTLS, TUIC и SSH не мультиплексируются ни на одной платформе. Для них mux=true не применяется, и при загрузке конфигурации журнал сообщает об этом: Policy <name>: mux=true is not applied: <reason>.

Hysteria2 и MASQUE мультиплексируют через одно общее QUIC-соединение. Все прочие протоколы переносят мультиплексированные соединения в собственном кадровом формате Chute, который может разобрать только понимающий его сервер: стандартные серверы Xray, sing-box и Shadowsocks этого не умеют, поэтому для них mux не включайте.

cert-fingerprint-sha256: Необязательно

cert-fingerprint-sha256=<hex>

Закрепить сертификат сервера по его отпечатку SHA-256. Также принимается псевдоним cert-fp. В настоящее время действует только для MASQUE.

encrypt-method (VMess): Необязательно (По умолчанию: auto)

encrypt-method=aes-128-gcm

Шифрование полезной нагрузки VMess. Поддерживаемые значения: aes-128-gcm, chacha20-poly1305, aes-128-cfb (псевдоним legacy), none.

alpn: Необязательно

alpn=h2|http/1.1

Несколько значений ALPN разделяются |. Читают его только TUIC, Hysteria2 и MASQUE — каждый по умолчанию берёт h3, если он не задан, — а также XHTTP, где он выбирает версию HTTP, на которой говорит транспорт. Все прочие протоколы этот параметр игнорируют и предлагают ALPN, который определяет их транспорт: h2 для gRPC; с fingerprint — http/1.1 для WebSocket и h2,http/1.1 для обычного TLS; без него — никакого ни для того, ни для другого, поскольку тогда рукопожатие выполняет системный стек TLS.

underlying-proxy: Необязательно.

underlying-proxy=OtherProxy

Цепочка прокси: значение указывает другую политику или группу политик, которая переносит трафик этой политики. Сначала открывается соединение с вышестоящей политикой, затем с собственным сервером; A = ..., underlying-proxy=B отправляет A через B. B может указать следующий узел и создать несколько переходов. Пустое значение или DIRECT означает прямое подключение. Имя с пробелом или запятой заключается в кавычки, например underlying-proxy="HK 01". Отсутствующее имя приводит к отказу соединения (fail-closed) и записывается в журнал; отката на DIRECT нет.

Цикл из фиксированных ссылок — в том числе замыкающийся через собственный underlying-proxy первого участника группы Relay — отклоняется при загрузке конфигурации. Цикл, который возникает только из-за текущего выбора группы политик, не отклоняется навсегда: как только группа выберет иное, политика заработает, но пока цикл существует, каждое соединение через неё отклоняется. Какой бы ни была форма цепочки, соединение, в котором вышестоящие узлы вложены глубже 16 уровней, отклоняется, а не разворачивается бесконечно.

Имя сервера этой политики тоже разрешает вышестоящий узел: сервер в цепочке никогда не ищется через локальный резолвер, и Chute не пингует его напрямую — как и любую политику после первого участника группы Relay. Его задержка берётся из проверок работоспособности групп и теста задержки, которые оба достигают его через цепочку — группы url-test, fallback и load-balance проверяют участника цепочки тем же путём, что и настоящее соединение.

В цепочку можно включить любой протокол, кроме Tailscale (встроенная политика TAILSCALE), движок которого сам устанавливает свои соединения. Политика, которая достигает своего сервера по потоку, — HTTP, SOCKS5, Shadowsocks, VMess, VLESS, Trojan, AnyTLS, SSH, XHTTP поверх HTTP/1.1 или HTTP/2 и остальные — открывает этот поток через вышестоящий узел. Hysteria2, TUIC, MASQUE и XHTTP поверх HTTP/3 (TLS и alpn=h3) работают по QUIC, а WireGuard и AmneziaWG отправляют собственные датаграммы, поэтому они идут через UDP-ретрансляцию вышестоящего узла: вышестоящий узел (для группы — её текущий выбор) должен передавать UDP, как это делают Shadowsocks, SOCKS5, VMess, VLESS, Trojan и Hysteria2 и не делает HTTP- или HTTPS-прокси. Через вышестоящий узел без UDP каждое соединение через них отклоняется и записывается в журнал, но никогда не отправляется напрямую. В цепочке политика QUIC отправляет датаграммы не длиннее 1200 байт, а туннель WireGuard или AmneziaWG использует внутренний MTU 1280, если MTU не указан (mtu или wg-mtu в его разделе), чтобы обёрнутые датаграммы всё ещё помещались в путь на 1500 байт. WireGuard, AmneziaWG и SSH держат одно соединение для всего своего трафика через собственный вышестоящий узел, поэтому ни один из них не может быть последующим участником группы Relay.

UDP тоже идёт по цепочке. VMess, VLESS, Trojan и AnyTLS передают UDP внутри потока, поэтому их UDP работает через любой вышестоящий узел. Shadowsocks (включая ShadowsocksR и Shadowsocks 2022) и SOCKS5 ретранслируют UDP датаграммами, как и протоколы на QUIC и WireGuard: их UDP работает, только пока вышестоящий узел передаёт UDP, — если только узел Shadowsocks не использует udp-over-tcp: тогда он передаёт UDP внутри потоков, и его UDP работает через любой вышестоящий узел. Политики SSH, HTTP и HTTPS UDP не передают вовсе. UDP, который политика в цепочке передать не может, обрабатывается по udp-policy-not-supported-behaviour (по умолчанию REJECT).

dialer-proxy (mihomo) и detour (sing-box) импортируются в этот параметр, а override: dialer-proxy провайдера прокси — в underlying-proxy провайдера. Группа relay из Clash или mihomo остаётся группой Relay с участниками в том же порядке. Чтобы направить всех участников группы политик через один вышестоящий узел, задайте группе underlying-proxy. Чтобы направить все прокси-политики через один вышестоящий узел, задайте global-underlying-proxy в [General].

test-url: Необязательно.

test-url=http://www.gstatic.com/generate_204

URL для теста задержки этой политики, когда она входит в группу url-test или fallback: группа проверяет этого участника по этому URL вместо своего url. Если параметр не задан, используется URL группы.

interface: Необязательно

interface=en0

Направляет TCP-соединения, которые эта политика открывает к своему серверу, через указанный сетевой интерфейс — например, en0 на Mac или wlan0 на Android, — а не через тот, который выбирает маршрут по умолчанию. Если этот интерфейс недоступен, соединение завершается неудачей, а не уходит другим путём; allow-other-interface=true позволяет ему вместо этого пойти по маршруту по умолчанию. Параметр работает в Chute Mac и Chute Android, а iOS и tvOS его игнорируют. Ретрансляция UDP к интерфейсу не привязывается, как и протоколы на основе QUIC (TUIC, Hysteria2, MASQUE), WireGuard и Tailscale.


Параметры прокси с AnyTLS

AnyTLS — это протокол прокси на основе TLS с обфускацией заполнением.

AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com, skip-cert-verify=false

password: Обязательно.

Пароль/парольная фраза, используемая для аутентификации.

sni (По умолчанию: hostname)

sni=exmaple.com

Так же, как TLS.

skip-cert-verify: Необязательно

skip-cert-verify=true

Так же, как TLS.

Схема заполнения: Необязательно

Заполнение настраивается с помощью stop=N и числовых ключей для каждого пакета:

AnyTLS = anytls, 1.2.3.4, 443, password, sni=example.com, stop=2, 0=30-30, 1=100-400+c
Параметр Описание
stop Количество заполняемых пакетов
0, 1, 2, ... Схема заполнения для каждого пакета (числовые ключи)

Каждая схема — это список сегментов, соединенных +, где сегмент — это либо c (проверка), либо диапазон байтов min-max (максимум 16384), например stop=2, 0=30-30, 1=100-400+c. Разделителем работает и ,, но только если значение взято в кавычки — 1="100-400,c", — потому что запятая без кавычек завершает поле и ломает строку. Предпочитайте +.


Параметры прокси с TUIC

TUIC — это протокол прокси на основе QUIC, предлагающий мультиплексированную ретрансляцию TCP и UDP. Ключевое слово tuic-v5 (написание Surge) тоже принимается; политика сохраняется как tuic.

TUIC = tuic, 1.2.3.4, 443, uuid=uuid, password=password, sni=example.com, skip-cert-verify=false, alpn=h3

uuid: Обязательно.

UUID для аутентификации.

password: Обязательно.

Пароль для аутентификации.

sni (По умолчанию: hostname)

sni=exmaple.com

Так же, как TLS.

skip-cert-verify: Необязательно

skip-cert-verify=true

Так же, как TLS.

alpn: Необязательно

alpn=h3

Укажите строку ALPN для QUIC-соединения.


Параметры прокси с Hysteria2

Hysteria2 — это протокол прокси на основе QUIC для сценариев с высокой пропускной способностью.

Hysteria2 = hysteria2, 1.2.3.4, 443, auth=password, sni=example.com, skip-cert-verify=false, up=10, down=100, alpn=h3

auth: Обязательно.

Пароль/токен аутентификации.

sni (По умолчанию: hostname)

sni=exmaple.com

Так же, как TLS.

skip-cert-verify: Необязательно

skip-cert-verify=true

Так же, как TLS.

up: Необязательно (Мбит/с)

up=10

Пропускная способность исходящего потока (upload) в Мбит/с. Принимается и сохраняется, но не используется: значение предназначено для алгоритма управления перегрузкой Brutal из Hysteria2, который этот движок не запускает. Для каждой политики, где оно задано, пишется уведомление. В сеть уходит down= — скорость, которую клиент объявляет при аутентификации.

down: Необязательно (Мбит/с)

down=100

Пропускная способность скачивания в Мбит/с.

alpn: Необязательно

alpn=h3

Укажите строку ALPN для QUIC-соединения.

obfs: Необязательно

obfs=salamander

Включить обфускацию Salamander для QUIC-трафика. Salamander использует BLAKE2b-256 XOR для обфускации QUIC-пакетов, делая их устойчивыми к DPI (глубокому анализу пакетов).

obfs-password: Необязательно

obfs-password=your-obfuscation-key

Пароль/ключ, используемый для обфускации Salamander. Требуется, когда установлен obfs=salamander.


Параметры прокси с WireGuard

WireGuard — это современный VPN-протокол. Chute поддерживает WireGuard как исходящий прокси-сервер, либо прямо в строке политики, либо по ссылке на именованный раздел [WireGuard].

Конфигурация в строке политики:

WireGuard = wireguard, private-key=base64key, peer-public-key=base64key, self-ip=10.0.0.2, server=1.2.3.4, port=51820

Ссылка на раздел (рекомендуется):

WireGuard = wireguard, section-name=wg0

См. Конфигурация WireGuard для синтаксиса раздела [WireGuard].

private-key: Обязательно (только в строке политики).

Закрытый ключ WireGuard в кодировке base64.

peer-public-key: Обязательно (только в строке политики).

Открытый ключ пира WireGuard в кодировке base64.

self-ip: Необязательно (в строке политики).

Локальный IP-адрес, назначенный интерфейсу WireGuard (например, 10.0.0.2).

self-ip-v6: Необязательно (в строке политики).

Локальный IPv6-адрес, назначенный интерфейсу WireGuard.

server: Обязательно.

Адрес удалённого сервера WireGuard (может задаваться в связанном разделе [WireGuard] вместо строки политики).

port: Обязательно.

Порт удалённого сервера WireGuard (может задаваться в связанном разделе [WireGuard] вместо строки политики).

preshared-key: Необязательно.

Предварительно разделённый ключ (PSK) в кодировке base64 для постквантовой устойчивости.

allowed-ips: Необязательно (в строке политики).

allowed-ips="10.0.0.0/8, 192.168.0.0/16"

Назначения, которые переносит пир, в виде CIDR через запятую; возьмите значение в кавычки, поскольку оно содержит запятые. Назначение за их пределами отклоняется или отбрасывается, потому что пир не может направить ответ обратно. Без этого параметра переносится всё. Форму в виде раздела см. в Конфигурация WireGuard.

keepalive: Необязательно (секунды).

keepalive=25

Интервал постоянного keepalive для обхода NAT. Без этого параметра keepalive не отправляется.

mtu: Необязательно.

mtu=1420

MTU для интерфейса WireGuard.

reserved: Необязательно.

reserved=0,1,2

Зарезервированные байты для заголовка пакета WireGuard. Разбираются, но не действуют в текущем движке — значение не поддерживается FFI BoringTun и игнорируется с записью предупреждения в журнал.


Параметры прокси с ShadowTLS

ShadowTLS — это протокол прокси на основе TLS, который инкапсулирует трафик в стандартную сессию TLS 1.3. Chute говорит на ShadowTLS v3: пароль передаётся как HMAC в поле session_id сообщения ClientHello, поэтому аутентификация происходит внутри рукопожатия, а не после него.

Внутри установленного туннеля Chute отправляет приветствие SOCKS5 без аутентификации и SOCKS5 CONNECT, поэтому сервер за ShadowTLS должен быть прокси SOCKS5 без аутентификации. Развёртывание shadow-tls, которое перенаправляет на порт Shadowsocks, а не SOCKS5, завершает рукопожатие TLS, а затем завершается ошибкой.

ShadowTLS = shadowtls, 1.2.3.4, 443, password=password, sni=example.com, skip-cert-verify=false, fingerprint=chrome

password: Обязательно.

Пароль, используемый для аутентификации рукопожатия ShadowTLS.

sni (По умолчанию: hostname)

sni=example.com

Так же, как TLS. Кроме того, именно указание этого параметра включает проверку сертификата прикрытия — см. ниже.

skip-cert-verify: Необязательно

skip-cert-verify=true

Проверку включает sni=. Если sni= указан, а skip-cert-verify отсутствует или равен false, цепочка и имя хоста сертификата, который предъявляет прикрывающий сайт, проверяются по этому имени, и при неудаче соединение обрывается. Без sni= сертификат не проверяется, а при первом использовании политики в журнал один раз пишется предупреждение: единственное имеющееся имя — это имя сервера-ретранслятора, а не прикрывающего сайта. skip-cert-verify=true пропускает проверку в обоих случаях.

fingerprint: Необязательно

fingerprint=chrome

Отпечаток TLS-клиента для имитации. Поддерживаемые значения: chrome, firefox, safari, ios, edge, 360, qq, android, random, а также остальные имена, перечисленные в разделе fingerprint. Использование распространённого отпечатка браузера помогает избежать обнаружения. Учтите, что android и random здесь не различаются — они обрабатываются как chrome. none и любое значение, которого Chute не знает, приводят к отказу в соединении, потому что системный стек TLS не может выполнить такое рукопожатие.


Параметры прокси с MASQUE

MASQUE — это основанный на HTTP/3 прокси-протокол, туннелирующий трафик поверх QUIC. Политика MASQUE требует type, host и port; токен аутентификации token необязателен.

ProxyMASQUE = masque, 1.2.3.4, 443, token=auth-token, mode=connect-udp, sni=example.com, alpn=h3, skip-cert-verify=false, mux=true

token: Необязательно

token=auth-token

Необязательный Bearer-токен аутентификации для сервера MASQUE. Также принимается псевдоним masque-token=.

mode: Необязательно

mode=connect-udp

Принимается для совместимости, но не меняет поведение туннелирования: TCP-потоки всегда используют обычный туннель CONNECT, а UDP-потоки всегда используют connect-udp. Также принимается псевдоним masque-mode=.

mux: Необязательно

mux=true

Включить мультиплексирование поверх общего QUIC-соединения.

sni / alpn / skip-cert-verify: Необязательно

Так же как для TLS. Поскольку MASQUE работает поверх QUIC, обычно используется alpn=h3.


Параметры прокси с SSH

Полное описание см. в разделе SSH.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""