Skip to content

1.7.12

Choose a tag to compare

@Dushnilin Dushnilin released this 04 Nov 07:25

1.7.12

Нововведения и улучшения

  • Мультивыбор целей и игровые UDP-профили в подборе стратегий (Strategy Fuzzer):
    • Одиночный выпадающий список цели в окне подбора стратегий заменён на сетку чекбоксов с быстрыми комбинациями (YouTube + Discord + CS2, CS2 / Faceit + Discord, YouTube Only), позволяющую выбрать сразу несколько сервисов для поиска единой рабочей стратегии.
    • Добавлены наборы целей CS2 / Faceit / Cybershoke (cs2_faceit_suite) и Gaming & Voice UDP (gaming_udp_suite) с проверкой прохождения UDP-пакетов по протоколу RFC 5389 STUN (udp_stun), включая тестирование через локальный direct UDP-вход tachyon-core для движка desync.
    • В каталог desync и zapret2 добавлены UDP-стратегии для игрового и голосового трафика (udp_fake, udp_repeats, udp_fake_ttl, udplen, syndata, профиль портов cs2_faceit с охватом 3478-3481, 5000-5020, 19294-19344, 27015-27050, 50000-65535) и сохранение параметров desync_seqovl, desync_syndata, desync_wsize, desync_ipfrag, desync_udplen, desync_tlsrec_first при применении выбранной стратегии.
  • Рандомизация (jitter) интервалов проверки URLTest и обновления подписок (#322 — @johnickgrigorov):
    • Для групп балансировки и секций с автовыбором узла добавлена настройка разброса интервала проверки urltest_check_interval_jitter (Выкл, ±15%, ±25%, ±40%).
    • Для фонового обновления подписок добавлена настройка subscription_update_jitter (Выкл, ±15%, ±25%, ±40%) со случайным смещением времени запроса и шагом планировщика cron 5 минут.
  • Сохранение пользовательских настроек вида интерфейса на роутере:
    • Настройки раскладки карточек Дашборда, выбранного режима отображения раздела «Маршруты» (Карточки / Конвейер), режима навигации (Простой / Расширенный) и состояния боковой панели теперь дублируются на роутере (/etc/tachyon/ui-prefs.json и uci.tachyon.settings.ui_prefs_json) через команды get_ui_prefs / set_ui_prefs.
    • При очистке кэша браузера, открытии веб-интерфейса с другого устройства или обновлении пакета Tachyon сохранённый вид восстанавливается автоматически.
  • Диагностика пересечений и затенения правил маршрутизации и DNS (#331 — @mrAntonD):
    • В предварительную проверку конфигурации (service/config_plan.uc) добавлен анализатор конфликтов правил (analyze_rule_conflicts()), выявляющий пересечение доменов (включая захват поддоменов родительским доменом в более приоритетной секции) и внешних списков между секциями с разными действиями.
    • Добавлены предупреждения о правилах с действием block, перекрытых более ранними разрешающими секциями, о полностью затенённых секциях и о рассогласовании маршрутизации L3/L4 с правилами DNS.
  • Отображение клиентских устройств для серверных подключений в Мониторинге (#330 — @mrAntonD, #333 — @Kalarono):
    • На вкладке «Мониторинг» для входящих серверных подключений (inbound) вместо локального адреса прокси 127.0.0.1 теперь отображается имя клиентского устройства и его реальный IP-адрес.
  • Распознавание региональных ограничений HTTP 403/451 в Smart Detect Plus и права администраторов в Telegram-боте (#334 — @lQwestl):
    • В пробники Smart Detect Plus добавлено следование HTTP-редиректам (-L) и учёт ответов HTTP 403 / 451 при прямом подключении как признака фильтрации по IP-адресу, если через прокси ресурс возвращает HTTP 200.
    • В Telegram-боте добавлена проверка прав администратора группового чата через getChatMember с кэшированием результата на 300 секунд.
  • Удаление устаревшего движка steer:
    • Удалены модули генератора и рантайма steer, а также связанные элементы управления в веб-интерфейсе и Telegram-боте.
    • В config/migration.uc добавлена автоматическая миграция settings.engine со значений steer и steer-extended на tachyon-core с очисткой /etc/steer и /etc/init.d/steer при обновлении.

Исправления

  • Автовосстановление tachyon-core и watchdog после длительной недоступности внешнего VPS:
    • В procd_set_param respawn снято ограничение respawn_retry=5 (установлено 0 — неограниченное число попыток перезапуска с интервалом 5 секунд), из-за которого после 5 неудачных стартов подряд procd прекращал поднимать ядро.
    • В service/lifecycle.uc (cleanup_failed_runtime()) гарантирован запуск watchdog, если служба включена в автозагрузку (/etc/rc.d/S99tachyon), чтобы сбой restart или reload во время аварии внешнего канала не оставлял роутер без мониторинга.
    • В service/initd.uc (retry_start_on_wan_up()) добавлено повторное планирование отложенного старта с шагом 60 секунд до успешного запуска службы.
    • В service/watchdog.uc разрешён запуск остановленного ядра (reason == "core_stopped") сверх лимита proxy_restart_count >= 3, добавлено восстановление таблицы TachyonTable при ESCALATION_LIGHT, вызов failover_check при событии EV.PROXY_DOWN перед перезапуском ядра и перевод check_mixed_proxy_port() на safe_proxy_restart("mixed_port", ESCALATION_LIGHT).
  • Маршрутизация FakeIP и трафика клиентов Tailscale Exit Node, разрешение DNS пиров (#318, #328 — @Kalarono, #338 — @lQwestl):
    • В nft/apply.uc пакеты к диапазону FakeIP из tailscale0 маркируются до фильтра входных интерфейсов, а собственные сокеты tailscaled с меткой 0x00080000 защищены в цепочке mangle_output от повторного перехвата IP-списками (#328).
    • Если tailscale0 включён во входящие интерфейсы (source_network_interfaces), в цепочках mangle и mangle_forward отключается безусловный возврат не-FakeIP трафика, чтобы подключения клиентов Tailscale Exit Node проходили через правила маршрутизации и списки Tachyon (#338).
    • В providers/tailscale/runtime.uc при настройке MagicDNS устанавливается dhcp.@dnsmasq[0].localservice = '0', чтобы dnsmasq отвечал на DNS-запросы пиров из подсети 100.64.0.0/10 (#338).
  • Установка пакетов apk и opkg через HTTP-прокси (#332 — @lQwestl):
    • Добавлена обёртка /usr/lib/tachyon/bin/wget, прозрачно делегирующая загрузку в curl для поддержки туннелирования HTTP CONNECT при заданных https_proxy / http_proxy (штатный /bin/uclient-fetch в OpenWrt отправлял открытый GET https://... на порт прокси и получал HTTP 400 Bad Request).
    • В components/installer.uc добавлена подстановка PATH и резервный прямой вызов для pkg_install_name_command и pkg_list_update_command, а таймаут установки пакета Tailscale в components/action.uc увеличен с 60 до 180 секунд (PKG_TX_INSTALL_TIMEOUT).
  • Декодирование крупных подписок Happ crypt4 (#327 — @Kalarono):
    • В subscription/crypt4.uc снято ограничение размера буфера при чтении и расшифровке объёмных ответов crypt4.
  • Корректный формат wildcard-записей DNS predefined для sing-box (#329 — @Neoniq, #335 — @Kalarono):
    • В генераторе маршрутов (tachyon_core/generator_routes.uc) владелец записи в predefined-ответах DNS (0.0.0.0 / ::) изменён с * на *. для корректной подстановки запрашиваемого домена и поддоменов.
  • Ограничение высоты выпадающих списков в LuCI (#336 — @lQwestl):
    • Для открытых списков .cbi-dropdown[open] > ul в fe-app-tachyon/src/styles.ts задано ограничение max-height: min(320px, 45vh) с вертикальной прокруткой, предотвращающее выход длинных списков за пределы экрана.
  • Корректная обрезка UTF-8 и отклик кнопок в Telegram-боте (#337 — @Sasha174ru):
    • В service/telegram/rendering.uc, transport.uc, commands.uc и runtime.uc побайтовая обрезка substr(..., 0, N) заменена на utf8_prefix(), исключающий разрыв многобайтовых символов кириллицы и эмодзи при формировании меню обновлений и уведомлений.
    • Подтверждение нажатия кнопки (answerCallbackQuery) перенесено перед вызовом dispatch_command, чтобы интерфейс Telegram не зависал в ожидании завершения длительных команд.
  • Ускорение первичной загрузки интерфейса LuCI и устранение двойных перезапусков ядра:
    • Запрос get_ui_capabilities() переведён в фоновый неблокирующий вызов после первичной отрисовки экрана, а синхронный запуск sing-box version в service/ui.uc заменён на чтение /etc/tachyon/tachyon-core-version и /etc/tachyon/tachyon-core-variant.
    • Устранён повторный вызов restart после reload при установке и обновлении варианта ядра (install_sing_box_variant), а при самообновлении только фронтенд-пакетов (luci-app-tachyon, luci-i18n-tachyon-ru) выполняется reload вместо полного перезапуска службы.
    • Исправлена ошибка Target container is not a DOM element при быстрой смене вкладок LuCI до завершения инициализации дерева компонентов.
  • Устранение зависания проверки скорости DNS на 33% (dns/speed_test.uc):
    • Перед пакетным измерением DoH/DoT через curl --next добавлен быстрый предварительный запрос (--connect-timeout 2 --max-time 3), сразу отбраковывающий недоступный сервер вместо ожидания таймаута на каждой попытке в цепочке.
    • Для UDP DNS добавлен досрочный выход после 2 таймаутов подряд и убран дублирующий повтор nslookup при проверке домена.

Закрытые задачи и влитые PR

  • #322 — Стабильность длительных соединений и рандомизация интервалов проверок и обновлений (@johnickgrigorov)
  • #327 — fix(subscription): preserve large Happ crypt4 bodies (@Kalarono)
  • #328 — fix(nft): сохранить перехват FakeIP при работе Tailscale (@Kalarono)
  • #329 / #335 — fix(dns): исправить DNS Block для sing-box (@Neoniq, @Kalarono)
  • #330 / #333 — fix(monitoring): показывать реальный источник клиентов inbound (@mrAntonD, @Kalarono)
  • #331 — Диагностика пересечений и логических конфликтов правил маршрутизации и DNS (@mrAntonD)
  • #332 — fix(components): support apk and opkg package installations via HTTP proxy (@lQwestl)
  • #334 — feat(smart_detect): add HTTP 403/451 geo-block detection, follow redirects, and authorize group chat admins in Telegram (@lQwestl)
  • #336 — fix(ui): constrain dropdown list height to prevent viewport overflow (@lQwestl)
  • #337 — Telegram: меню обновлений ломается на UTF-8, отклик и проверка результатов (@Sasha174ru)
  • #338 — fix(tailscale): allow exit-node traffic routing and fix peer dns resolution (@lQwestl)

Full Changelog: 1.7.11...1.7.12