- Nomad Network は、登録、利用規約、データ提出、権限承認者なしに、ユーザー自身が所有・制御するプライベートで弾力性のある通信プラットフォームを構築するためのオフグリッドメッシュ通信ツール
- 基盤は LXMF と Reticulum で、暗号化メッセージネットワーク機能と P2P メッセージルーティングを提供し、パケットラジオから光ファイバーまでさまざまな通信媒体で動作
- 公衆インターネット、IP、Ethernet なしでも利用でき、packet radio、LoRa、serial line 上で運用可能であり、Reticulum により 300bps の無線リンクでも使われた実績がある
- 機能には、暗号化メッセージング、ゼロ設定メッシュ通信、オフラインユーザー向けの分散暗号化メッセージストア、ページ・ファイルホスティングノード、テキストベースブラウザ、ページキャッシュが含まれる
- 現在は ベータソフトウェア であり、暗号化のベストプラクティスを念頭に作られているが、外部セキュリティ監査は受けておらず、プライバシーを損なうバグが存在する可能性がある
Nomad Network が提供する通信モデル
- Nomad Network は、ユーザーが完全に制御・所有するプライベートで弾力性のある通信プラットフォームを構築できるようにする
- 登録、利用規約への同意、データ提出、権限承認者やゲートキーパーは不要
- リポジトリは公開ミラーであり、実際の開発は別の場所で進められている
- グラフィカルユーザーインターフェース付きの LXMF クライアントが必要なら、Linux、Android、macOS 向けの Sideband を利用できる
基盤技術とネットワーク媒体
- Nomad Network は LXMF と Reticulum の上に構築されている
- この 2 つのプロジェクトは、Nomad Network が依存する 暗号化メッセージネットワーク機能 と P2P メッセージルーティング を提供する
- この基盤により、パケットラジオから光ファイバーまで非常に幅広い通信媒体でプログラムを利用できる
- 公衆インターネット接続がなくても動作し、IP や Ethernet ネットワークも必須ではない
- packet radio、LoRa、serial line だけで利用できる
- 必要に応じて、分離されたネットワークをインターネットやプライベート Ethernet にブリッジできる
- 完全にインターネット上だけで動作するネットワークを構築することも可能
- Reticulum を使っているため、非常に低帯域の媒体でも効率的で、300bps の無線リンク で成功裏に利用されたことがある
主な機能
- Reticulum がサポートする packet radio、LoRa、WiFi などで 暗号化メッセージング を提供
- ゼロ設定 と最小限のインフラに基づくメッシュ通信をサポート
- オフラインユーザー向けにメッセージを保持する 分散暗号化メッセージストア がある
- 接続可能なノードはページやファイルをホストできる
- ノード側で PHP、Python、bash などを使ってページを生成できる
- ノード上のコンテンツと対話するための テキストベースブラウザ が組み込まれている
- ページ作成向けに、使いやすく帯域効率の高いマークアップ言語を提供
- ブラウザでページキャッシュをサポート
インストールと実行
pip install nomadnet
nomadnet
nomadnet --daemon
nomadnet --help
- 一般ユーザー向けパッケージのインストールをブロックする OS では、
~/.config/pip/pip.conf の [global] セクションに次の設定を追加して pip の動作を元に戻せる
[global]
break-system-packages = true
- 分離された環境にインストールするには
pipx を使える
pipx install nomadnet
pipx install rns
pipx install lxmf
nomadnet
nomadnet --daemon
nomadnet --help
- システムで初めて
pip でプログラムをインストールした場合、実行コマンドが認識されなければ、システムを再起動してから再度試す必要があるかもしれない
- プログラムを初めて起動すると、利用開始に必要な情報を含む Guide section が表示される
packet radio、LoRa、テストネットの利用
- packet radio または LoRa で Nomad Network を使うには、Reticulum のインストールを関連する packet radio TNC または LoRa デバイスを使うよう設定する必要がある
- 物理ネットワークを自分で構築せずに試したい場合は、インターネット経由で Unsigned.io RNS Testnet に接続できる
- テストネットにはすでに一部の Nomad Network および LXMF の活動がある
- 接続後、
nomadnet をしばらく実行しておくと、ページやサービスをホストしている他ノードの announce を受け取れる
- 直接接続を試せるテストネットノード:
abb3ebcd03cb2388a838e70c001291f9: Dublin Hub Testnet Node
ea6a715f814bdc37e56f80c34da6ad51: Frankfurt Hub Testnet Node
- まだ知られていないノードのページを探索するには、プログラムの
Network セクションで Ctrl+U を押して URL ダイアログを開き、アドレスを入力して Go を選ぶか Enter を押せばよい
- NomadNet は要求されたノードを発見し、接続を試みる
Android と Docker
- Android では Termux を使って Nomad Network をインストールできるが、一般的な 1 行インストールよりも多くのコマンドが必要
- 手順は Reticulum Manual の Android Installation に文書化されている
- Reticulum のインストール後は
pip で Nomad Network をインストールできる
- ネイティブ Android グラフィカルアプリが必要なら Sideband を利用できる
- Nomad Network は GitHub Packages に Docker イメージとして自動公開される
- イメージタグは最新コミット向けの
master、または特定リリースのバージョン番号形式
- バージョンタグの例は
0.2.0
docker pull ghcr.io/markqvist/nomadnet:master
docker run -it ghcr.io/markqvist/nomadnet:master --textui
docker run -i ghcr.io/markqvist/nomadnet:master --daemon --console
ツール、拡張、ロードマップ
- Nomad Network は柔軟で拡張可能なプラットフォームであり、コミュニティ提供のツールやノード側拡張がある
- サポート要請、議論、アイデア共有は Nomad Network discussions pages で行える
- 開発ロードマップの新たな主要機能には、ネットワーク全体に伝播する bulletin と discussion thread、共同編集マップや地理空間情報の共有が含まれる
- 改善・修正項目には、リンク状態表示、メニュー移動ショートカット、ノード共有、一部 OS における内部エディタの問題修正、失敗メッセージの再試行メカニズムなどが含まれる
セキュリティ状態と注意点
- Nomad Network は ベータソフトウェア と見なすべき
- 暗号化のベストプラクティスを最優先して作られているが、外部セキュリティ監査は受けていない
- プライバシーを損なうバグが存在する可能性がある
- 監査への協力やスポンサーを希望する場合は連絡してほしいとの案内がある
1件のコメント
Hacker Newsの意見
NextNavが900MHz ISM帯域の大部分を持っていくなら、そうならないかもしれない: https://news.ycombinator.com/item?id=41226802
https://en.wikipedia.org/wiki/ISM_radio_band
ここで意見を投稿できる: https://www.fcc.gov/ecfs/search/docket-detail/24-240
関連して進行中のスレッドがある:
Private, Secure and Uncensorable Messaging over a LoRa Mesh (2022) - https://news.ycombinator.com/item?id=41256623 - 2024年8月、コメント21件
これが使っている基盤のReticulumネットワークは、パケットラジオのような伝送媒体を多くサポートしていてかなり興味深い
Reticulumは、毎秒5ビット以上のスループットと500バイトのMDUさえあれば、どんな媒体でも動作できる。LoRa、BLE、パケットラジオ、TorやI2Pのようなオーバーレイネットワークなど、何百ものキャリア上で動作するだけでなく、これらのキャリアが同じネットワークの一部になることもできる
HFラジオ上で動作する高速な概念実証を作ってみた。約144km離れた2つのノードを構成し、どちらも ICOM-7300 と Raspberry Pi 5 を使って、Reticulumパケットを受信して無線で送信するソフトウェアモデムを動かした: https://www.youtube.com/watch?v=blwNVumLujc
ノード1は屋外にあり、ノード2は家にあった。ノード2には、HFモデム用のインターフェース1つとTCPテストネットに接続された別のインターフェース1つを構成していたため、ノード1はTCPテストネット上のすべてのピアにアクセスできた
Reticulumの基本概念を説明する短い入門動画もある: https://www.youtube.com/watch?v=q8ltLt5SK6A
修正: そうではなかった。リンクごとの設定ではなく、グローバルレベルで設定されるようだ
概念は興味深いが、iOS/iPadOSデバイスを使う人たちと通信するのが問題だ。通常はOSの制限のためこうしたアプリを使えず[1]、ネットワーク効果のせいで大半の人にとって使うのが非常に難しくなる
[1] https://forums.developer.apple.com/forums/thread/685525
もちろんバックグラウンド実行には問題があるが、ReticulumをRNode上で完全に動かすといった実現可能な解決策があり、ある程度活発に作業が進んでいる
AndroidやiOSデバイスのタッチスクリーンキーボードで入力しながら、プライバシーが確保されていると感じるのは理解できない
本当のプライバシーを求めるなら、テキストの取得と表示、暗号化、暗号化されたパケット送信のために、ベアメタルコードで動作するキーボード/ターミナルを使い、Reticulumクライアントの上で暗号化されたブロブを送る形にすべきだ
例えば有線シリアルやBluetoothでもよく、別個のMCUでネットワーキングとプロトコルを処理することもできる。要点は、バイナリブロブのない検証済みコードをベアメタルで実行し、暗号化されたペイロードだけをネットワークノードへ送ることだ。可能なら、ターミナルコントローラとネットワークコントローラの間にはTTLシリアルリンクが望ましい
NomadNet/Reticulumが Yggdrasil, IPFS, Nostr, Scuttlebutt とどう比較されるのか気になる
Scuttlebutt: Reticulumはリアルタイムでデータをルーティングするネットワークスタックであり、分散型ソーシャルネットワークではない
Nostr: Scuttlebuttと同じ
IPFS: Reticulumはデータを転送するのであって保存はしない。ただし、LXMFのようにReticulum上で動作する一部のプロトコルは、一時的なメッセージ保存機能をオプションで提供している
Yggdrasilは挙げられた中ではReticulumに最も近い類例だが、ざっと調べた限りでは動作方式の詳細情報を見つけられなかった。現状ではIPv4トンネルをある程度使う形でIPv6上でのみ動作しているように見えるが、Reticulumはその違いとして、何の上でも動作する
興味があるなら、Reticulumがどう動作するのかを見るために少なくとも http://reticulum.network/manual/understanding.html は読むことを勧める
ざっと見ただけの、もしかするとよく分かっていない状態での ユーザビリティ メモ
身元アドレスとして使われる数字を、ユーザーが意味を理解できる形で先頭に表示している点は多くのものより優れている。その身元と信頼を会話ボックスで一緒に扱う方法も比較的分かりやすそうだ。信頼済み/信頼しない(不明)以外のカテゴリがあるのは良い考えだが、すぐには理解できない。ユーザーにはこの文脈で "trust" が正確に何を意味するのかを教える必要がある
ユーザーはCurve25519を使っている事実まで知る必要はなく、何らかの形で暗号化が成立していることだけ分かればよい
身元番号を16進数で表示するのは、あり得る基数の中でも最悪だ。識別用としては見慣れた10進数か、より短いbase32のほうがよく、身元番号は役に立つグループ化方式で一貫して表示すべきだ。たとえば5桁ずつ4グループのようにする
これを読んでとても興奮している。オフグリッド メッシュネットワーク の構築は、私のSF小説『Mesh』の中心的な前提だ: https://inkican.com/mesh-middle-grade-scifi-thriller/
Meshtasticを思い出すが、NomadはPC向けで、Meshtasticは マイクロコントローラ 向けのようだ
https://meshtastic.org/
探してみたが見つけられない。これは 監査 を受けたことがあるのか?