Примечания к выпуску Chute iOS
Версия 1.2.2 (382)
Новые возможности:
- Добавлены цепочки прокси: политика может указать
underlying-proxyи выходить к своему серверу через этот прокси, группа политик может направить всех своих участников через один вышестоящий узел, а новая строка «Фронтальный прокси» в разделе «Дополнительно» (global-underlying-proxy) делает то же самое для всех узлов, у которых нет собственного вышестоящего узла. В цепочку можно включить любой транспорт, кроме Tailscale: потоковые протоколы идут внутри потока вышестоящего узла; Hysteria2, TUIC, MASQUE и XHTTP поверх HTTP/3 — через его UDP-ретрансляцию пакетами фиксированного размера 1280 байт; туннели WireGuard и AmneziaWG проходят через него с внутренним MTU 1280 байт; сеансы SSH и AnyTLS открываются поверх него. Цепочка, которая замыкается в цикл, вложена глубже 16 уровней или ссылается на несуществующую политику, отклоняется и никогда не отправляется напрямую - Добавлены группы ретрансляции (
relay, как в Clash и mihomo): участники выстраиваются в цепочку в том порядке, в каком записаны, — к первому подключение идёт напрямую, к каждому следующему — через предыдущих, а последний подключается к цели. В редакторе групп появился тип Relay; редактор хранит участников в этом порядке и требует не менее двух - Добавлены случайные группы (
random, как в Shadowrocket): для каждого соединения участник выбирается случайно, а для UDP — только среди участников, которые передают UDP. Переключать в такой группе нечего, поэтому её нет там, где выбирается политика группы, а редактор групп сохраняет её именно как случайную группу - На панель мониторинга и в веб-консоль добавлена цепочка прокси: в подробностях запроса и в списке UDP указан каждый переход (
Airport/HK-01 → Landing), а экспорт HAR сохраняет этот путь - В редакторы провайдеров правил и прокси добавлена настройка «Загрузка через»:
policy=загружает список через выбранную политику, а если политики с таким именем нет, загрузка завершается ошибкой, а не идёт напрямую - В редактор Shadowsocks добавлен UDP поверх TCP —
udp-over-tcp, версия 1 или 2, — так что UDP прокси идёт внутри его TCP-соединений и работает даже в цепочке, вышестоящий узел которой не передаёт UDP - Добавлен UDP для VMess и VLESS: раньше отправленный в них UDP сразу отклонялся (срабатывал
udp-policy-not-supported-behaviour, по умолчанию REJECT); теперь он идёт по отдельному соединению на каждый адрес назначения, как в mihomo, sing-box и Shadowrocket - В «Перезапись тела» добавлен jq:
http-request-jqиhttp-response-jqвыполняют полноценную программу jq над JSON-телом, а в редакторе появилось поле «ПРОГРАММА JQ»; о недопустимой программе сообщается, и её правило пропускается, а если тело не в формате JSON, программа завершается ошибкой или её вывод пуст, тело остаётся без изменений - Добавлены общие скрипты: у скрипта
type=genericнет автоматического триггера, и он запускается только по требованию — кнопкой «Запустить» в его редакторе или черезGET /api/scriptsиPOST /api/scripts/run. В редакторе скриптов также появилось поле «Имя события»: доставляется толькоnetwork-changed, поэтому скрипт события, указавший любое другое событие, никогда не запустится - Добавлены отдельные пулы DNS:
direct-dns-serverразрешает домены, которые правило направляет в DIRECT,proxy-dns-serverразрешает имена хостов самих ваших прокси-серверов, а кfallback-dns-serverобращаются, когда основные серверы не дают ответа; для каждого пула резервом служат глобальные серверы, и в редакторе DNS у каждого своя строка - Для вышестоящих DNS-серверов, включая DoQ и DoH3, добавлены
#proxy/#proxy=<policy>: QUIC-резолвер работает через UDP-ретрансляцию политики; если политика не может передавать UDP, этот сервер пропускается, а не опрашивается напрямую; обычный резолвер, направленный через политику, переходит на DNS поверх TCP; а для путей, где DNS поверх UDP отбрасывается, принимаются простые серверыtcp:// - Добавлены
encrypted-dns-follow-outbound-mode,allow-dns-svcb— пока он выключен, на запросы HTTPS и SVCB приходит пустой ответ, — и параметры отдельных серверов#h3,#skip-cert-verify,#disable-ipv4,#disable-ipv6и#disable-qtype= - Расширено «Локальное сопоставление DNS»: запись
[Host]сохраняет все перечисленные в ней серверы и опрашивает их параллельно, сопоставляет одному домену несколько адресов, может использовать в качестве ключа набор правил (RULE-SET:<url>), запускает для этого домена скриптtype=dns(script:<name>) и принимаетssid:<name>, чтобы сопоставление действовало в определённой сети - Добавлены уведомления правил: любое правило, включая FINAL, принимает
notification-text=иnotification-interval=и при совпадении показывает уведомление — не чаще одного раза за интервал для каждого правила; уведомления подчиняются переключателю «Разрешить уведомления» в приложении, а нажатие на уведомление открывает содержащийся в нём URL - Добавлено
FINAL,<policy>,dns-failed: если имя не удаётся разрешить, соединение не закрывается, а открывается через политику FINAL с разрешением имени на удалённой стороне - Семейство REJECT стало полноценными политиками — REJECT-DROP, REJECT-NO-DROP, REJECT-TINYGIF, REJECT-IMG, REJECT-DICT, REJECT-ARRAY, REJECT-200 и REJECT-VIDEO: каждая отвечает на HTTP-запрос телом, описанным в документации, а хост, отклонённый более 50 раз за 30 секунд, переводится на REJECT-DROP; они есть в выборе политики, который теперь записывает токены DIRECT / REJECT / PROXY там, где раньше записывалась локализованная метка, и исправляет метки, оставленные более старой сборкой
- Добавлены встроенные наборы правил: разделы
[Ruleset Name]показаны в редакторе конфигурации отдельно, редактируются построчно, и на них можно ссылаться какRULE-SET,<name>, в том числе друг из друга — до восьми уровней вложенности, циклы отклоняются - Добавлено семейство SSID: переопределения DNS из
[SSID Setting]применяются в зависимости от сети — имена,BSSID:,TYPE:WIFI/CELLULAR/WIRED,ROUTER:, имена в кавычках и с подстановочными знаками — и при смене сети очищают кэш предыдущего резолвера; группы политикssidиsubnetвыбирают участников по текущей сети, правила SUBNET проверяют её, аsuspend=trueтеперь останавливает туннель: запись с именем сети илиTYPE:становится правилом отключения по требованию, записьBSSID:,ROUTER:или с подстановочными знаками приостанавливается самим расширением, и расширение предупреждает, если «Всегда включён» вернёт туннель обратно - Добавлены диапазоны и сравнения для DEST-PORT, SRC-PORT и IN-PORT (
80-81,>=50000, списки через/), значенияHOSTNAME-TYPE—IPv4,IPv6,DOMAINиSIMPLE, — а также рабочие правила IN-TYPE, IN-USER и IN-NAME: теперь они срабатывают на реальном трафике, а не только при пробном прогоне - Добавлены настройки MitM: расшифровка HTTP/2 (
h2), блокировка QUIC к расшифровываемым хостам, чтобы HTTP/3 не обходил расшифровку (auto-quic-block), исключение хостов из расшифровки и ключевые слова списка хостов<ipv4-address>,<ipv6-address>и<simple-hostname> - Добавлена маршрутизация QUIC по домену: имя берётся из QUIC Initial клиента, ClientHello, разбитый на несколько пакетов Initial, собирается заново, а поток придерживается, пока имя не станет известно, — поэтому правила DOMAIN работают и для соединений HTTP/3, открытых по адресу без доменного имени
- Добавлен
icmp-auto-reply, включённый по умолчанию: на ping внутри туннеля приходит локальный ответ — по IPv4 и IPv6 — вместо тайм-аута - Добавлен
tun-included-routes: перечисленные CIDR добавляются к маршрутам туннеля после маршрута по умолчанию, поэтому диапазон, который иначе забрала бы собственная подсеть интерфейса Wi-Fi или другой VPN (система предпочитает более конкретный маршрут), идёт через Chute. Записи, которые отрезали бы сам туннель (loopback, собственные подсети туннеля, link-local, многоадресные, широковещательные, длина префикса 0), отклоняются с записью в журнал, частные диапазоны принимаются с предупреждением, а изменённый список применяется при перезагрузке конфигурации без перезапуска туннеля - Расширен импорт: правила GEOSITE и категорийные правила GEOIP из mihomo разворачиваются в работающие наборы правил, группы
policy-pathсоздают провайдера сupdate-interval, фильтрами и списками включения,SUB-RULEиз mihomo разворачивается в правила AND,detourиз sing-box иdialer-proxyиз mihomo импортируются как цепочки,allowed-ipsWireGuard компилируется и соблюдается, поэтому раздельный туннель больше не забирает себе все адреса назначения, аinterface=/allow-other-interface=политики привязывает её соединения к одному сетевому интерфейсу - Расширен API скриптов:
$httpAPIобращается к собственным маршрутам движка без открытия сокета,$httpClientучитываетpolicy,read-etc-hostsпередаёт файл hosts в DNS, а$event.nameсообщает, какое событие сработало на самом деле - Расширены настройки имитации ответов — тело может быть текстом, файлом, base64 или GIF 1×1, с кодом состояния и проверкой, — а для перезаписи URL и заголовков добавлены таблицы типов с режимом регулярного выражения для замены значения заголовка
Улучшения:
- Теперь для работы Chute требуется iOS 15 или новее
- Все структурированные редакторы теперь сохраняют то, чего не показывают: ключи, которые редактор не отображает, — прочие параметры правила, подправила AND / OR / NOT, остальные адреса записи
[Host], прочие строки заголовка модуля — переносятся как есть, поэтому открытие и сохранение конфигурации больше её не переписывает, а запись неизвестного редактору типа редактируется как текст - Редакторы перезаписи тела, перезаписи заголовков, перезаписи URL, Map Local, имитации ответов и скриптов записывают то, что читает движок: скрипт сохраняется со своим
type=, значение JSONPath сохраняет свой тип, а Map Local сохраняетstatus-code,data-typeи заголовки - Импорт опубликованного профиля больше не теряет маршрутизацию:
dns-serverпринимает URL шифрованного DNS, строки слушателей принимают пароль, участники группы в кавычках больше не теряются, логические правила sing-box преобразуются так, как описано в документации, участникиPASSотбрасываются, а не превращаются в REJECT, а неподдерживаемый протокол или тип группы вызывает предупреждение, а не выводит из строя всю группу, — в импортированных профилях mihomo правил, которые никогда не могут сработать, раньше было большинство, а теперь почти не осталось - Наборам правил нужно гораздо меньше памяти: провайдеры загружаются по очереди, а не перестают загружаться совсем после 35-го, пиковое потребление памяти при преобразовании снизилось на 62–73 %, число индексных соединений ограничено, и при нехватке памяти они освобождаются, а полезная нагрузка, слишком большая для устройства, отклоняется с указанием причины в статусе набора правил
- Ограничения ресурсов не дают слишком большой конфигурации вывести расширение туннеля за предел памяти: на iOS ограничены хранилище сертификатов MitM, очередь записи трафика, размер и число скриптов, бюджет запросов консоли, число узлов Tailscale и кэш DNS
- Проверка задержки использует правильную цель: учитываются
test-urlиtest-timeoutгруппы,proxy-test-urlпрофиля, а также собственныеtest-urlиexpected-statusучастника, а узел в цепочке проверяется через свою цепочку, а не напрямую - Веб-консоль и API управления: правило, добавленное во время работы, больше не остаётся после перезагрузки того же профиля, курсоры журнала только растут, поэтому опрос не пропускает записи, а в подробностях соединения указана цепочка прокси
- ShadowTLS теперь проверяет сертификат сайта-прикрытия, если задан
sni=, как это делает sing-box;skip-cert-verify=trueотключает проверку (раньше этот параметр игнорировался, и сертификат не проверялся вовсе), а безsni=проверка пропускается с предупреждением - Загрузки и подписки: каждая загрузка сохраняется в отдельный файл, а формат определяется по содержимому, поэтому обновление больше не перечитывает свою первую загрузку и не применяет профиль другого адреса; профиль, преобразованный из Clash или sing-box, сохраняется как
.confи получает имя по тем же правилам, что и во всех приложениях Chute; если имя занято, к нему добавляется номер вместо перезаписи - Работа с конфигурациями: сохранение под другим именем сначала запрашивает подтверждение, перезагружает туннель, если перезаписывает используемый файл, и больше не удаляет файл, из которого была открыта конфигурация; «Синхронизация из iCloud» засчитывает уже установленные конфигурации в лимит лицензии; скрытые группы политик не показываются в списках «Глобальный» и select, но движок по-прежнему может к ним обращаться; «Глобальный» всегда показывает используемую группу
- Страница загрузки по Wi-Fi сохраняет расширение полученного файла, отклоняет занятое имя с указанием причины и передаёт имена с символами вне ASCII так, как предписывает RFC 6266, поэтому
上传的配置.confприходит именно с этим именем - Новые настройки, сообщения и уведомления доступны на всех восьми встроенных языках, а уведомления туннеля сообщают причину его остановки
Исправления ошибок:
- Исправлено: Hysteria2 отбрасывал любую UDP-датаграмму, не помещавшуюся в один кадр QUIC DATAGRAM, из-за чего HTTP/3 приложения не проходил и откатывался на TCP; теперь большие датаграммы при отправке разбиваются на части, а разбитые ответы сервера собираются обратно
- Исправлено: перезапущенный туннель повторно использовал первый локальный порт и номера последовательности TCP прошлого запуска, и пир WireGuard, ещё державший старое соединение, отвечал на них сбросом; теперь TCP-стек туннеля инициализируется из системного источника случайных чисел и выбирает начальные номера последовательности так, как описывает RFC 6528
- Исправлено: XHTTP через туннель зависал после первой записи приложения, поэтому рукопожатие TLS не завершалось, а выгрузка отправляла только один фрагмент; теперь каждая запись завершается по порядку, а если выгрузки ждут больше 1 МБ, следующая запись ожидает, пока очередь не освободится
- Исправлено:
PROTOCOL,TCPиPROTOCOL,UDPникогда не срабатывали; теперь транспорт определяется для каждого входящего соединения, так что привычный способ блокировать QUIC правилом AND работает - Исправлено:
RULE-SETиDOMAIN-SETвнутри AND / OR / NOT всегда давали «ложь» — из-за чегоNOT,((RULE-SET,…))отклонял и местный трафик, — аSCRIPTвнутри логического правила всегда давал «истину» - Исправлено:
RULE-SET,<name>,<policy>,no-resolveтерялno-resolveпри записи по имени, GEOIP и IP-ASNUNKNOWNникогда не срабатывали,status-code=в Map Local игнорировался при HTTP/2, а перезапись заголовков ответа при обычном HTTP сравнивалась только с путём, поэтому шаблон, написанный для полного URL, не мог сработать никогда - Исправлено:
block-quicпринимал только одно из значений Surge, а любое другое значение означало, что QUIC вообще не блокируется - Исправлен API скриптов:
$klne.getPolicyGroups()иselectPolicy()больше не выбрасывают исключение при первом вызове,reloadConfiguration()действительно перезагружает,getActiveConnections()сообщает настоящие хост, порт и id,closeConnection()действительно закрывает, а скрипт перед отправкой сrequires-bodyнаконец получает тело - Исправлено:
[Replica] keyword-filterсравнивал имя хоста целиком, вместо того чтобы проверять, содержит ли оно ключевое слово, поэтомуkeyword-filter = googleне охватывалwww.google.com - Исправлено: правила PROCESS-NAME, PROCESS-PATH и PROCESS-NAME-REGEX срабатывали на трафик браузера на iOS, где они сравнивали не имя процесса, а название браузера как продукта; эти правила работают только на macOS и на iOS больше ни с чем не совпадают
- Исправлено: сохранённый профиль панели мониторинга считывался как объект неверного типа, и приложение падало при каждом касании; после перетаскивания или удаления строк в списке с дубликатами таблица расходилась со своими данными; уже закрытый экран получал обратный вызов, что приводило к сбоям
- Исправлено: автообновление подписки блокировало главный поток на 30 секунд, и если приложение уходило в фон посреди обновления, watchdog его завершал; переключатель в Пункте управления всегда срабатывал с ошибкой, потому что у виджета не было разрешения управлять VPN; «Картинка в картинке» открывалась дважды; продолжение виджета возобновлялось дважды
- Исправлены ошибки загрузок и имён: сохранённый файл загрузки заново считывался при следующем обновлении; адрес получал профиль другого адреса, если оба предлагали одно и то же имя; импорт или копирование удаляли в iCloud файл, из которого читали; выгруженный файл терял всё после первой точки в имени; подписка, адрес которой заканчивался одним лишь расширением, сохранялась как скрытый файл; правка сохранялась поверх доступной для чтения конфигурации без запроса
- Исправлено: ссылка
chute://— например, из автоматизации «Быстрых команд» — ничего не делала, если Chute ещё не был запущен; теперь она обрабатывается и при холодном запуске - Различные улучшения стабильности и производительности
Версия 1.2.0 (351)
Новые возможности:
- В панель управления добавлен адрес веб-консоли: строка «Веб-консоль» показывает хост, а нажатие предлагает «Открыть», «Копировать адрес» и «Копировать токен доступа» — «Открыть» передаёт токен в URL, так что вход происходит без ввода
- В конец раздела «ЛОКАЛЬНЫЙ ПРОКСИ» панели управления добавлен «Диагностический пакет среды выполнения»: работающий движок собирает очищенный архив (конфигурация, снимок состояния, события этого запуска, загруженные правила и политики, DNS, трафик и части журнала) и передаёт его в меню «Поделиться»; туннель должен быть подключён, но
external-http-controllerне нужен - В Настройки → ДИАГНОСТИКА добавлен «Офлайн-диагностический пакет», который приложение собирает без работающего туннеля: сведения об устройстве и приложении, VPN-профиль в том виде, в каком его хранит iOS, сводка выбранной конфигурации и её ошибок разбора, три страницы диагностики в виде текста, очищенное начало конфигурации, то, как завершился предыдущий запуск, хвосты журнала последнего сеанса и ожидающие отправки отчёты о сбоях
- В экран сеанса добавлена функция «Поделиться журналом», которая предлагает все части журнала сеанса
- В сведения о сеансе добавлена атрибуция перезаписи: раздел «ПОЛИТИКА» теперь рядом с правилом и политикой, направившими запрос, называет правило перезаписи URL, заголовков или тела либо имитации ответов, которое его изменило
- Добавлено уведомление «Изменение сетевого адреса», заменяющее «Изменение выходного IP»: оно показывает собственные адреса IPv4 и IPv6 этого устройства на физическом канале, по строке на семейство, и помечает IPv4 за NAT; IPv6 и маршрутизируемый IPv4 читаются локально, и только IPv4 за NAT требует одного STUN-запроса
- Добавлен французский как встроенный язык
- Добавлена переработанная страница загрузки по Wi-Fi в стиле веб-консоли, локализованная на девять языков
- В веб-консоль добавлены вкладки «Текущие» и «История», вид подробностей (совпавшее правило, источник правила, политика, адаптер, источник DNS, процесс, причина закрытия, тела запроса и ответа), страница «Правила», показывающая, какие правила перезаписи срабатывали, и страница «Диагностика» (объём памяти, CPU, время работы, потоки, как завершился предыдущий запуск, счётчик отказов, журнал событий, снимок Tailscale и пробы ping / DNS / выход / URL-тест); консоль теперь полностью переведена на все девять языков
- Добавлены точки входа HTTP-API управления:
/api/health,/api/events,/api/tailscale, пробы под/api/diagnostics/,/api/connections/export?format=har,/api/diagnostics/bundle, управление правилами перезаписи и хостами MitM через/api/rewritesи/api/mitm/hosts,POST /api/rules/matchдля пробного прогона запроса по таблице правил (сообщаются оба прохода DNS),GET|PUT /api/loglevelдля смены уровня журнала и разделов подсистем без перезагрузки иPOST /api/config/validateдля проверки профиля без его применения
Улучшения:
- HTTP-API управления больше не открыт без аутентификации, когда в конфигурации нет
external-http-secret: движок генерирует токен, который панель управления показывает и копирует; чтобы сохранить анонимный доступ, задайтеexternal-http-secret = none; кроме того, адрес прослушивания с подстановкой больше не считается loopback - Сопоставление правил на больших списках стало значительно быстрее: содержимое RULE-SET и DOMAIN-SET индексируется при загрузке или восстановлении вместо потокового просмотра на каждое соединение, а таблица правил, состоящая только из доменных правил, сопоставляется по хешированному плану — для списка в 50 тысяч строк один поиск сокращается примерно с 94 мс до менее 2 мс при около 100 КБ памяти на индекс
- UDP-потоки сопоставляются один раз: решение по потоку запоминается на 60 секунд, так что последующие датаграммы пропускают оба прохода сопоставления и DNS-запрос между ними
- Лучшее восстановление после смены сети: туннели, исходный адрес которых больше не существует ни на одном интерфейсе, закрываются, а не держат приложения до тайм-аута простоя; смена пути того же типа (переподключение к сотовой сети) теперь замечается, а путь, который принимает соединения, но не передаёт данные, сообщается как «чёрная дыра»
- Журналы сеансов записываются частями по 8 МБ (до восьми на запуск, самые старые удаляются), каждая начинается с заголовка с именем запуска и временем его начала, так что длинный сеанс больше не порождает один файл, слишком большой для получения; просмотрщик журнала загружает все части по порядку и продолжает следить за той, что пишется
- Движок держит маркер запуска во время работы и при следующем старте сообщает, завершился ли предыдущий запуск штатно или был убит — в заголовке журнала, в
/api/statusи в обоих диагностических пакетах - Экспорт HAR теперь собирается движком из записанных кадров, поэтому коды состояния, метки времени и тайминги реальны, а каждая запись несёт под
_klвыбранную политику, совпавшее правило и срабатывания перезаписи; «Экспорт HAR» на панели и в подробностях соединения используют его - Лицензия нужна только для трёх функций, которые продаёт страница покупки, — Расширенное управление сервером, MitM и Запись трафика; Определение протокола, Optimus DNS, Внешний доступ, HTTP API, Веб-консоль и «Очистить кэш DNS» её больше не требуют
- Панель управления следует за туннелем: сбрасывает состояние при остановке туннеля, повторно запрашивает при переподключении и предлагает адрес консоли только пока страница действительно обслуживается
- Редактор конфигурации блокирует оба переключателя слушателей, пока включён
allow-wifi-access, поскольку движок сам расширяет оба слушателя, и восстанавливает настроенные интерфейсы, когда флаг выключен - Если «Восстановить покупку IAP» ничего не находит, предупреждение предлагает «Открыть руководство», открывающее кроссплатформенные инструкции по лицензии на языке приложения; текст о покупке теперь говорит, что одна покупка покрывает три iPhone или iPad и три Apple TV
- Список узлов tailnet теперь выглядит как остальные списки — вставная группировка, строка «Нет элементов» для пустого раздела — и заново запрашивает состояние узлов при каждом показе
- При
loglevel = infoобъёмный поток, передавший не менее 1 МиБ, при закрытии пишет одну строку о том, сколько он ждал удалённую сторону и сколько — приложение - Страницы диагностики предлагают «Копировать» только в строках, где есть что копировать
Исправления ошибок:
- Исправлен MitM в режиме TUN: хост, совпавший с правилом MitM, зависал до тайм-аута, поэтому перезапись заголовков, перезапись тела, имитация ответов и расшифрованные записи для HTTPS никогда не применялись к трафику приложений (трафик через локальный HTTP/SOCKS5-прокси не затрагивался)
- Исправлено бездействие
allow-wifi-access: локальные слушатели HTTP и SOCKS5 оставались на loopback, и ничто в Wi-Fi не могло до них достучаться; теперь флаг (иallow-lansing-box при импорте) расширяет оба слушателя, а его отключение перепривязывает их - Исправлена перезапись заголовка ответа через MitM HTTP/1.1, которая записывалась как применённая, тогда как клиент получал исходный заголовок, и никогда не совпадала с правилом, написанным по полному URL
- Исправлен Mock Response, который строил ответ из заголовка запроса — строка запроса вместо строки состояния, перенесённые заголовки запроса, неверный Content-Length — и в открытом HTTP отправлял перед ним заголовок исходного сервера
- Исправлены IP-правила с
no-resolve(IP-CIDR, GEOIP, IP-ASN), пропускавшие соединение к IP-литералу, когда определение протокола подставляло для него заголовок Host или имя из обратного DNS; определённый IP-литерал больше не совпадает и с правилами DOMAIN, так что вердикт не зависит от того, включено ли определение - Исправлены строки RULE-SET с опциями после содержимого (
GEOIP,CN,no-resolve,DOMAIN,example.com,force-remote-dns), которые отбрасывались или ни с чем не совпадали, и подправила AND/OR/NOT, терявшиеno-resolve - Исправлено правило HOSTNAME-TYPE, которое никогда не совпадало: тип записи теперь A для соединения, установленного по IPv4, и AAAA по IPv6, и подсказка в редакторе правил об этом говорит
- Исправлено: домен, направленный на прокси правилом AND/OR/NOT с доменным подправилом, всё равно по-настоящему разрешался DNS-сервером, из-за чего ответ DNS и решение о маршрутизации расходились
- Исправлено чтение IPv6-литерала в квадратных скобках в определённом заголовке Host (
[2001:db8::1]:8080) как имени хоста[2001 - Исправлено: запуск туннеля с группой select, установленной не на первого участника, публиковал уведомление «группа политик переключена», а перестроения после запуска вызывали предупреждение о дребезге; группа без запомненного выбора теперь следует
default=профиля, а не принудительно ставится на первого участника - Исправлено зависание приложения при 100 % CPU с растущей памятью при открытии панели управления после длительной работы туннеля
- Исправлен экспорт HAR, писавший неверные коды состояния и метки времени 1970 года, и экспорт из подробностей соединения, создававший файл, который не открывал ни один просмотрщик HAR
- Исправлено:
[Replica] hide-crashlytics-requestразбирался, но никогда не применялся к записям - Исправлено отклонение
external-http-controller = *:9090и:::9090— обоих документированных написаний, — из-за чего контроллер молча не запускался - Исправлено:
$klne.startURLTest()никогда не запускал тест задержки, а URL-тест несуществующей политики сообщал правдоподобную неудачу вместо ошибки - Исправлен редкий сбой транспорта XHTTP под нагрузкой
- Исправлены повторно сериализованные ответы HTTP/1.1, уходившие с пустой фразой причины
- Исправлен экран лицензии, помечавший лицензию, выданную для tvOS или Android, как «Неизвестно», а сертификат, который это приложение не может держать, — как пакет iOS & macOS & tvOS
- Исправлена неработающая ссылка на App Store на экране «О программе»; «Оценить» теперь открывает форму отзыва
- Различные улучшения стабильности и производительности
Версия 1.1.9 (322)
Новые возможности:
- Добавлен транспорт XHTTP в редактор политик — переключатель, режим (auto, packet-up, stream-up, stream-one), путь и хост — для Trojan, VMess и VLESS
- Добавлены методы шифрования Shadowsocks AEGIS-128L и AEGIS-256
- Добавлены настройки ECH (Encrypted Client Hello) для TLS-политик — переключатель, закреплённая конфигурация ECH (
ech-config) и переопределение прикрывающего имени (ech-public-name) - Добавлен отпечаток клиента (uTLS) для каждой политики, а также значение по умолчанию для всего профиля
- Добавлена поддержка AmneziaWG, варианта WireGuard с обфускацией трафика, вместе с редактором его параметров
- Добавлен импорт профилей Clash и sing-box из URL-подписок, файлов и загрузок по Wi-Fi
- Добавлена страница отчёта об ошибках конфигурации с возможностью копирования содержимого вместо блокирующих предупреждений
- Добавлен постквантовый гибридный обмен ключами X25519MLKEM768 для TLS 1.3
Улучшения:
- При сохранении редактор политик теперь сохраняет существующие параметры, недоступные для редактирования в текущем интерфейсе (ECH, ALPN, закрепление сертификата,
test-url,udp-relay)
Исправления ошибок:
- Исправлен сбой туннеля из-за некорректных правил
IP-CIDR - Исправлена настройка SSH
idle-timeout, которая записывалась под неверным ключом и отбрасывалась при сохранении - Исправлены правила первичной настройки, размещавшие имя политики после
no-resolve, что могло нарушать правила на основе IP - Различные улучшения стабильности и производительности
Версия 1.1.8 (300)
Новые возможности:
- Добавлен Tailscale как встроенный тип прокси: настройте учётную запись Tailscale прямо в Chute, присоединитесь к tailnet и направьте трафик через узлы Tailscale — без отдельного клиента
- Добавлен редактор раздела Tailscale: безопасный ввод auth key, проверка соединения, список узлов tailnet и переключение узла выхода из приложения
- Добавлена панель управления Tailscale: отображает состояние узла в реальном времени (онлайн/офлайн, IP, последний раз замечен) и позволяет мгновенно переключать узел выхода
- Добавлены системные уведомления для диагностики прокси, включая изменения исходящего IP и события подключения Tailscale, с переключателями по типам в настройках
- Добавлен тип прокси MASQUE в редакторе политик
Улучшения:
- Увеличена пропускная способность TUN на iOS
- Улучшены стабильность соединения и пропускная способность Tailscale и WireGuard
- Улучшена стабильность UDP-туннеля и точность статистики трафика
- Улучшена стабильность при остановке VPN — снижено число случаев аварийного завершения соединения системой
- Повышена надёжность переключения языка
- Имена файлов конфигурации очищаются, чтобы избежать ошибок загрузки из-за недопустимых символов пути
Исправления ошибок:
- Исправлена несогласованность правил on-demand между запуском и остановкой VPN
- Исправлен редкий сбой при одновременном переключении языка
- Исправлена обработка смены сети, чтобы избежать лишних переподключений VPN
- Различные улучшения стабильности и производительности
Версия 1.1.7 (290)
Новые возможности:
- Добавлена система JavaScript-скриптинга: запуск пользовательских скриптов для модификации запросов/ответов, разрешения DNS, пользовательского сопоставления правил и запланированных задач
- Добавлена перезапись тела: поиск и замена содержимого тела HTTP-запросов/ответов с использованием regex (с поддержкой групп захвата) или выражений JSONPath
- Добавлена поддержка протокола ShadowTLS
- Добавлен транспорт gRPC для протоколов VMess и VLESS
- Добавлена поддержка DNS-over-QUIC (DoQ) и DNS-over-HTTP/3 (DoH3)
- Добавлена поддержка DNS-over-TLS (DoT)
- Добавлены HTTP Control API и веб-интерфейс для мониторинга и управления прокси во время выполнения
- Добавлена система модулей (.sgmodule) для модульного управления конфигурацией
- Добавлен провайдер прокси для динамического обновления списков прокси
- Добавлены отчеты об уведомлениях: обнаружение сбоев соединений, недоступности прокси, всплесков трафика, сбоев обновления конфигурации и переключений групп политик; отправка событий для системных уведомлений
- Добавлена имитация ответов: возврат имитированных данных на совпадающие запросы без обращения к реальному серверу
- Добавлена группа политик LoadBalance со стратегиями round-robin, consistent-hashing и sticky-sessions
- Добавлены новые режимы перезаписи URL: reject-200, reject-img, reject-dict
- Добавлена поддержка направления ответа в перезаписи заголовков
- Добавлен тип правила PROTOCOL с 10 значениями типов протоколов
- Добавлен тип правила SCRIPT для пользовательского сопоставления на основе JavaScript
- Добавлены опции extended-matching и requires-resolve для правил
- Добавлена многослойная схема заполнения AnyTLS
- Добавлены методы шифрования SS2022 (2022-blake3-aes-128/256-gcm, chacha20-poly1305)
- Добавлена поддержка управляемой конфигурации
- Добавлена поддержка реплики для репликации конфигурации
- Добавлен интерфейс конфигурации WireGuard
- Добавлена глобальная опция interrupt-exist-connections
Улучшения:
- Группы политик теперь поддерживают опции expected-status, hidden, idle-timeout и lazy
- Улучшена перезапись URL с поддержкой переменных шаблона в формате Map Local
- Улучшен DNS-сервер с поддержкой протоколов DoQ, DoH3 и DoT
- Расширена система правил с 6 до более чем 30 типов правил с полным покрытием
Исправления ошибок:
- Исправлено значение по умолчанию IPv6 (false -> true)
- Исправлено значение по умолчанию уровня логирования (notify -> warning), добавлены уровни none и fatal
- Исправлена согласованность именования Shadowsocks/ShadowsocksR во всей документации
- Различные улучшения стабильности и производительности
Версия 1.1.6 (256)
Новые возможности:
- Добавлена поддержка протокола Hysteria2
- Добавлена поддержка протокола WireGuard
- Добавлена поддержка протокола VLESS REALITY
- Добавлен анализатор протоколов для трафика TUN
- Добавлена поддержка правила IP-ASN
- Добавлена поддержка логических правил AND/OR/NOT
Исправления ошибок:
- Исправлены проблемы с памятью UDP-адаптера
- Оптимизирована производительность сопоставления Rule-Set и Domain-Set
- Устранены другие мелкие ошибки и проблемы стабильности
- Исправлен сбой просмотра лицензии
Версия 1.1.5 (245)
Новые возможности:
- Добавлена поддержка протокола TUIC
- Добавлена поддержка Shadowsocks 2022 (SS2022)
- Введена конфигурация туннеля
- Улучшено отображение журнала в сессии
Исправления ошибок:
- Исправлена проблема UDP-адаптера
- Оптимизирована производительность сопоставления Rule-Set и Domain-Set
- Устранены другие мелкие ошибки и проблемы стабильности
Версия 1.1.2 (231)
Новые возможности:
- Интерфейс iOS 26
Исправления ошибок:
- Исправлен ответ DNS IPv6 для приложения Gemini
- Поддержка содержимого комментариев в RULE-SET
- Исправлен статус кнопки переключения Widget Center
Версия 1.1.1 (218)
Новые возможности:
- Поддержка политики AnyTLS
- Поддержка Domain-Set
- Поддержка удаленных Rule-Set
Улучшения:
- Перестроен туннель для лучшей производительности
- Полностью протестирован UDP-туннель
Исправления ошибок:
- Исправлены утечки памяти
Версия 1.1.0 (210)
Исправления ошибок:
- Исправлены некоторые ошибки
Версия 1.0.9 (199)
Новые возможности:
- Кнопка переключения в центре управления iOS 18
Исправления ошибок:
- TUN с IPv6 теперь перенаправляет в туннель IPv6, чтобы исправить проблемы с некоторыми сервисами
Версия 1.0.8 (188)
Новые возможности:
- Поддержка политики SSH
- Добавлено подключение удаленной панели
Улучшения:
- Изменена сеть TUN на 198.18.0.0/15 для избежания проблем с внутренними адресами IPv4
- Обновлены некоторые тексты
Исправления ошибок:
- Исправлены проблемы DNS
Версия 1.0.7 (167)
Новые возможности:
- Режим PIP
- Синхронизация iCloud для файлов конфигурации
- Добавлен удаленный менеджер конфигурации tvOS
Исправления ошибок:
- Исправлен Vmess с Websocket
Версия 1.0.6 (160)
Новые возможности:
- Новый интерфейс
- Добавлена загрузка конфигурации через Wi-Fi
- Добавлены диагностика сети и диагностика прокси
- Добавлена функция сброса конфигурации VPN
- Добавлена поддержка пакетов ICMP (Ping)
- Добавлена проверка статуса VPN
Улучшения:
- Улучшен UI/UX редактирования конфигурации
- Обновлен MTU до 4000
Исправления ошибок:
- Исправления ошибок
- Исправлена настройка IPv6 TUN
Версия 1.0.5 (147)
Новые возможности:
- Добавлена поддержка протокола VLESS
- Добавлена поддержка XTLS с VLESS
- Добавлен просмотрщик сессий для просмотра прокси-сессий и журналов
- Вы можете просматривать UDP-соединения с помощью приложения Chute Dashboard для macOS
Улучшения:
- Улучшено редактирование конфигурации
- Улучшен локальный DNS-сервер для избежания загрязнения DNS
- Улучшена ретрансляция UDP
Исправления ошибок:
- Исправлено отображение IPv6
- Исправлен DNS-сервер
Версия 1.0.4 (143)
Новые возможности:
- Поддержка локального HTTP/Socks5 прокси-сервера
- Полная поддержка IPv6
- Добавлена поддержка
syslibдля DNS-сервера
Улучшения:
- Улучшено редактирование конфигурации
- Добавлен переключатель Optimistic DNS
- Улучшен локальный DNS-сервер
Исправления ошибок:
- Исправлено: адрес локального прокси-сервера iOS мог препятствовать доступу приложения к сети
- Исправлен DNS-сервер
Версия 1.0.3 (138)
Новые возможности:
- Поддельный IP для избежания отравления кэша DNS
- Загрузка файла конфигурации из интернета или QR-кода
Исправления ошибок:
- Исправлена проблема редактирования правила FINAL
Версия 1.0.2 (130)
Новые возможности:
- Поддержка iPad
- Поддержка схемы
chute://иx-callback-url - Действие Dashboard
- Поддержка iPhone 12
- Перестроен DNS-сервер для лучшей производительности и стабильности
Исправления ошибок:
- Улучшена стабильность TCP
- Перестроена блокировка TCP для улучшения производительности
- Улучшена стабильность UDP
- Исправлен сбой конфигурации
Версия 1.0.1 (111)
- Исправлен сбой расширения обмена WeChat
- Исправлена поддержка IPv6
- Обновлена проверка завершения HTTP
Версия 1.0.0 (101)
- Первый выпуск
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.