
网状是基于密码学的网络堆栈,用于构建具有可用硬件的本地和广阔网络网络。即使具有很高的延迟和极低的带宽也可以运行。网状允许您使用现成的工具构建广阔的区域网络,并提供端到端的加密和连接性,启动器匿名性,自动配置具有密码支持的多跳运输,高效的地址,不可遗忘的交付确认等。
网状的愿景是允许任何人成为自己的网络运营商,并使其廉价且易于使用无数独立,可连接和自动的网络覆盖广阔地区。网状不是一个网络。它是建立数千个网络的工具。没有杀戮转换,监视,审查和控制的网络。可以自由互操作,关联和分离的网络,并且不需要中央监督。人类的网络。人民的网络。
网状是一个完整的网络堆栈,不依赖于IP或更高层,而是可以将IP用作网状载体。因此,通过Internet或专用IP网络的网状网站是微不足道的。
对传统网络堆栈的不依赖性释放了上空开销,该堆栈被用来实现直接基于加密原理建立的网络堆栈,即使在开放且无信任的网络中也可以弹性和稳定的功能。
无需内核模块或驱动程序。网状在Userland中完全运行,并且几乎可以在运行Python 3的任何系统上运行。
网状文档的完整文档可在Markqvist.github.io/reticulum/manual/上找到。
您还可以将网状手册作为PDF或EPUB格式的电子书下载。
有关更多信息,请参阅Wiki的网络和FAQ部分。
尽管网状已经是一个完整的功能性网络堆栈,但正在积极进行许多改进和补充,并计划未来。
要了解有关网状的方向和未来的更多信息,请参阅开发路线图。
如果您想快速了解网状可以做什么,请查看以下资源。
实际上,任何介质都可以支持至少一个半双链通道,其吞吐量大于每秒5位,而MTU为500个字节。数据收音机,调制解调器,LORA收音机,串行线,AX.25 TNC,业余无线电数字模式,WiFi和以太网设备,自由空间光学链接以及类似的系统都是物理设备网状设备类型的示例。
一个名为RNode的开源洛拉界面是专门用于与网状使用的。可以自行建立自己,也可以作为完整的收发器购买,只需要与主机连接USB。
网状网络也可以通过现有的IP网络封装,因此没有什么可以阻止您在有线以太网,您的本地WiFi网络或Internet上使用它,在此也可以正常工作。实际上,网状的优势之一是,它可以使用任何可用的基础架构混合物轻松地将不同的介质连接到自我配置,弹性和加密的网格中。
例如,可以设置连接到Lora Radio,Packet Radio TNC和WiFi网络的Raspberry Pi。一旦配置了接口,网络将负责其余部分,并且WiFi网络上的任何设备都可以与网络的LORA和数据包无线电侧面的节点进行通信,反之亦然。
开始使用网络网络堆栈的最佳方法取决于您想做什么。有关完整的详细信息和示例,请查看网状手册的快速入门部分。
要简单地在系统上安装网状和相关的实用程序,最简单的方法是通过pip 。然后,您可以启动任何使用网状的程序,也可以使用RNSD实用程序开始网状作为系统服务。
pip install rns如果您使用的是通过pip封锁正常用户软件包安装的操作系统,则可以通过编辑~/.config/pip/pip.conf文件来返回pip到正常行为,并在[global]部分中添加以下指令:
[global]
break-system-packages = true
另外,您可以使用pipx工具在孤立的环境中安装网状:
pipx install rns刚开始时,网状会创建一个默认的配置文件,从而提供与可能在本地可访问的其他网状同行的基本连接。默认配置文件包含一些示例,以及创建更复杂配置的引用。
如果您的系统上有旧版本的pip版本,则可能需要首先使用pip install pip --upgrade升级它。如果尚未安装pip ,则可以使用系统的软件包管理器使用sudo apt install python3-pip或类似系统安装它。
有关如何使用UDP和TCP接口等许多媒体扩展诸如数据包无线电或快速IP链接以及Internet等许多媒体上的通信的详细示例,请查看网状手册的支持接口部分。
网状包括一系列有用的实用程序,用于管理网络,查看状态和信息以及其他任务。您可以在网状手册的“随附的公用事业计划”部分中阅读有关这些程序的更多信息。
rnsd作为始终可用的服务rnstatus ,显示有关接口的信息rnpath可让您查看和修改路径表rnprobe的诊断工具,用于检查与目的地的连接rncp的简单文件传输程序,使其易于在系统之间传输文件rnid让您管理身份和加密/解密文件rnx让我们运行命令和程序,然后从远程系统检索输出包括rnx和rncp在内的所有工具都可以在非常低的带宽链接(如Lora或Packet Radio)上可靠地工作。有关网状上功能全面的远程外壳,也可以查看RNSH程序。
网状实现了一系列广义界面类型,这些类型涵盖了网状可以运行的大多数通信硬件。如果不支持硬件,则实现自定义接口模块很容易。
请感激自定义接口的拉动请求,只要它们通常在现实世界中有用且经过良好的测试。
当前,支持以下内置接口:
网状具有非常广泛的可用性能包膜,但优先于低型带宽介质的功能和性能。目的是在普通硬件上提供一个动态性能信封,从每秒250位到每秒1千兆位。
目前,可用的性能包络线每秒约150位至40兆位,其物理介质比未饱和的速度快。超出当前水平的性能旨在将来升级,但在此时间点尚未得到高度优先级。
目前应将网状视为β软件。所有核心协议功能均已实现并运行,但是随着现实世界的使用探索,可能会发生添加。会有错误。目前可以将API和电线格式视为相对稳定,但是如果有必要,可以改变。
默认rns软件包的安装需要以下列出的依赖项。几乎所有的系统和分布都易于使用这些依赖项,并且在使用pip安装rns软件包时,也将下载并安装它们。
在更不寻常的系统,在某些极少数情况下,可能无法安装甚至编译上述模块。在这种情况下,您可以使用rnspure软件包,而RNSpure软件包无需安装外部依赖项。请注意, rns和rnspure软件包的内容是相同的。唯一的区别是rnspure软件包列出了安装不需要的依赖项。
无论是安装和启动的网状,它都只有在需要和可用时才加载外部依赖。例如,如果您想在无法支持培训的系统上使用网状,则使用rnspure软件包是完全有可能的,但是Enticulum将无法使用基于序列的接口。所有其他可用的模块仍将在需要时加载。
请注意!如果您使用rnspure软件包在不支持Pyca/Cryptography的系统上运行网状,那么您必须阅读和了解本文档的加密原语部分。
如果您只想在不建立任何物理网络的情况下开始进行实验,欢迎您加入RNS开发测试网。
测试网就是一个非正式的测试和实验网络。大多数情况下,这都会加入,任何人都可以加入,但这也意味着无法保证服务可用性。
它可能不用说,但是不要将TestNet入口点作为您运送给用户的任何应用程序中的硬编码或默认接口。当运输应用程序时,最好的做法是提供您自己的默认连接解决方案(如果需要和适用),或者在大多数情况下,只需将其保留给网络连接的用户以及如何连接。
TestNet运行了最新版本的网状版(甚至在公开发布之前就很短的时间)。有时,可能会将网状的实验版本部署到测试网上的节点上,这意味着可能会发生奇怪的行为。如果这些都不吓到您,则可以通过TCP或I2P加入TestNet。只需将以下接口之一添加到网状配置文件中:
# TCP/IP interface to the RNS Amsterdam Hub
[[RNS Testnet Amsterdam]]
type = TCPClientInterface
enabled = yes
target_host = amsterdam.connect.reticulum.network
target_port = 4965
# TCP/IP interface to the BetweenTheBorders Hub (community-provided)
[[RNS Testnet BetweenTheBorders]]
type = TCPClientInterface
enabled = yes
target_host = reticulum.betweentheborders.com
target_port = 4242
# Interface to Testnet I2P Hub
[[RNS Testnet I2P Hub]]
type = I2PInterface
enabled = yes
peers = g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq.b32.i2p
测试网还包含许多游牧网络节点和LXMF传播节点。
您可以通过以下一个渠道之一捐赠:
84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
0xFDabC71AC4c0C78C95aDDDe3B4FA19d6273c5E73
35G9uWVzrpJJibzUwpNUQGQNFzLirhrYAH
开发路线图中的某些功能对您或您的组织很重要吗?通过赞助他们的实施来迅速使他们成为现实。
网状使用一套简单的有效,强和经过良好测试的加密原始图,并具有广泛可用的实现,可以在通用CPU和微控制器上使用。使用的原始剂是:
在默认安装配置中,OpenSSL(通过PYCA/Cryptography软件包)提供了X25519 , Ed25519和AES-128-CBC原始图。 Hashing函数SHA-256和SHA-512由标准的Python Hashlib提供。 HKDF , HMAC , Token原始词和PKCS7填充功能始终由以下内部实现提供:
网状物还包括纯Python中所有必要原语的完整实现。如果在启动网状时,系统上没有OpenSSL&Pyca,则网状会使用内部纯Python原语。这种琐碎的后果是性能,OpenSSL后端更快。然而,最重要的结果是,使用原始词可能没有看到与OpenSSL相同数量的审查,测试和审查的原始损失。
如果您想使用内部纯净的python原语,强烈建议您很好地了解这种构成的风险,并就这些风险是否可以接受,做出明智的决定。
网状是相对年轻的软件,应视为这样。尽管它是用密码学最佳实践来构建的,但最重要的是,它尚未经过外部安全审核,而且很可能存在隐私或安全破坏错误。如果您想提供帮助,或帮助赞助审核,请联系。
网状会仅是因为它建立在基础上的开源工作,参与其中的每个人的贡献以及多年来支持该项目的每个人的贡献之上才能存在。对于所有帮助的人,非常感谢。
许多其他模块和项目是网状的一部分或使用。衷心感谢以下项目的作者和贡献者: