Repository navigation
Releases: Dushnilin/tachyon-core
Release list
⚡ Tachyon Core v0.1.2 — Сетевое ядро для OpenWrt (XHTTP поверх HTTP/2, HardwareProfile, MASQUE инбаунд, WgPool, X.509 v1 REALITY, фикс %2F в Clash API)
⚡ Tachyon Core v0.1.2
Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust
Выпуск tachyon-core v0.1.2 — двенадцатый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.1.2 включает полноценное мультиплексирование режимов XHTTP packet-up и stream-up поверх единого пула HTTP/2 соединений (H2Pool / XMUX) по эталону Xray-core, адаптивный аппаратный профиль (HardwareProfile) с автоматическим определением класса ОЗУ роутера и защитой от нехватки памяти (MEMORY_PRESSURE), новый серверный инбаунд MASQUE (RFC 9484 CONNECT-IP поверх HTTP/3 QUIC), многопоточный пул туннелей WireGuard / AmneziaWG (WgPool) и ускорение трактов Mieru / AnyTLS, поддержку сертификатов X.509 v1 для REALITY и пиннинга ключей (PinVerifier), неблокирующий connect в dialer с таймаутом half-close в relay, а также корректную обработку URL-кодированных слэшей (%2F) в именах узлов и групп Clash API.
🌟 Ключевые нововведения и исправления
- 🌐 XHTTP поверх HTTP/2 (
packet-upиstream-upвH2Pool/ XMUX):- Снято принудительное сужение ALPN до
http/1.1для режимовpacket-upиstream-up: при согласованииh2поток скачивания (GET) и секвенсированные пакеты отправки (POST) мультиплексируются как HTTP/2 стримы внутри одного соединения изH2Pool(XMUX), как в эталонном Xray-core. - Устранено открытие двух отдельных TCP+TLS сессий на каждый
packet-upзапрос к серверам с поддержкой HTTP/2, что радикально ускорило установку соединения и убрало таймауты при пакетных потерях и DPI-троттлинге TLS-хендшейков. - В
H2Pool::acquireисправлена гонка регистрацииNotify::notified()(enable()до освобождения мьютекса), добавлено автоматическое вытеснение (evict) закрытых пиром H2-соединений с прозрачным повтором и RAII-счётчик активных стримов (CounterGuard). - В
PostWriterдля HTTP/1.1 повторная попытка после ошибки на переиспользуемом соединении теперь гарантированно открывает свежее соединение (fresh_connection) и корректно освобождает слот вxmux::Poolна всех путях ошибок. - В
XhttpConn::poll_shutdownдобавлено ожидание сброса буфераPacketsUp(poll_flush) перед закрытием пайпа, а закрытие стороны записи больше не обрывает фоновую задачу чтения (dl_task) до закрытия самого соединения.
- Снято принудительное сужение ALPN до
- 🧠 Адаптивный аппаратный профиль (
HardwareProfile) и защита памяти (MEMORY_PRESSURE):- Реализован модуль
hardwareс автоопределением класса памяти устройства при старте (Constrained≤ 128 МиБ,Router≤ 512 МиБ,Midrange≤ 2 ГиБ,DesktopServer> 2 ГиБ) по/proc/meminfoи лимитамcgroup. - Размеры буферов
relay, окон HTTP/2 (h2io), сокетовsmoltcp,splice-пайпов и ёмкость пулов автоматически масштабируются под доступное ОЗУ роутера с сохранением приоритета ручных переменныхTACHYON_*. - Добавлен lock-free детектор давления памяти (
is_memory_pressured/refresh_memory_pressure), мгновенно освобождающий буферы вместо возврата в пул при дефицитеMemAvailable.
- Реализован модуль
- 🚀 Серверный инбаунд MASQUE (RFC 9484 CONNECT-IP over HTTP/3) и виртуальный стек
smoltcp:- Реализован серверный инбаунд
masque, принимающий HTTP/3 QUIC-соединения с Extended CONNECT, датаграммами и анонсом маршрутов (ROUTE_ADVERTISEMENT) и бриджующий клиентские IP-пакеты вRouter. - Выделен общий виртуальный IP/TCP-стек
smoltcp(new_virtual_ip_iface,accept_virtual_tcp_packet,pump_virtual_tcp_sessions), совместно используемый инбаундамиtun,fptnиmasque.
- Реализован серверный инбаунд
- ⚡ Многопоточный пул WireGuard / AmneziaWG (
WgPool) и оптимизация Mieru / AnyTLS:- В
wireguardиamneziawgвнедрён пул параллельных туннельных сессий с распределением потоков, пакетной обработкойnoiseи векторнымfastchacha. - Переработаны тракты данных и буферизация кадров в
mieru,anytls,shadowtls,shadowsocksиvmessдля снижения числа системных вызовов и копирований на горячем пути.
- В
- 🔒 TLS: поддержка сертификатов X.509 v1 в REALITY и
PinVerifier:- Добавлена поддержка верификации самоподписанных сертификатов X.509 v1 без тега версии (генерируемых Go
x509.CreateCertificateна серверах Xray/sing-box REALITY) с проверкой подписи Ed25519 вCertificateVerify. - В
tls_clientиcore-tls::verifyподключёнPinVerifierдля привязки поcertificate_sha256иcertificate_public_key_sha256.
- Добавлена поддержка верификации самоподписанных сертификатов X.509 v1 без тега версии (генерируемых Go
- 🔍 Clash API: поддержка слэша (
/,%2F) в названиях прокси и групп:- Классификация маршрутов
classify_with_uiпереведена на разбор сырого URL-пути до вызоваpercent_decode, а декодирование выполняется отдельно для извлечённого сегмента имени (Route::Proxy,Route::Delay) с сохранением защиты от path traversal (%2e%2e) в/ui. - Устранена ошибка
404 Not Foundпри замере задержки (/proxies/{name}/delay,/group/{name}/delay) и переключении узлов, содержащих символ/в названии (например,до 10 Гбит/силиGroup/A).
- Классификация маршрутов
- 🛡️ Неблокирующий
connectвdialerи таймаутhalf-closeвrelay:- Переведён TCP
connectна неблокирующий режим с явным контролем таймаута соединения (включая таймаутdial_tcpна платформе Windows), что исключает зависание воркеров рантайма на «чёрных дырах» маршрутизации. - В
relayдобавлен таймаут на стадиюhalf-close, предотвращающий зависание задач и утечку файловых дескрипторов при полузакрытых соединениях.
- Переведён TCP
📦 Контрольные суммы бинарников (SHA-256)
04b5118409612ec15fa64550873e94a282c3b121dfbf7c07ebc0211c565a023f ./tachyon-core-aarch64-v0.1.2
16ae0448940ee31b36b7db24620ad0c5b24d1c38a8e8c3070691a491b6d105b5 ./tachyon-core-armv6-v0.1.2
0773995ebc2ab6c0a41f216d1223912f704306cce8269ea8b0f25c04ed4ca632 ./tachyon-core-armv7-v0.1.2
331ccb7eec314faf905faa404527bf31e63d1c99fa25401db0d458770a75d59d ./tachyon-core-darwin-amd64-v0.1.2
fcac39050cf923ee33190f31cf524667823b0aa321acf5cf4744696029b5a5e4 ./tachyon-core-darwin-arm64-v0.1.2
b7712789ae5c8127bd7f295b345f1d9daed0999ca4f15dbf3f91dc6afde36736 ./tachyon-core-linux-amd64-v0.1.2
d2784c662f7295f376cc9221aac329d4ec7a0578a5ac63839e13954dd684adcf ./tachyon-core-mips-v0.1.2
bdd95efc42e160a4e3af59c9571caa0895d3622d832bfe3bda48dd9a612ea424 ./tachyon-core-mipsel-v0.1.2
0401ddad7106b9c647b45c07a1885edeeb864c76c50dff17603917fdd03068cf ./tachyon-core-riscv64-v0.1.2
626f7e1a384aa78f654a45d46a1f66abcc191e6165d92243eeef801078b957e7 *./tachyon-core.exe
08b8fc931d383c502abe97e1447789205d115c3335b46c43dc7bec2a6c6fe300 ./tachyon-core-x86_64-v0.1.2
Full Changelog: v0.1.1...v0.1.2
⚡ Tachyon Core v0.1.1 — Сетевое ядро для OpenWrt (Рекорд h2-бенчей на вендоренном HTTP/2, стабильный Hysteria2 Brutal CC, TLS 1.2 fallback для uTLS-отпечатков и починка утечек фоновых задач)
⚡ Tachyon Core v0.1.1
Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust
Выпуск tachyon-core v0.1.1 — одиннадцатый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.1.1 включает переработанный тракт данных HTTP/2 с пулом буферов полезной нагрузки в вендоренном h2 и расширенными окнами 16/64 МиБ (выведший tachyon-core на первое место в обеих HTTP/2 ячейках бенч-матрицы), стабилизацию контроллера Hysteria2 Brutal CC на субмиллисекундных RTT и локальных релеях, автоматический прозрачный фолбэк на TLS 1.2 при использовании uTLS-отпечатков (TLS12_ENDPOINTS), поддержку plain HTTP в замере задержек Clash API, режим stream-one для XHTTP поверх REALITY/H2, устранение утечек фоновых задач remote rule-set и UDP-мостов, адаптивные thread-local буферы релея для одноядерных роутеров, а также исправление Vision UUID и выбор шифрования VMess auto.
🌟 Ключевые нововведения и исправления
- ⚡ HTTP/2: переработанный путь данных и первое место в бенч-матрице:
- В вендоренный
h2полезная нагрузка каждого DATA-фрейма копируется в переиспользуемый буфер из пула по потокам вместо заморозки общей аллокации кодека: на каждый GiB ушло ~8000mmapи ~191000 minor faults (теперь <7000), системное время на GiB сократилось примерно на секунду. - В
h2ioокно приёма расширено с 8 до 16 МиБ на стрим и с 32 до 64 МиБ на соединение, отправка переведена на прямой запрос ёмкости (без промежуточного копирования вstage_bytes) иmax_send_buffer_size. - Итог официального бенча (desktop, 8 стримов):
vless-h2-tls— 18.8 Гбит/с против 13.3 у mihomo,vless-tls-h2mux— 17.6 Гбит/с против 16.1 у sing-box; расход CPU на GiB снизился с 2.74 до 1.70 и с 2.53 до 1.63.
- В вендоренный
- 🚀 Hysteria2: устранение заморозки соединений на loopback и локальных релеях:
- Контроллер Brutal считал размер окна как
rate × RTT × 2; при субмиллисекундном RTT (петля, релей на одном хосте) окно схлопывалось ниже одного пакета, и проверкаin_flight + bytes >= windowвquinnблокировала отправку после первого ACK. - Установлен нижний порог окна в 8 MTU: реальные сети с RTT 1–2 мс также получили прирост (окно 2.5 КБ больше не упирается в потолок ~20 Мбит/с), при этом фактическую скорость по-прежнему задаёт явный темп пейсинга.
- Интероп-тесты
hy2/tuicсинхронизированы черезtest_guardдля исключения гонок process-global состояния.
- Контроллер Brutal считал размер окна как
- 🔒 Автоматический откат на TLS 1.2 при uTLS-отпечатках:
- Собственный TLS-стек ядра (
core-tls) ориентирован на TLS 1.3 для uTLS и REALITY. При работе с CDN и серверами (например, Twitch/CloudFront для VLESS gRPC), поддерживающими только TLS 1.2 и отклоняющими TLS 1.3 (alert 70/wrong legacy version), ядро перехватывает ошибку рукопожатия. - Узел автоматически помечается в LRU-кэше (
TLS12_ENDPOINTS, ёмкость до 512 записей), после чего соединение прозрачно переподключается через 100% чистый Rustrustlsбез C-криптографии. - Повторные подключения к известным TLS 1.2 узлам сразу используют
rustls, минуя лишние неудачные хендшейки.
- Собственный TLS-стек ядра (
- 🔍 Поддержка plain HTTP в замере задержек Clash API:
- Устранена принудительная подмена протокола с
http://наhttps://при вызове/proxies/{name}/delay. - Исправлен парсер
split_authority: для ссылок без явного указания порта по схемеhttp://по умолчанию выставляется порт 80 вместо ошибочного 443. - Замеры задержки через
http://www.gstatic.com/generate_204иhttp://cp.cloudflare.com/generate_204отрабатывают штатно.
- Устранена принудительная подмена протокола с
- 🌐 XHTTP и Mux: stream-one поверх REALITY/H2 и пул сессий:
- В автоматическом режиме
xhttpдля REALITY и HTTP/2 выбирается двунаправленный режимstream-oneс мультиплексированием поверх пула H2-соединений. - GET-запрос скачивания отправляется асинхронно, исключая взаимную блокировку с VLESS handshake в буфере.
- В
muxодновременные стримы больше не открывают TCP-сессии вхолостую (opening+Notify, дефолтный лимитmax_connections— 8), аsend_requestучитываетpoll_ready.
- В автоматическом режиме
- 🛡️ Устранение утечек и зависаний фоновых задач:
- Фоновые задачи remote rule-set трекаются в роутере и гасятся при
reload_in_placeи shutdown. connect_udp_indexобёрнут в таймаут из роута/инбаунда — исходящие UDP-мосты больше не висят по 120 с;drain_backlogне зависает на сокете.- Глобальный
server_addr_lockзаменён на слабые мьютексы per-(resolver, host). - UDP-активность в
hy2,tuicиmasqueучитывается в обе стороны; для per-connection hub вfptn,tun,muxиrelayподключёнStopHub.
- Фоновые задачи remote rule-set трекаются в роутере и гасятся при
- 🧠 Адаптивные буферы под одноядерный роутер, VMess и Vision:
- На одноядерных системах буфер релея составляет 32 КиБ (пул 64 буфера = 2 МиБ), буферы Shadowsocks ужаты с 256 до 48 КиБ, добавлен thread-local пул relay-буферов (4 на поток) без мьютекса на горячем пути.
- В VMess
security: autoпри наличии TLS выбираетnone(по эталону sing-box), буфер кадра зафиксирован на 256 КиБ с read-ahead 128 КиБ. - В Vision первый фрейм несёт префикс UUID пользователя для корректного снятия паддинга сервером.
- 🧪 Ночные бенчмарки и стресс-тесты:
- В
scripts/bench/night_load.pyдобавлен 5-минутный интервал охлаждения между прогонами протоколов, общий буфер генератора нагрузки и раннее детектирование отказа ядра.
- В
📦 Контрольные суммы бинарников (SHA-256)
fceb27a6e3472955aa3d4bbd0c79ab2e1f0af6f9480dd92de80d74e3138a07b4 ./tachyon-core-aarch64-v0.1.1
5f3368bd65f7f652f4d5326740d38ed4fbae41fa6373505fb7c094b3813ffdc8 ./tachyon-core-armv6-v0.1.1
4ba39efccf73b21fb214d2719a37b146c5aea9fa2e923d6c84313f440bb11c68 ./tachyon-core-armv7-v0.1.1
dcf7d43cc9c3d838d24c502928a94f79fa56f3cc56e1d37fc6956bb9cbab072e ./tachyon-core-darwin-amd64-v0.1.1
1d71d116deee988b7b0e1c6387ba41af6b5a1706e0156f4e0eee5c71ec300356 ./tachyon-core-darwin-arm64-v0.1.1
f612ea2ec95833d196407f61290d6e7c3512497004d46f07778642233c3b9a4e ./tachyon-core-linux-amd64-v0.1.1
395bff105e5c0c80e691ebbe1ce8e57af0c11d856f33d69c0d9731e2f50bf638 ./tachyon-core-riscv64-v0.1.1
12d536e1f9384811d5b204173067f32de285c4c2b4201e261bf3c7f23e70105f *./tachyon-core.exe
86fa3268ef19233d8b3d8d734f68d3a568973374a727c659be20a96568bcfedc ./tachyon-core-x86_64-v0.1.1
Full Changelog: v0.1.0...v0.1.1
⚡ Tachyon Core v0.1.0 — Сетевое ядро для OpenWrt (Каскадный Detour, защита Flash-памяти и атомарный FakeIP, 100% Pure Rust без C-аллокатора, sing-box 1.15 Pin и Clash API)
⚡ Tachyon Core v0.1.0
Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust
Выпуск tachyon-core v0.1.0 — десятый, юбилейный релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.1.0 включает полноценную поддержку каскадного транзита Detour с закрытием сессий на конечном хопе, атомарную персистентность FakeIP в cache.db и комплексную защиту Flash-памяти роутеров (Zero-Wear Protection) от паразитного износа, полный переход на 100% чистый Rust без C-аллокатора (std::alloc::System вместо mimalloc и собственная реализация blake3), расширение TCP-окон smoltcp до 256 КиБ и устранение зомби-сокетов WireGuard/TUN, перехватчик DoH (RFC 8484) и параллельный резолв A/AAAA, метрики Prometheus (/metrics) и детальный rulePayload в Clash API, а также поддержку корневых отпечатков сертификатов (certificate_pin) по спецификации sing-box 1.15.
🌟 Ключевые нововведения и исправления
- 🔗 Каскадный Detour (#140) и закрытие сессий на последнем хопе:
- В структуру
DialOptionsдобавлено полеdetour: Option<String>, исключающее потерю каскадных выходов при диале. - Роутер
Router::connect_indexиconnect_udp_indexраскручивают полную цепочку транзитных прокси с защитой от циклов (ограничение максимальной глубины в 64 хопа) и терминированием на прямом или терминальном выходе. - Опция закрытия активных соединений
interrupt_exist_connectionsпри переключении селектора теперь находит и разрывает сокеты строго на последнем (конечном) хопе цепочки, а не на промежуточных узлах.
- В структуру
- 💾 Атомарная персистентность FakeIP (#135) и устранение асимметрии:
- Устранена асимметрия между прямым и обратным хранением: регистрация FakeIP теперь синхронно фиксирует обе записи в персистентном bbolt-хранилище
cache.db. - Механизм LRU-вытеснения (
remember) синхронно очищает прямую и обратную запись из памяти и с диска, исключая сбоиmissing fakeip record. - В
CacheFileдобавлено чтение сырых бинарных ключей (raw_keys), исключающее рассинхрон строкового представления адресов. - При промахе по обратной записи в RAM она автоматически восстанавливается из дискового кэша на лету.
- Устранена асимметрия между прямым и обратным хранением: регистрация FakeIP теперь синхронно фиксирует обе записи в персистентном bbolt-хранилище
- 🛡️ Комплексная защита Flash-памяти роутеров (Zero-Wear Protection):
- Устранены паразитные перезаписи флеш-памяти при старте и штатной работе ядра.
- Компиляция inline и local rule-sets в бинарный формат TSRS проверяет наличие идентичного файла на диске перед вызовом записи.
- Опрос удаленных rule-sets при ответе HTTP 304 Not Modified больше не вызывает синхронный сброс базы на диск (батчинг через интервал
flush_if_due). - При обновлении remote rule-set (HTTP 200 или наложение дельты) запись отменяется, если результирующий TSRS совпадает с уже имеющимся на диске.
- Устранена паразитная перезапись Clash Mode в
cache.dbпри инициализации сервиса. - В методах
CacheFile::putиapply_changesреализована проверка совпадения значений (existing == value), предотвращающая ложное выставление флагаdirtyи вызовflush().
- 🦀 100% Pure Rust без C-зависимостей (Zero-CC musl):
- Полностью удален аллокатор
mimalloc: ядро переведено на системный аллокаторstd::alloc::System. Пиковый RSS снизился с 17.4 до 16.1 MiB, размер бинарника уменьшился более чем на 200 КиБ, деревоcargo tree -i ccдля musl полностью пусто. - Написана собственная pure-Rust реализация
blake3без сишного кода и переписанныхbuild.rs, полностью совпадающая по тестовым векторам с официальным крейтом 1.8.7.
- Полностью удален аллокатор
- 🚀 Сетевой стек smoltcp, буферы BDP и устранение зомби-сокетов:
- Буферы TCP-сокетов userspace-стека
smoltcpувеличены с 64 КиБ до 256 КиБ (динамический расчет черезTACHYON_SMOL_TCP_BUF), что сняло искусственное ограничение BDP с ~120 Мбит/с на задержках 4 мс до гигабитных скоростей. - WireGuard: исправлена ротация сессионных ключей (учитывается возраст сессии, как в wireguard-go, а не
last_recv). - Устранены зависания и зомби-сокеты:
caller_eofтеперь корректно закрывает сокет,next_deadlineсинхронизирован сpoll_at. - TUN: исправлена потеря хвоста чанка при частичной записи в
send_slice, устранено 100% зависание ядра наwake_by_refпри переполнении канала, ограничены очереди пакетов.
- Буферы TCP-сокетов userspace-стека
- 🌐 DNS: параллельный резолв и перехватчик DoH (RFC 8484):
- В
hijack-dnsдобавлена поддержка перехвата и распаковки DNS-over-HTTPS запросов (GET и POST по RFC 8484) напрямую во встроенный резолвер. - Устранены зависания резолва: опрос записей A и AAAA переведен на параллельный режим с коротким grace-периодом вместо 5-секундного последовательного ожидания при недоступности одного из семейств IP.
- DoH-транспорт переиспользует единое HTTP/2 соединение аналогично
http2.Transportв sing-box вместо создания нового TLS-хендшейка на каждый запрос.
- В
- 📊 Clash API, метрики Prometheus и детальный rulePayload:
- Добавлен эндпоинт
/metricsв формате Prometheus для мониторинга активных соединений, битрейта и памяти. - Поток WebSocket
/trafficпереведен на отдачу дельты скорости (байт/сек) вместо накопленных счетчиков, восстанавливая правильное отображение битрейта в веб-панелях (Yacd, Metacubexd). - В снимке
/connectionsполе"memory"заполняется реальным значением RSS процесса из/proc/self/statm, оживляя системный виджет потребления RAM. - Поле
rulePayloadв/connectionsтеперь честно отдает сработавший суффикс, rule_set, CIDR или порт прямо из контекста правила вместо пустой строки.
- Добавлен эндпоинт
- ⚡ Окна HTTP/2 и горячий путь Relay:
- В модуле
h2ioвозврат емкости окна (release) теперь происходит строго по факту вычитки данных потребителем (serve,skip,poll_read_into) и при сбросе потока, исключая утечку окна в пустоту при медленном клиенте. sniff_quic: заголовок Initial копируется в стек-буфер на 64 байта вместо аллокацииto_vec()на куче для каждого пакета.relay: промежуточный VLESS-заголовок размещен на стеке, исключены лишние аллокации при форматировании hex.
- В модуле
- 🔒 Совместимость с sing-box 1.15 и протоколы:
- Реализована поддержка корневых отпечатков сертификатов (
certificate_pin) по спецификации sing-box 1.15 (форматы hex и base64 с префиксомsha256:). - Устранено дублирование UUID в заголовках VLESS и протоколе Vision.
- NaïveProxy и Mieru: добавлены сквозные интеграционные тесты клиент-сервер, для NaïveProxy инбаунда по умолчанию выставляется
h2в ALPN.
- Реализована поддержка корневых отпечатков сертификатов (
- 🛠️ CLI и бенчмарки:
- Команда
rule-set matchподдерживает позиционный аргумент цели и флаг формата. - Интегрирован комплекс скриптов для ночного нагрузочного тестирования протокольной матрицы и пина процессов по ядрам CPU (
scripts/bench/night_load.py,scripts/bench/night_report.py,scripts/bench/night.ps1).
- Команда
📦 Контрольные суммы бинарников (SHA-256)
0286a3e65c7520e264668971f062ca97dd9b211cc24f47f9bd3f3dc4f702ed0b ./tachyon-core-aarch64-v0.1.0
30c0024ac4eae128614363bd0c6aa6d6a857818ba94c237a8998d5c09bf55dd7 ./tachyon-core-armv6-v0.1.0
d6e037ba71404def9a90b63d5078065ad7abe72a52ddcc6a8013f31add39ff51 ./tachyon-core-armv7-v0.1.0
4d9857afd0f935702ad3259f4e27698787616f591338d835bb5064d30312e093 ./tachyon-core-darwin-amd64-v0.1.0
7a90af70e091ee3c82c7a6f692242de1999a9be0f37e8c7f6ed8b02fa061b4e7 ./tachyon-core-darwin-arm64-v0.1.0
36509830d4e8f928d776461e7a3fdde4a77c14b0f50a6735ef4f1d38b2135012 ./tachyon-core-linux-amd64-v0.1.0
b4dcdbe9f3d36ee33f3d86362c1c752945e0bd8eaab87933efe7d7088e380755 ./tachyon-core-mips-v0.1.0
055ca9203c10d677bc9bd21b26d7ed1ee3e01df25da246c82bc13dcef24a4973 ./tachyon-core-mipsel-v0.1.0
b16a7780f6e2a348f520ed2ef8fa506f089ad3d7a93b1a70b667b69e1943d553 ./tachyon-core-riscv64-v0.1.0
471c1547e2366bcd91123e60d850734df46dea519c7f317edfce2038e5b07cb6 *./tachyon-core.exe
c89c27a4e07edd752d6b55c4315dde89b7b3ab78b89ae72a6e352293c3529d8d ./tachyon-core-x86_64-v0.1.0
Full Changelog: v0.0.9...v0.1.0
⚡ Tachyon Core v0.0.9 — Сетевое ядро для OpenWrt (Ядерный оффлоад WireGuard/AWG через Netlink, Quinn Brutal Pacing, Zero-Alloc Relay и аутентификация URLTest)
⚡ Tachyon Core v0.0.9
Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust
Выпуск tachyon-core v0.0.9 — девятый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.9 включает нативный ядерный оффлоад WireGuard и AmneziaWG (wireguard.ko / amneziawg.ko) через чистый Rust Netlink драйвер для достижения гигабитных скоростей forwarding на роутерах, контроллер перегрузки и пейсинг Brutal для протоколов на базе QUIC (quinn-proto), оптимизацию пула буферов Relay (Zero-Alloc & Lazy Buffer) со сбросом памяти во время ожидания входящих пакетов, верификацию сертификатов TLS и чистый замер времени отклика сервера (TTFB) в URLTest, защиту от утечек UDP-мостов с очисткой по таймауту неактивности, а также персистентность FakeIP в bbolt с сырыми бинарными ключами и отклонение неразрешенных адресов.
🌟 Ключевые нововведения и исправления
- 🚀 Ядерный оффлоад WireGuard и AmneziaWG (wireguard.ko / amneziawg.ko):
- Реализован собственный pure-Rust драйвер Generic Netlink и rtnetlink без внешних C-зависимостей (
libcи системные сокеты Netlink). - Поддержка создания интерфейсов (
RTM_NEWLINK/RTM_DELLINK), динамического разрешения семейств контроллера Netlink (GENL_ID_CTRL) и конфигурирования устройств WireGuard (WG_CMD_SET_DEVICE). - Полная поддержка расширенных параметров обфускации AmneziaWG (
Jc,Jmin,Jmax,S1,S2,H1..H4) для модулей ядраamneziawg.ko. - Опция
"system": true: трафик направляется напрямую через ядерный интерфейс с привязкой черезSO_BINDTODEVICE, обеспечивая скорость передачи данных 1+ Гбит/с на уровне ядра.
- Реализован собственный pure-Rust драйвер Generic Netlink и rtnetlink без внешних C-зависимостей (
- ⚡ Алгоритм контроля перегрузки Brutal для QUIC (Quinn Pacing):
- Интегрирован контроллер пейсинга Brutal на базе
quinn-protoдля удержания фиксированной скорости передачи без деградации окна при потерях пакетов (рассмотрен PR #17).
- Интегрирован контроллер пейсинга Brutal на базе
- 🛡️ Оптимизация буферизации Relay (Zero-Alloc & Lazy Buffer):
- Реализован пул
PooledBufferс отложенным выделением памяти: буферы не аллоцируются впустую и возвращаются в пул во время ожидания входящих данных, радикально снижая потребление RSS при десятках тысяч фоновых соединений (рассмотрен PR #18).
- Реализован пул
- 🔍 URLTest: аутентификация TLS и чистый замер задержки:
- Из замера задержки
urltestисключено время рукопожатия TCP и TLS: теперь измеряется чистое время отклика сервера (TTFB) по эталонной спецификации sing-box (рассмотрен PR #19). - Добавлена строгая проверка сертификатов TLS и пула доверенных центров сертификации (
ca_certs) с кэшированием контекстов клиента rustls (рассмотрен PR #20).
- Из замера задержки
- 🔄 Жизненный цикл UDP-мостов и Zero-Alloc фрейминг:
- Устранена утечка UDP-сокетов при разрыве TCP-соединения туннеля через тайм-аут неактивности и автоматическую очистку брошенных соединений.
- Метод
frame_intoвыполняет упаковку пакетов напрямую в предоставленный буфер без промежуточных аллокаций (рассмотрен PR #22).
- 💾 Персистентность FakeIP и отклонение неразрешенных адресов:
- Персистентное хранилище FakeIP в
cache.db(bbolt) переведено на сырые бинарные ключи Big-Endian, устраняя деградацию производительности при форматировании строк (рассмотрен PR #23). - Неразрешенные IP-адреса из диапазона FakeIP отклоняются на этапе маршрутизации, предотвращая паразитный трафик в дефолтный аутбаунд.
- Персистентное хранилище FakeIP в
- 🌐 NaïveProxy и Mux Single-Frame:
- В инбаунде NaïveProxy добавлена поддержка стандартного заголовка
Padding, эхо-ответа паддинга и фоллбэка на заголовокHost/-connect-authority. - В Mux исходящий заголовок запроса объединяется с первым блоком полезной нагрузки в единый HTTP/2 фрейм с безопасным отслеживанием частичной записи.
- В инбаунде NaïveProxy добавлена поддержка стандартного заголовка
📦 Контрольные суммы бинарников (SHA-256)
1736a0fd2c51bdc0534d065a43ba8323e475b1dd696b16ae196c1c4466cd2ab5 ./tachyon-core-aarch64-v0.0.9
c4dbf72b84ca5998d45e88f10a814a11b1165526fbd0124b6e50fcdf416ec7f8 ./tachyon-core-armv6-v0.0.9
ea327c3416290b97f80b40eecdc6eb81f2fd4550b83709c5bfe45a0159e01cff ./tachyon-core-armv7-v0.0.9
f63dfa82d73dd35ff5b64152543ae14b08ea13fd9079de83eaf1ce6c79e916ed ./tachyon-core-darwin-amd64-v0.0.9
20f684375e51dff28da6fc32a35e3ce9131b91f886155cb08c72885a9a3d9659 ./tachyon-core-darwin-arm64-v0.0.9
b4ecf1062790b977cac49f11078d39cf8449379bc2d2c2d4fe377b383d1e9cef ./tachyon-core-linux-amd64-v0.0.9
89f01fed987e5c23e302c79e6e23bc9f2e1b8a87208e7cdb9974a85dbf119790 ./tachyon-core-mips-v0.0.9
da68d6f62df82045c7aecbd879b49ff9e4eeba9d8038cff6587e834dd3f3b06c ./tachyon-core-mipsel-v0.0.9
5307013f1a330fa19bbe5d0771ce57c6c776facb2c85e69df716b5d28d22af8c ./tachyon-core-riscv64-v0.0.9
5533f4d12578f6df71d7bd51cb6b6a4bf682f76377ed5e631235d6d14b81f1b8 *./tachyon-core.exe
75f7f4d7a96cc4467e5b39edad0db36b37db58070b616c95b2b4e3d871d5a553 ./tachyon-core-x86_64-v0.0.9
Full Changelog: v0.0.8...v0.0.9
⚡ Tachyon Core v0.0.8 — Сетевое ядро для OpenWrt (Нативный Outbound Desync, фикс XHTTP auto/packet-up, Soft-float MIPS и Fallback Config)
Выпуск tachyon-core v0.0.8 — восьмой релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.8 включает нативный outbound-десинхронизатор desync для обхода DPI на уровне L4/L7 без необходимости запускать сторонние демоны ByeDPI/Zapret, устраняет зависания транспорта XHTTP в режимах packet-up и auto, обеспечивает гарантированную совместимость с MIPS-роутерами без FPU (MediaTek MT7620/MT7621/MT7628) за счёт флагов soft-float, снижает требования x86_64 до базовой микроархитектуры, а также добавляет механизм автоматического отката на резервный конфиг (Fallback Config) и софт-старт для rule-set по умолчанию.
🌟 Ключевые нововведения и исправления
- 🛡️ Нативный desync-аутбаунд для обхода DPI:
- Встроенный протокол
desyncс поддержкой фрагментации TCP, сплита HTTP-запросов и нарезки TLS ClientHello на уровне сетевого стека ядра без необходимости запускать сторонние демоны ByeDPI (ciadpi) или Zapret.
- Встроенный протокол
- ⚡ Починка клиента и сервера XHTTP в режимах packet-up и auto:
- Согласование режимов приведено к эталону sing-box:
autoрезолвится строго вpacket-up(stream-oneзарезервирован только под REALITY). - Убран синхронный блокирующий троттлинг на каждый write в
packet-up: отправка переведена на асинхронный воркерPacketsUpс пайпом и координацией байт черезflush(), что устранило зависания сессий и обеспечило максимальную пропускную способность. - Добавлены обязательные вызовы
flush()в XHTTP-инбаунде (ответные заголовки 200 OK на download GET, подтверждения upload POST и потоковые чанки) для предотвращения застревания ответов в TLS-буфереrustls.
- Согласование режимов приведено к эталону sing-box:
- 🌐 HTTP Inbound Transport и буферизация остаточных байт XHTTP:
- Добавлена нативная поддержка входящего plain HTTP транспорта.
- Исправлена буферизация остаточных байт при переходе границ фреймов в XHTTP.
- ⚙️ Принудительный soft-float для MIPS (роутеры OpenWrt):
- В целевых профилях сборки
mips-unknown-linux-muslиmipsel-unknown-linux-muslпринудительно включены флаги-msoft-floatи+soft-float, полностью предотвращающие аварийное завершениеSIGILL(Illegal Instruction) на роутерах без аппаратного блока FPU (MediaTek MT7620/MT7621/MT7628, Atheros AR9344).
- В целевых профилях сборки
- 🖥️ Базовый x86_64 для всех процессоров и гипервизоров:
- Требования к целевой архитектуре x86_64 снижены с x86-64-v3 до базового x86-64 для гарантированной совместимости со старыми роутерами, тонкими клиентами и виртуальными машинами.
- 🔄 Отказоустойчивость и безопасность при старте:
- При ошибке валидации конфигурации на этапе pre-flight сервис автоматически переключается на последнюю рабочую конфигурацию (
fallback.json), защищая от потери удаленного доступа к роутеру. - Включен софт-старт для rule-set по умолчанию: ядро успешно стартует и маршрутизирует локальный трафик даже при «холодном» старте без активного подключения к сети.
- Исключены петлевые адреса (loopback) из привязки
bind_interfaceи навешиванияfwmark, предотвращая зацикливание локального трафика. - Добавлен парсинг паролей из списка
usersдля AnyTLS инбаунда.
- При ошибке валидации конфигурации на этапе pre-flight сервис автоматически переключается на последнюю рабочую конфигурацию (
📦 Контрольные суммы бинарников (SHA-256)
0153de30b6c9d3031a65da3d515b40519c9f3a37d7cb6a8e6add42a4a5af45d1 ./tachyon-core-aarch64-v0.0.8
bee0530900141fcca737266575eb2763dee154e4aa2c7733682a23d05c9a37a4 ./tachyon-core-armv6-v0.0.8
541e0ad0eb2f6cd5ba6f5fba318e0ace463c414e46a32b9d861de3f859087266 ./tachyon-core-armv7-v0.0.8
6eacedf86e5f1bf01c7545c0ed7f732275da244b763aec229217dcc21390d290 ./tachyon-core-darwin-amd64-v0.0.8
45b2e826070e8bebbd10f5aa8e2585ab04bef62e756e8c32c733af1a85ba2e77 ./tachyon-core-darwin-arm64-v0.0.8
2e147707ae7dfffde04d159a33e54054cf0c10fafe1b36598c2c024fee11411f ./tachyon-core-linux-amd64-v0.0.8
f084ec8f0b5e2bc944b3a64207cfa283b210464619ca7b4daeac3eb92429f5ff ./tachyon-core-mips-v0.0.8
f40bdef6be308d3fcac03cf6cd57c9e3b4c7b3fd2af3262068eeade98d64a5dd ./tachyon-core-mipsel-v0.0.8
ad8e6c55ec2c72d707d5d2a1abd37938c2b6765521926c353226e2a8a3d3a5ce ./tachyon-core-riscv64-v0.0.8
5c3624966d6f84553b50dec0fca585228cc10ef9885aa38811bbbb6c4a790250 *./tachyon-core.exe
5ace7a920306f45cc6dd7bf01920e3321863da8808cfe32ea703b106ad626780 ./tachyon-core-x86_64-v0.0.8
Full Changelog: v0.0.7...v0.0.8
⚡ Tachyon Core v0.0.7 — Сетевое ядро для OpenWrt (Hysteria2 Brutal CC, фикс ByeDPI/Zapret, нативный Tailscale и UDP L7-сниффинг)
⚡ Tachyon Core v0.0.7 — Сетевое ядро для OpenWrt (Hysteria2 Brutal CC, фикс ByeDPI/Zapret, нативный Tailscale и UDP L7-сниффинг)
Выпуск tachyon-core v0.0.7 — седьмой релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.7 реализует алгоритм контроля перегрузки Brutal Congestion Control для Hysteria2 для пробития искусственных потерь пакетов ТСПУ, полностью устраняет разрывы сессий и петли FakeIP при маршрутизации через локальные десинхронизаторы ByeDPI (ciadpi) и Zapret, включает нативный Tailscale mesh-клиент на чистом Rust без C-зависимостей, добавляет потоковый и пакетный L7-сниффинг для UDP (QUIC, DNS, STUN, BitTorrent), а также закрывает ряд критических нюансов стабильности сетевого стека.
🌟 Ключевые нововведения и исправления
- 🚀 Brutal Congestion Control для Hysteria2:
- Собственная реализация контроллера перегрузки и пейсера
Brutalв сетевом стеке Quinn (Controller+ControllerFactory). - Фиксированный пейсинг передачи пакетов строго по заданной скорости
up_mbpsбез отката окна перегрузки при потерях пакетов цензором ТСПУ (до 15–30% drop rate), спасая скорость туннеля там, где BBR и Cubic падают в ноль.
- Собственная реализация контроллера перегрузки и пейсера
- 🛡️ Нефатальный
action: "resolve"и исправление интеграции с ByeDPI / Zapret:- Ошибки или задержки DNS-резолва в правилах
action: "resolve"больше не валят входящее TCP-соединение с ошибкой на этапе роутинга — ядро продолжает проверку правил к целевому outbound (yt-out). - При успешном резолве адрес назначения перезаписывается на реальный IP (
Target::Ip), а оригинальный домен сохраняется вctx.domainдля последующих правилdomain_suffix. - SOCKS-аутбаунд передаёт в локальный демон
ciadpiчистый реальный IP (ATYP0x01/0x04), полностью устраняя зацикливание обратных DNS-запросов и петель FakeIP (198.18.x.y) на роутере. - В
lookup_viaдобавлена корректная обработка локальных типов DNS-серверов (hostsиlocal/neighbor).
- Ошибки или задержки DNS-резолва в правилах
- 🌐 Полноценный нативный Tailscale Outbound (рассмотрен PR #15 от @MaksSt):
- Реализация клиентского узла Tailscale на чистом Rust (zero-C-crypto): аутентификация через координатор, STUN-запросы, Direct UDP P2P hole punching и шифрованные DERP-релеи (XSalsa20-Poly1305).
- 🔍 L7-сниффинг для UDP и парсинг протоколов (рассмотрены PR #14 и PR #16 от @Screamshow):
- Пакетный L7-сниффинг входящего UDP-трафика: детекция протоколов DNS, QUIC (v1/v2 Initial с парсингом фрагментированных ClientHello), STUN и BitTorrent.
- Поддержка составных длительностей формата
1m30s,300msв рантайме. - Поддержка правил с опциями
udp_timeoutиip_version. - Приведение формата ответов Clash API (
/rulesи/connections) в полное соответствие с эталоном sing-box.
- 🔒 Надёжность криптографических примитивов и рантайма:
- Корректная обработка пустых TLS-рекордов без падения воркера соединения.
- Гарантированная зачистка буфера открытого текста при несовпадении аутентификационного тега в софтовом AES-GCM.
- Исправлено поднятие лимита файловых дескрипторов
RLIMIT_NOFILEна OpenWrt в procd (рассмотрен PR #13 от @Screamshow).
🤝 Рассмотренные Pull Requests и вклад сообщества
- PR #15 (автор: @MaksSt) — рассмотрена нативная реализация клиента Tailscale и MagicDNS. Архитектура доработана под чистый Rust (zero-C-crypto), прямое P2P-соединение через STUN и встроенный сетевой стек Tachyon.
- PR #14 и PR #16 (автор: @Screamshow) — рассмотрен L7-сниффинг UDP-датаграмм и распознавание пакетов QUIC v1/v2 Initial. Реализован полный сниффер (DNS, QUIC, STUN, BitTorrent, DTLS, NTP) с дефрагментацией ClientHello в UdpHub и wire-тестами RFC 9001/9369.
- PR #13 (автор: @Screamshow) — рассмотрена логика поднятия мягкого лимита
RLIMIT_NOFILEв окружениях с низким жестким лимитом (OpenWrt procd). Добавлен расчётmin(65535, hard)и подробное журналирование ошибок.
📦 Контрольные суммы бинарников (SHA-256)
d55072c9ae612c8fbf805fa4c47498912d37f66b727db51114561bf45199f5fa ./tachyon-core-aarch64-v0.0.7
5983646a5de9a51610921d9f743b9c6fa5ab8340f75ba7b3ba1db5ffa3c0f523 ./tachyon-core-armv7-v0.0.7
7932b1c45ff5b6f21042f8f3e75c2eb512036dc6b34341a8583e4db8bbe66edf ./tachyon-core-darwin-amd64-v0.0.7
781368dda21e634c0d4138b66091b53d7421a800e685822b47df24cd9165acf5 ./tachyon-core-darwin-arm64-v0.0.7
5b1d87d6fdaf17244e205b728f0322644583797b02a126928056e1ea926a004b ./tachyon-core-linux-amd64-v0.0.7
e21ef7826054b65b80ad2872c9d5d58c642a208092b0db185ef7d68b858e3799 ./tachyon-core-mips-v0.0.7
83d78f5bffe1775956e92b8c7211f3e43e80da880f88159687a985c759455000 ./tachyon-core-mipsel-v0.0.7
186fd5dd8777c88e32a5a47f3840c6ec50c5a97f05801c49aa69ea0c6ddfcc2e ./tachyon-core-riscv64-v0.0.7
ebc4eadf7069abe87568fb86ba1888be3c8bf22d7b46796b0abe5fa4a55565fa *./tachyon-core.exe
9b2ebac527511a9ba2c23885ebb88e271920fcadc96d8e33c58b19d56dee20f2 ./tachyon-core-x86_64-v0.0.7
Full Changelog: v0.0.6...v0.0.7
⚡ Tachyon Core v0.0.6 — Сетевое ядро для OpenWrt (Zero-Downtime Hot Reload, фикс петель DNS, uTLS Random и Trojan IPv6)
⚡ Tachyon Core v0.0.6 — Сетевое ядро для OpenWrt (Zero-Downtime Hot Reload, фикс петель DNS, uTLS Random и Trojan IPv6)
Выпуск tachyon-core v0.0.6 — шестой релиз сверхбыстрого, независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.6 реализует настоящий бесшовный Zero-Downtime Hot Reload по сигналу SIGHUP без пересоздания сокетов и без разрыва живых сессий, полностью устраняет сброс задержек серверов в N/A, ликвидирует опасные петли между ядром и системным резолвером dnsmasq, добавляет процессорную стабильность uTLS random-фингерпринтов и исправляет адресацию в сервере Trojan.
🌟 Ключевые нововведения и исправления
- 🔄 Настоящий Zero-Downtime Hot Reload по SIGHUP:
- Атомарная замена
RouterInnerна лету черезRwLockбез закрытия и пересоздания сетевых сокетов, когда инбаунды неизменны. - Живые TCP-соединения (видеосвязь, загрузки, SSH, мессенджеры) продолжают передачу данных без малейших разрывов.
- Полная миграция истории задержек узлов (
delay_history), выбранных состояний селекторов и задержек в группахurltest— статус серверов в веб-интерфейсе и Clash API больше никогда не сбрасывается вN/Aпри обновлении подписок или переключениях. - Миграция активного DNS-кэша, резолвленных адресов серверов, обратных зон и пулов
FakeIP(LRU-маппинги адресов и доменов сохраняются без сброса). - Безопасный откат: если новый конфиг содержит ошибки или битый DNS, ядро оставляет текущую рабочую конфигурацию нетронутой.
- Атомарная замена
- 🛡️ Защита от DNS-петель и ретрансмит UDP:
- Исключен опасный фолбэк на системный резолвер (
lookup_host) при ошибке или таймаутеdomain_resolver. Устранено зацикливание запросов междуdnsmasqиsing-boxна 53 порту, вешавшее сеть на роутере. - Добавлен интервальный ретрансмит UDP-запросов (1.5 с) для надёжного восстановления при потерях пакетов на нестабильных PPPoE-линках.
- Исключен опасный фолбэк на системный резолвер (
- 🎭 Процессно-стабильные uTLS Random фингерпринты (спасибо @Screamshow, PR #11):
- Полноценная поддержка uTLS профилей
"random"и"randomized"в рантайме (включая работу с REALITY). - Профиль стабилен на протяжении жизни процесса, расширения и наборы шифров рандомизируются без поломки согласования
h2и гибридных групп.
- Полноценная поддержка uTLS профилей
- 🎯 Исправление адресации в сервере Trojan (спасибо @MaksSt, PR #10):
- Преобразование SOCKS ATYP изолировано строго на границе Trojan-сервера, wire-формат VLESS/VMess остаётся стандартным.
- Восстановлена передача данных к доменным и IPv6-целям через TLS в сервере Trojan с wire-тестами.
📦 Контрольные суммы бинарников (SHA-256)
c5e810fd96ec053cc074069a638ad7b7f68fc8653d2829d1cfd0e3df3e42e139 ./tachyon-core-aarch64-v0.0.6
6e521e6fff143383943722f4d56289b9741f60a7dbe9b1c3331bbc1e25d86d09 ./tachyon-core-armv6-v0.0.6
6618b2061eb5963b42ddb39ee08ddaf9fe6ab801e251dcbe3fe45d673538ab9e ./tachyon-core-armv7-v0.0.6
8385a9d1b415f30b7aa92088f261fda65f793d178b3de26e5a100760fbb17c31 ./tachyon-core-darwin-amd64-v0.0.6
8558d73bfcf89c115eee4c406669ba0a12a841c3a1a125e1c175ae3eba723353 ./tachyon-core-darwin-arm64-v0.0.6
01895bbca96a8002b99c33414e738229252a6331435a2cdda74bcf656c448e39 ./tachyon-core-linux-amd64-v0.0.6
f519957e03a6d9327dbe965010a838e5ea80678bf52b44aa84cdf81bc26ae831 ./tachyon-core-mips-v0.0.6
f5df047e0f95cda13f9aabb3d9ad7b0131c129c9d79fda484ebc6a25ebac4df8 ./tachyon-core-mipsel-v0.0.6
82e88e14e7853ec626d8fbe2437203f38a5ee4aba7d940023364519c85881639 ./tachyon-core-riscv64-v0.0.6
00fdff29cfe3b51a9c1164057b89f61788923775fef32fdf23361341adc1ed83 *./tachyon-core.exe
c92cbba87b5a2799221f2538dfd00ea41533ef2a832dd15d19ec71c4effc3d96 ./tachyon-core-x86_64-v0.0.6
Full Changelog: v0.0.5...v0.0.6
⚡ Tachyon Core v0.0.5 — Сетевое ядро для OpenWrt (Поддержка Mieru TCP, кэширование Bootstrap DNS)
⚡ Tachyon Core v0.0.5 — Сетевое ядро для OpenWrt (Поддержка Mieru TCP, кэширование Bootstrap DNS)
Выпуск tachyon-core v0.0.5 — пятый релиз независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.5 внедряет полную клиентскую и серверную поддержку протокола mieru по TCP, а также решает критическую проблему с исчезновением интернета при использовании больших списков узлов за счет дедупликации и кэширования bootstrap DNS-запросов.
🌟 Ключевые нововведения и исправления
- 🌐 Поддержка протокола mieru (TCP клиент и сервер):
- Реализованы входящий (
inbound) и исходящий (outbound) транспорты mieru. - Полная интероперабельность: подтверждена корректная работа в обе стороны с эталонными бинарниками
mieru/mita3.38.0 (побайтовая сверка потоков данных).
- Реализованы входящий (
- 🛡️ Кэширование и дедупликация Bootstrap DNS:
- Адрес DoH-сервера, разрешаемый через
domain_resolver, теперь кэшируется на 60 секунд, а параллельные запросы от десятков узлов объединяются в один. - Устранена проблема лавинообразных запросов при старте 50+ узлов, приводившая к дропам апстрима, таймаутам и зацикливанию в dnsmasq.
- Сбой по одному типу записи (A или AAAA) больше не приводит к отказу всего bootstrap-запрос.
- Информативные предупреждения с указанием реальной причины ошибки при сбое разрешения.
- Адрес DoH-сервера, разрешаемый через
📦 Контрольные суммы бинарников (SHA-256)
c43211469fa313affbe31e6d4da2adeedf280e1c52c1dac6bdbbaa4a924b693a ./tachyon-core-aarch64-v0.0.5
628a60c0209e9381268822d6e17f9de17f5cd13f0d24728880f2aedf930f8cc1 ./tachyon-core-armv6-v0.0.5
e021fabe597411bd205fb9e27ee8b7b7b515b8d038a6320f8b6b81f8e6709c9e ./tachyon-core-armv7-v0.0.5
4520433f06038b60b3127fec9623c436c77f8ae69a7ac83af5508d706954d1fc ./tachyon-core-darwin-amd64-v0.0.5
328f7515a52ecdc2091ffda375e13bb30f4e95018027676523194cfabb0298cf ./tachyon-core-darwin-arm64-v0.0.5
da3502df1e722bf3c6a8603b5290f5c5755d6387bb4430aa8f66a4f9e183744b ./tachyon-core-linux-amd64-v0.0.5
c3f19be51b7f577b8357851be9f01e20b361af3d8536b98dd6b2ef928088e590 ./tachyon-core-mips-v0.0.5
36ba9b381139264201236570ac4f70ed88e46ef6c5b1b168732ecfdce9fec849 ./tachyon-core-mipsel-v0.0.5
f46134466533f6c30fa65f59cec1cf28636dd31668e168aa2076f55e37754b5a ./tachyon-core-riscv64-v0.0.5
b5a0169cc343df8e1a47bf8693d3c000a4306c3d5ab665d32b9dbea1d635eb4c *./tachyon-core.exe
e2076b534c35ba82a0c1cbfa01ca477232668ccb37210d306177076c18cf8538 ./tachyon-core-x86_64-v0.0.5
Full Changelog: v0.0.4...v0.0.5
⚡ Tachyon Core v0.0.4 — Сетевое ядро для OpenWrt (Оптимизация пула XHTTP, фикс задержек, очистка сокетов UDP)
⚡ Tachyon Core v0.0.4 — Сетевое ядро для OpenWrt (Оптимизация пула XHTTP, фикс задержек, очистка сокетов UDP)
Выпуск tachyon-core v0.0.4 — четвёртый релиз независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.4 устраняет зависание соединений и аномально высокие задержки в транспорте XHTTP, восстанавливает работу remote rule-set в правилах DNS, обеспечивает корректное освобождение портов и сокетов при SIGHUP, а также расширяет поддержку UDP (XUDP, TProxy, Hysteria 2).
🌟 Ключевые нововведения и исправления
- ⚡ XHTTP: ликвидация задержек и возврат сокетов в пул:
- Сокет теперь немедленно возвращается в пул после отправки
POST-запроса (пустое тело сContent-Length: 0больше не блокирует соединение). - Исправлена инвертированная проверка мультиплексора
xmux, приводившая к открытию лишних соединений на каждый запрос. - Задержки по xhttp-узлам снизились до базовых значений, double-hop конфигурации больше не зависают в статусе
N/A.
- Сокет теперь немедленно возвращается в пул после отправки
- 🛡️ DNS-резолвер и правила:
- Добавлена поддержка удалённых наборов правил (
remote rule-set) внутри секции DNS-правил (PR #8). - Сохранение порядка правил и обратного сопоставления FakeIP в цепочках
evaluateиrespond. - Корректный заголовок
Content-Lengthпри взаимодействии с DoH-серверами Cloudflare.
- Добавлена поддержка удалённых наборов правил (
- 🔄 Очистка портов и UDP-стек (спасибо @MaksSt, PR #9):
- Гарантированное освобождение портов инбаундов при SIGHUP и остановке сервиса: UDP, QUIC, Hysteria 2, TProxy (#5).
- Защита от сбоя: автоматический откат к предыдущей конфигурации, если новая не может стартовать.
- Корректная поддержка XUDP / VLESS UDP, ответы TProxy с исходного адреса назначения и session id для Hysteria 2.
- Таймаут блокирующих фоновых воркеров в CLI.
Спасибо @Screamshow за PR #7 и детальный аудит поведения DNS.
📦 Контрольные суммы бинарников (SHA-256)
751cb8b23b4f61e9f188643c8d54d04d3136e29a8a3e65c09ccba9d343afa081 ./tachyon-core-aarch64-v0.0.4
137a6470f25ab602fde699e64f65f2035592ae08d7c0266bfbd465c3d3ff347d ./tachyon-core-armv6-v0.0.4
908558536c463e82566591b2b725804bf54fb9e88aa5b153e8abeccb9f223126 ./tachyon-core-armv7-v0.0.4
4209aba6ca5b3ef134a3e7dfc46327db181ad242ab1dab83d84b8ef385e132dd ./tachyon-core-darwin-amd64-v0.0.4
06bc7ef1a3e4f693b896ade9dace60ff06f8a84b2d43e1f61ca0eba30bc533b6 ./tachyon-core-darwin-arm64-v0.0.4
4010a0329131625e0aafb4dfc8b984e223d0c4fac5c330d463631b7e78f02b41 ./tachyon-core-linux-amd64-v0.0.4
93ec14464bc8a1ff9086771405cfdbae5bb40ba594808019e94598a215398684 ./tachyon-core-mips-v0.0.4
638c85af642e3d19f5beb76fd290dd0f764f088ee711daa889d03bb4de7e47f7 ./tachyon-core-mipsel-v0.0.4
b72a907ea282473fec0ca352b2fc23b53042c991d12bec1f13f5049ad06d5cdf ./tachyon-core-riscv64-v0.0.4
5acfc7e09d796874b2dc9f88259e5f1e8a9043f0abfb0ec49239e436c31d04cf *./tachyon-core.exe
c6aebdffbe1f64598f789a55528d8ebdd56c2261e8fce1dcf16070a0bf345443 ./tachyon-core-x86_64-v0.0.4
Full Changelog: v0.0.3...v0.0.4
⚡ Tachyon Core v0.0.3 — Сетевое ядро для OpenWrt (Чистый вывод версии, фикс составных RuleSet и оптимизация CI)
⚡ Tachyon Core v0.0.3 — Сетевое ядро для OpenWrt (Чистый вывод версии, фикс составных RuleSet и оптимизация CI)
Выпуск tachyon-core v0.0.3 — третий релиз сверхбыстрого, независимого сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.
Релиз 0.0.3 приводит формат идентификации ядра к лаконичному стандартному виду, устраняет критический баг ложного сопоставления составных headless rule-set правил в DNS-резолвере, гарантирует маркировку исходящих пакетов прокси-соединений для предотвращения сетевых петель в nftables, стабилизирует компоновку musl для архитектур MIPS/MIPSEL и оптимизирует процесс CI-сборки.
🌟 Ключевые нововведения и исправления
- 🏷️ Чистый и стандартизированный вывод версии ядра:
- Команда
tachyon-core versionи флаги-v/--versionтеперь строго выводятtachyon-core 0.0.3(без префиксаsing-boxи без избыточных постфиксов.0). - Полная согласованность с регулярными выражениями парсера версий и статуса Tachyon (
core/common.ucиcomponents/versions.uc).
- Команда
- 🎯 Исправление матчинга составных headless правил в RuleSet:
- В
PlainRule::matchesиRuleSetIndexустранена критическая ошибка сопоставления составных правил: поля правил (такие какnetwork: udpиport_range) ошибочно оценивались независимо черезOR, из-за чего правило Discord Voice для UDP портов 50000-65535 матчило абсолютно все DNS-запросы роутера и выдавалоFakeIP 198.18.0.xна абсолютно все домены (включая yandex.ru, vk.com и т.д.). - Введена строгая семантика
ANDс флагами присутствия полей и вынесением составных правил в отдельный fallback-список индекса.
- В
- 🏷️ Маркировка сокетов прокси-соединений (
routing_mark/default_mark):- Реализовано применение настроек
apply_dial_defaultsна всех типах прокси-исходящих (VLESS, Trojan, Shadowsocks, VMess, ShadowTLS, Naive, Snell). - Исходящие соединения до удалённых серверов теперь маркируются меткой
0x08000000, исключая зацикливание пакетов во входящую цепочкуTachyonTable(TProxy Mangle в nftables).
- Реализовано применение настроек
- 🔄 Бесшовный in-place reload по сигналу SIGHUP (Zero Downtime):
- В рантайм
core_runtimeдобавлена поддержкаrun_reloadableс перехватом системного сигналаSignalKind::hangup(). - При вызове
kill -HUP $pid(отправляемом Tachyon при DNS failover и применении новых параметров) ядро заново перечитывает конфигурационный файл, штатно освобождает сокеты и запускает новый инстанс с тем же PID без аварийного завершения процесса (код 129).
- В рантайм
- 🛠️ Стабильность линковщика для MIPS и MIPSEL (musl softfloat & ramips):
- Для целевых платформ
mips-unknown-linux-muslиmipsel-unknown-linux-muslвстроена библиотека раскрутки стека со стабами_dl_find_object, исключающая ошибки линковки на старых ядрах и тулчейнах.
- Для целевых платформ
- ⚡ Оптимизация CI-пайплайна сборки всех платформ:
- Разделены триггеры автоматической сборки: полный билд матрицы из 11 платформ запускается строго при публикации релизного тега (
release.yml), исключая дублирование параллельных сборок и снижая нагрузку на раннеры Actions.
- Разделены триггеры автоматической сборки: полный билд матрицы из 11 платформ запускается строго при публикации релизного тега (
📦 Контрольные суммы бинарников (SHA-256)
657e580576534363c1d20d23abea31883e109faf8546b713c14937864e93bc35 ./tachyon-core-aarch64-v0.0.3
cd7579c9962fef3b37ab84875b11ed84938dcf9f518b9a7af72c7bb096acd296 ./tachyon-core-armv6-v0.0.3
53a4d7ec6d14f056f44889d1705747203ae4a92afca1882d3da405ce1893535b ./tachyon-core-armv7-v0.0.3
1a32c2780d3f50a77ae883a5cdeeee8b1e08cc387b3ebc94a320a164d4c0278b ./tachyon-core-darwin-amd64-v0.0.3
32ec7e912b3ac47486e6b237ebc5c58add6eb4f89926f2966796cd95ed7efea1 ./tachyon-core-darwin-arm64-v0.0.3
c47a6f3dbe26f3c73df8248f23c85fcfcab866ef75d2e56d2850f8370444cbd5 ./tachyon-core-linux-amd64-v0.0.3
0e0c68f4cf54ccd05b3ce6f27255bb418a1736fd7e6caef810c824bc48659c31 ./tachyon-core-mips-v0.0.3
1bd2a8812db5d7782ebeb012fb7a5810629102ee2695c2b666fd4f4b3dfb397e ./tachyon-core-mipsel-v0.0.3
cee41d76634b13592f5a0bcc3bddfe91f8da56ce5c31e400a0fc2c94ce0e7692 ./tachyon-core-riscv64-v0.0.3
f6e517749f04875b9fc08755f3818901036c300c4407da3ae8c2abfe67bdf50d *./tachyon-core.exe
84785165b6941619492885f5f0c1a6e04609733125490fdafd67847d6415c48c ./tachyon-core-x86_64-v0.0.3
Commit: e4237ed
Full Changelog: v0.0.2...v0.0.3