Есть класс задач, где обычный сетевой стек просто не заводится. Канал в 300 бод на КВ. LoRa-модуль, который отдаёт пару килобит и то не всегда. Спутниковый линк с задержкой в секунды. Кабель между двумя зданиями, который кто-то регулярно перерезает. TCP/IP на этом либо не работает, либо работает так, что лучше бы не работал: три раунд-трипа на рукопожатие, ретрансмиты по таймауту, DHCP, который ждёт ответа, DNS, который ждёт своего.
Reticulum — попытка собрать стек заново, начиная с предположения «канал плохой, и это норма». Заявленный нижний порог — 5 бит в секунду и MTU 500 байт, верхний ориентир разработчиков — гигабит. Проект живой: последний релиз RNS 1.3.8 вышел 10 июля 2026 года, API и формат кадра объявлены стабильными.
Ниже — разбор по слоям: что именно там устроено иначе, почему адрес себе выдаёт сам узел, и во что это выливается, когда доходишь до pip install.
Кому это может пригодиться
Радиолюбителям и LoRa-энтузиастам; тем, кто строит связь на объектах без интернета; людям, которым нужен канал между двумя точками через неуправляемую среду. Тем, у кого дома гигабит и стабильный VPS, Reticulum не заменит ничего — он решает другой класс проблем.
Сначала — чем это не является
Reticulum регулярно называют «децентрализованным интернетом», и это ровно та формулировка, из-за которой потом разочаровываются. Три уточнения:
- Это не сеть, а конструктор сетей. Никакого «подключиться к Reticulum» не существует — вы либо соединяетесь с чьим-то узлом, либо поднимаете свой сегмент. Формулировка самого проекта — «инструмент для построения тысяч сетей», а не одна большая.
- Это не анонимайзер уровня Tor. Шифрование включено всегда и отключить его нельзя, адрес отправителя в пакете действительно не передаётся — но транспортные узлы видят адрес назначения, размеры и тайминги пакетов, а радиопередатчик пеленгуется независимо от криптографии.
- Это не замена IP. Reticulum работает в userland поверх чего угодно, включая обычный TCP. Ядерных модулей нет, интерфейсов в системе он не создаёт.
Слой за слоем
Interface: всё, по чему можно передать байты
Нижний слой абстрагирует физическую среду. В поставке — Ethernet и WiFi (через AutoInterface с multicast-обнаружением соседей), TCP и UDP, последовательные порты, KISS-совместимые модемы и TNC для пакетного радио, LoRa через устройства RNode, а также запуск произвольной внешней программы с общением через stdio.
Требование к среде ровно одно: полудуплексный канал быстрее 5 бит/с с MTU не меньше 500 байт. Всё остальное — детали конфигурации.
| Интерфейс | Ключевые параметры | Где применяется |
|---|---|---|
AutoInterface |
group_id, devices, multicast_address_type |
автообнаружение соседей в локалке |
TCPServerInterface |
listen_ip, listen_port (по умолчанию 4242) |
точка входа на VPS |
TCPClientInterface |
target_host, target_port, kiss_framing |
подключение к чужому узлу |
UDPInterface |
listen_port, forward_ip, forward_port |
широковещание в сегменте |
RNodeInterface |
port, frequency, bandwidth, spreadingfactor, codingrate, txpower |
LoRa |
I2PInterface |
connectable, peers |
линк через I2P без публичного IP |
Destination: адрес, который никто не выдаёт
Адрес в Reticulum — это 16 байт, усечённый SHA-256 от публичного ключа и имени назначения. Выглядит как <13425ec15b621c1d928589718000d814>. При необходимости длина расширяется до 256 бит.
Ключевое: адрес себе создаёт сам узел, локально, без обращения куда-либо. Нет регистратора, нет DHCP, нет выделения подсетей. Адрес переносим — узел переехал в другую точку сети и остаётся достижимым по тому же идентификатору. Новый адрес становится видимым остальным за секунды-минуты, по мере распространения анонса.
Типов назначения четыре:
- single — шифрованный юникаст на уникальный публичный ключ, ходит через несколько хопов;
- plain — нешифрованный, только локально, без многохоповой маршрутизации;
- group — симметричное AES-256 на предварительно разделённом ключе;
- link — абстракция канала, о ней ниже.
Криптография фиксированная и без выбора: X25519 для обмена ключами, Ed25519 для подписей, AES-256-CBC с PKCS7 для симметрики, HKDF для деривации, HMAC-SHA256 для аутентификации, токены по спецификации Fernet. Нешифрованный линк установить нельзя в принципе, нешифрованные пакеты отбрасываются как невалидные.
Пакет: 19 байт служебки
Формат кадра плоский и короткий: два байта заголовка, 16 или 32 байта адресов, один байт контекста, дальше данные — до 465 байт. Первый байт заголовка — набор флагов (IFAC, тип заголовка, флаг контекста, режим распространения, тип назначения, тип пакета), второй — счётчик хопов.
Отсюда и цифры, которые проект любит показывать: запрос на установку линка — 51 байт, анонс — 167 байт, подтверждение линка — 115 байт.
Link: три пакета и анонимный инициатор
Link — эфемерный шифрованный канал поверх пути. Инициатор шлёт запрос, назначение генерирует одноразовую пару X25519, стороны считают общий секрет по ECDH, назначение подписывает доказательство ключом Ed25519.
Вся установка — три пакета общим объёмом 297 байт. Удержание установленного канала стоит 0,45 бит в секунду. Для сравнения: TLS-рукопожатие поверх TCP на таком канале заняло бы минуты.
Побочный эффект схемы: инициатор в процессе установки не раскрывает свою идентичность — назначение узнаёт только эфемерный ключ. Плюс forward secrecy, потому что ключи одноразовые.
Сравните порядок величин. На канале в 5 бит/с установка Link займёт около восьми минут — и это работает. Обычный TCP+TLS на такой скорости не установится вовсе: сработают таймауты.
Transport: маршрут по факту услышанного
Маршрутизации в привычном смысле здесь нет — нет протокола обмена таблицами, нет метрик, нет площадей. Есть анонсы: узел объявляет о себе, соседи ретранслируют, каждый запомнивший строит запись «до этого адреса — через такого-то соседа, столько-то хопов».
Параметры по умолчанию: максимум 128 хопов, под анонсы отводится 2 % полосы интерфейса, одна попытка ретрансмита со случайной задержкой, дубликаты игнорируются.
Узел по умолчанию не пересылает чужой трафик. Чтобы он стал транспортным, в конфиге нужно явно включить:
[reticulum]
enable_transport = Yes
Транспортный узел хранит таблицы линков и знание об анонсах — то есть именно он видит, кто с кем в принципе разговаривает, пусть и без содержимого.
Практика: от pip до первого файла
Ставится это как обычный питоновский пакет:
pip install rns
# на Debian/Ubuntu/Raspberry Pi и свежих macOS:
pip install rns --break-system-packages
# либо изолированно:
pipx install rns
Дальше — демон и конфиг:
rnsd --exampleconfig > ~/.reticulum/config # шаблон с комментариями
rnsd -vvv # запуск с подробным логом
rnstatus # состояние интерфейсов
Конфиг живёт в ~/.reticulum/config, формат — INI с вложенными секциями. Минимальный узел на VPS, который принимает подключения и работает транспортом:
[reticulum]
enable_transport = Yes
share_instance = Yes
[interfaces]
[[Local WiFi]]
type = AutoInterface
enabled = yes
[[Public TCP]]
type = TCPServerInterface
enabled = yes
listen_ip = 0.0.0.0
listen_port = 4242
Клиент на ноутбуке подключается к нему встречным блоком:
[[Uplink]]
type = TCPClientInterface
enabled = yes
target_host = 203.0.113.10
target_port = 4242
Если сегмент должен быть закрытым, включается IFAC — интерфейсная аутентификация. Она не заменяет шифрование данных, а отсекает чужие узлы на уровне интерфейса:
network_name = internal_1
passphrase = <ваша-длинная-фраза>
ifac_size = 16
passphrase в конфиге лежит открытым текстом. Права на ~/.reticulum/config стоит выставить в 600, а на общей машине — трижды подумать, кто ещё имеет доступ к домашнему каталогу пользователя, под которым крутится rnsd.
Утилиты, ради которых это ставят
Сам по себе стек ничего не делает — интерес в том, что поверх него уже написано и идёт в комплекте:
rnstatus— состояние интерфейсов и трафик;rnpath— просмотр и сброс известных путей;rnprobe— диагностика связности до конкретного адреса;rncp— копирование файлов между узлами;rnid— управление идентичностями, шифрование и расшифровка файлов;rnsh— интерактивный удалённый шелл;rnx— запуск одной команды на удалённом узле с возвратом вывода;rngitиgit-remote-rns— git-ремоут поверх Reticulum, с подписью и валидацией коммитов.
Отдельно — прикладной слой. LXMF — протокол обмена сообщениями, терпимый к задержкам и разрывам (мессенджер, который переживает отсутствие связи часами). Поверх него Sideband — графический клиент для Android, Linux, macOS и Windows с файлами, голосовыми, картами и телеметрией, и Nomad Network — текстовая среда со страницами и файлообменом.
Разумный первый эксперимент
- Поднять
rnsdна VPS сTCPServerInterfaceиenable_transport = Yes. - На ноутбуке добавить
TCPClientInterfaceна этот VPS, проверитьrnstatus. - Прогнать
rnprobeдо адреса VPS, посмотреть хопы черезrnpath. - Перекинуть файл через
rncpи открытьrnsh. - Только после этого браться за радиочасть — она добавляет свой пласт проблем.
Где это ломается
Честный список ограничений, без которого разбор был бы рекламой.
Производительность. Референсная реализация написана на Python. Для 5 бит/с это неважно, для гигабита — важно очень. Есть отдельный пакет rnspure для систем без PyCA/cryptography, и он заметно медленнее обычного.
Метаданные. Шифрование содержимого — не то же самое, что скрытие факта связи. Транспортные узлы наблюдают адреса назначения, объёмы и время. В радиоканале добавляется физика: передатчик пеленгуется, и никакая криптография этому не мешает.
Радио — это регулируемая среда. LoRa на 433/868/915 МГц и пакетное радио в VHF живут в разных правовых режимах в разных странах: где-то нужна лицензия, где-то ограничена мощность и доля эфирного времени, где-то шифрование в любительских диапазонах прямо запрещено. Это не мелочь — это первое, что стоит выяснить до покупки железа.
Проверьте местные правила использования выбранного диапазона до того, как выйдете в эфир. Требования к лицензии, к максимальной мощности, к duty cycle и к допустимости шифрования различаются по странам, и незнание тут не помогает.
Экосистема маленькая. Это не тот случай, когда на вопрос находится десять ответов на Stack Overflow. Документация у проекта подробная, сообщество — узкое.
Reticulum осмысленно выбирать тогда, когда обычный стек уже не справляется: канал слишком медленный, слишком рваный или слишком враждебный. Если у вас есть работающий IP и вопрос только в приватности — правильные инструменты другие: WireGuard, Tor, обычные VPN-решения.
По теме на форуме
- Серый IP и CGNAT: пять маршрутов к домашнему серверу — большой гайд
- Пинг идёт, а файлы виснут: диагностика MTU, MSS и чёрных дыр PMTU за три команды
Источники
- Reticulum Network — официальный сайт
- Understanding Reticulum — раздел руководства с описанием слоёв, криптографии и формата кадра
- Getting Started Fast — установка, конфиг, утилиты
- Configuring Interfaces — параметры интерфейсов
- markqvist/Reticulum — репозиторий и релизы
Кто-нибудь уже пробовал Reticulum на практике — не как игрушку, а под задачу? Особенно интересны две вещи: реальная дальность и стабильность на LoRa-линке между зданиями, и опыт использования rnsh/rncp как запасного канала управления сервером, когда основной канал лёг.


