基于 LoRa 和分组无线电的无供应商、无 IP 地址自治互联网
最近偶然发现了一个有趣的项目,它让我想起了 FidoNet 和 BBS 时代,但使用的是现代加密技术。想象一下这种场景:基站瘫痪了,家庭网络断了,主干光缆被切断,而你需要发送消息或查阅文档。NomadNet 正是为解决这类问题而生的。
该项目创建了一个完全自治的网状网络,根本不需要互联网。无需 IP 地址、DNS 服务器、电话号码注册或中心节点。一切都运行在任何能够传输字节的信道之上,无论是便宜的 LoRa 模块、无线电调制解调器、Wi-Fi,甚至是老旧的串行接口。

底层原理
NomadNet 基于同一作者的两个库构建:Reticulum Network Stack (RNS) 和 LXMF 消息协议。
Reticulum 负责处理所有底层细节。它构建了一个点对点的加密网状网络,具有节点到节点的消息路由功能。RNS 设计为可以在极低速度下正常工作。系统可以在 300 比特每秒的无线电频道上愉快地传输数据。如果你有以太网或互联网可用,Reticulum 可以将其作为传输方式之一,将本地孤立的网络岛屿连接成统一网络。
LXMF 在 Reticulum 基础上添加了加密消息传递功能,支持端到端加密和前向保密。如果接收方离线,中间节点会存储加密数据包,待该节点重新上线时再进行投递。
NomadNet 将所有这些功能整合成一个控制台界面(TUI),包含内置浏览器和消息传递功能。

系统功能
在功能方面,NomadNet 类似于一个基于军事级容错原则构建的袖珍 Web 1.0:
- 文本浏览器和微页面。内置运行着精简的 Micron 页面浏览器。这是一种针对低带宽信道优化的轻量级标记语言。页面在客户端缓存以避免通过无线电重复传输流量。
- 节点的动态内容。节点不仅可以提供静态页面。你可以将响应生成绑定到 Python、Bash 或 PHP 脚本。得益于此,人们运行着完整的论坛、天气预报和分类广告板。
- 无中间人的离线消息。消息传递采用 P2P 原则。使用加密哈希进行寻址,而非域名或电话号码。无需密码或登录:节点标识符本身就是公钥。
- 后台运行。NomadNet 可以作为图形化 TUI 客户端运行,也可以作为系统守护进程部署在家庭服务器或树莓派上,为邻居充当中继。

如何搭建自己的节点
由于项目使用 Python 编写,安装极其简单。最快的部署方式是使用 pipx 或标准 pip:
# Установка через pipx в изолированное окружение
pipx install nomadnet
# При необходимости можно докинуть утилиты RNS и LXMF
pipx install rns
pipx install lxmf
# Запуск интерактивного интерфейса
nomadnet
如果你不想处理 Python 环境,作者构建了官方 Docker 镜像:
# Запуск TUI в контейнере
docker run -it ghcr.io/markqvist/nomadnet:master --textui
# Либо запуск демона с пробросом конфигурации хоста
docker run -d \
-v ~/.nomadnetwork/:/root/.nomadnetwork/ \
-v ~/.reticulum/:/root/.reticulum/ \
--network host \
ghcr.io/markqvist/nomadnet:master
首次启动时,NomadNet 会打开内置指南。要测试网络而无需购买无线电模块,只需通过互联网连接到公共 RNS 测试网络即可。
在测试网络中,你可以浏览其他节点。按 Ctrl+U,输入节点哈希(例如都柏林 hub 的 abb3ebcd03cb2388a838e70c001291f9),然后按回车。程序会在网络中查找路由并加载主页。

社区已经构建了什么
围绕 Reticulum 和 NomadNet,一个爱好者基础设施正在逐步形成。如果你查看第三方工具目录,可以找到:
- NomadForum — 适用于节点的极简论坛引擎;
- NomadForecast — 收集报告并以文本形式按需提供天气预报的天气通知程序;
- micron-blog 和 Any2MicronConverter — 博客生成器和 Markdown 到 Micron 标记的转换器;
- 基于 LXMF 的机器人和分类广告板,用于群组协调。
对于觉得控制台界面过于简陋的用户,作者开发了一个独立的 GUI 客户端 — Sideband。它适用于 Linux、macOS 和 Android。

注意事项和现实场景
不要以为 NomadNet 可以替代日常任务的常规网络。LoRa 等无线电频道的速度(每秒几百字节)有严格限制:无法传输高分辨率图像、视频或大型 JS 脚本。只能处理压缩文本、遥测数据和短消息。
此外,该项目处于测试状态。作者在描述中坦诚警告:代码尚未经过外部安全审计,因此在生命攸关的场景中使用需要谨慎。
谁会发现这个项目有用:
- 需要在没有蜂窝覆盖的偏远地区进行通信的徒步旅行者、探险爱好者和业余无线电操作员;
- 用于远程传感器轮询的物联网开发者和野外自动气象站建设者;
- 对去中心化协议和网状网络感兴趣、实验者热衷于摆脱对电信基础设施的依赖。
你可以通过 pip 安装软件包并连接到测试网络,在几分钟内体验这个项目。这是一个罕见的软件范例,它让早期网络的浪漫和对云巨头依赖的独立性重新回归。
相关项目