
Привет, Хабр! Когда первая статья про мой легковесный TUN-клиент Unbihex внезапно собрала 104 тысячи просмотров, проект был на версии 0.1.0. Тогда это был дерзкий прототип, который ел 18 МБ оперативки, умел базовый джентльменский набор (VLESS, Vision, REALITY, XHTTP) и решал мою главную боль — избавлял от жирных обёрток со сборщиками мусора.
После публикации начался настоящий продакшен: в репозиторий пришли живые пользователи со своими провайдерами, панелями, роутерами, нестандартными конфигами и пулл-реквестами. Быстро выяснилось, что написать быстрый клиент «для себя» и сделать универсальное прокси-ядро, которое не падает на битых пакетах, переживает белые списки мобильных операторов и байт-в-байт дружит с капризами Xray 26 и sing-box — это две совершенно разные задачи.
К версиям ядра unbihex-engine 0.1.9 (Rust edition 2024) и клиента 0.2.10 проект вырос в полноценную экосистему. Мы внедрили жёсткую гигиену кода (unsafe_code = "deny" и clippy::unwrap_used = "deny", чтобы ни один кривой байт из сети не вызвал панику), добавили десяток протоколов, собрали TUI в духе btop и даже написали свой серверный REALITY-инбаунд. Но самое интересное началось, когда готовые крейты с crates.io перестали справляться и их пришлось вендорить и патчить руками.
Под катом — честный разбор сетевых граблей, неочевидных особенностей TCP в Linux и изнанки современных протоколов обхода блокировок.