「GNUnet」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) |
|||
(4人の利用者による、間の13版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:匿名ネットワーク]] |
− | [[Category: |
+ | [[Category:ファイル共有]] |
+ | [[Category:仮想プライベートネットワーク]] |
||
[[en:GNUnet]] |
[[en:GNUnet]] |
||
+ | [[es:GNUnet]] |
||
+ | [[ru:GNUnet]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Tor}} |
{{Related|Tor}} |
||
+ | {{Related|I2P}} |
||
+ | {{Related|Freenet}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
[https://gnunet.org/ GNUnet] は中央サーバーや信頼機関を使わないセキュアなピアツーピアネットワークを提供するフレームワークです。現在、フレームワークを使って実装されたサービスとして検閲を免れるファイル共有があります。 |
[https://gnunet.org/ GNUnet] は中央サーバーや信頼機関を使わないセキュアなピアツーピアネットワークを提供するフレームワークです。現在、フレームワークを使って実装されたサービスとして検閲を免れるファイル共有があります。 |
||
− | [[Wikipedia:ja: |
+ | [[Wikipedia:ja:GNUnet]] も参照してください。 |
== インストール == |
== インストール == |
||
− | GNUnet は |
+ | GNUnet は {{AUR|gnunet}} パッケージで[[pacman|インストール]]できます。グラフィカルインターフェイスも使いたい場合は {{AUR|gnunet-gtk}} をインストールしてください。 |
+ | |||
+ | もしくは、最新の git バージョンを {{AUR|gnunet-git}} と {{AUR|gnunet-gtk-git}} パッケージでインストールすることもできます。 |
||
== 設定 == |
== 設定 == |
||
+ | {{ic|gnunet}} サービスを[[起動]]・[[有効化]]してください。 |
||
− | [https://gnunet.org/how-start-and-stop-gnunet-peer How to start and stop a GNUnet peer] を見て下さい。 |
||
+ | |||
+ | もしくは、ターミナルからピアを今すぐ起動するには: |
||
+ | # gnunet-arm -s |
||
+ | |||
+ | [https://gnunet.org/how-start-and-stop-gnunet-peer How to start and stop a GNUnet peer] も参照してください。 |
||
== 使用方法 == |
== 使用方法 == |
||
− | === |
+ | === GNUnet ネットワークへの参入 === |
+ | {{ic|gnunet}} システムサービスを [[起動]]、場合によっては [[有効化]] します。一部の操作では、{{ic|gnunet}} ユーザーサービスも開始する必要があります。 |
||
− | gnunet-gtk を使ってファイルをダウンロードするには、'Filesystem' タブでファイルを検索します。欲しいファイルを見つけたら、他の P2P ファイル共有プログラムと同じようにダウンロードしてください。以下のコマンドで起動します: |
||
+ | === ネットワークを確認する === |
||
− | # gnunet-arm -s |
||
+ | |||
− | # gnunet-fs-gtk |
||
+ | 通常のユーザーとして {{ic|gnunet-peerinfo}} コマンドを起動することで、ネットワークの現在の状態を確認できます。 |
||
+ | |||
+ | $ gnunet-peerinfo |
||
+ | |||
+ | ピア ID の起動を確認するには: |
||
+ | |||
+ | $ gnunet-peerinfo -s |
||
+ | |||
+ | 直接接続しているピア (これらを "neighbours" と呼びます) を一覧表示するには、次のコマンドを実行します。 |
||
+ | |||
+ | $ gnunet-core |
||
+ | |||
+ | === ファイル共有 === |
||
+ | |||
+ | デフォルトでは、ファイル共有サービスは ''ユーザーごと'' に実行されます。つまり、'''システムとユーザーの両方の {{ic|gnunet}} サービス''' を [[起動]] する必要があります。このオプションを変更して ''マシンごと'' にファイル共有を実行したい場合は、それに応じて {{ic|/etc/gnunet.conf}} を編集します。 |
||
+ | |||
+ | [fs] |
||
+ | ... |
||
+ | RUN_PER_USER = NO |
||
+ | ... |
||
+ | UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-fs.sock |
||
+ | ... |
||
+ | |||
+ | ==== ファイルを検索する ==== |
||
+ | |||
+ | {{ic|gnunet-search}} を使用して、キーワード (これらは必ずしもファイル名に関連しているわけではありません) を使用してファイルを検索します。たとえば、"commons" キーワードでインデックス付けされたファイルを検索するには、次のコマンドを起動します。 |
||
+ | |||
+ | $ gnunet-search --timeout='10 s' 'commons' |
||
+ | |||
+ | タイムアウトを指定しないと (上記の例では 10 秒)、{{ic|gnunet-search}} は永久に実行され、ユーザーが CTRL-C を押すのを待ちます。 |
||
+ | |||
+ | {{ic|gnunet-search}} コマンドには、印刷出力を操作するための {{ic|--printf}} オプションがあります。これは、[[find|{{ ic|find}}]] ユーティリティです。詳細については、{{ic|man gnunet-search}} と入力してください。 |
||
+ | |||
+ | ===== 検索結果を "GNUnet ディレクトリ" として保存する ===== |
||
+ | |||
+ | {{ic|gnunet-search}} の {{ic|-o}} オプションを使用して、検索結果を "GNUnet ディレクトリ" ({{ic|.gnd}} ファイル) として保存します。この場合、出力は印刷されます ({{ic|-s}} オプション) |
||
+ | |||
+ | たとえば、3 秒間検索し、"commons" キーワードによって得られた結果を {{ic|three-seconds-commons.gnd}} という名前のファイルに保存するには、次のように起動します。 |
||
+ | |||
+ | $ gnunet-search -s -t 3s -o three-seconds-commons.gnd 'commons' |
||
+ | |||
+ | 後で {{ic|three-seconds-commons.gnd}} の内容を検査したい場合は、次のコマンドを起動できます。 |
||
+ | |||
+ | $ gnunet-directory three-seconds-commons.gnd |
||
+ | |||
+ | ==== ダウンロード ==== |
||
+ | |||
+ | {{ic|gnunet-search}} の出力は、デフォルトでは、通常のユーザーとして直接コピーして起動できる {{ic|gnunet-download}} コマンドのリストです。 |
||
+ | |||
+ | たとえば、{{ic|gnunet-search 'commons'}} によって生成された出力を使用すると、 |
||
+ | |||
+ | {{hc|$ gnunet-search 'commons'| |
||
+ | #1: |
||
+ | gnunet-download -o "Liotard (2017)_ Fablab - a new space for commons based peer production.pdf" gnunet://fs/chk/C6369DRQ3S8RYK1FD5VDE666W2HVEJ5G5GJRX29BH6ZM08CBRWS7FY9326RBJ4G0N8V1RJ2N802KBYZT7RJT2EDK1J9JR2DXK5MTVM0.4SXJCK9NT5XGCZ0YAJ0ETXJJGY3P2SMNZ0Q94N775YEX9SXS2RW5FWRFK4GMBTP668Z3R8QZZ4WSHW1KG1AVQ5VFC1VF5T3WF57GT58.336423 |
||
+ | |||
+ | #2: |
||
+ | gnunet-download -o "Rose, Carol (1986)_ The Comedy of the Commons_ Commerce, Custom, and inherently Public Property.pdf" gnunet://fs/chk/TQK3A2C279EJQ50B1TQWFNTPMGQZJJ4JXYTF2D88D03H038TB7SVVSRBT74FMYPNZ47YZSV096PVVZH0TQ3B8KBVBV2H8GN9VAASTJR.CQ7M7843MGPZCV8M26NKH6EB5MBGZAXRWCF39YS668WM6F22D214GSXNTJ4RYGE7XF68VPZM4C19XR48TT4J8WH8S2E00C96Q8K6790.1593230 |
||
+ | |||
+ | #3: |
||
+ | gnunet-download -o "Hardin, Garett (1968)_ Tragedy of the Commons.pdf" gnunet://fs/chk/Y1FD7D123CEGWDW544YDEP15YA5E7ZD2XRSJBNP0847A5JXMMZEZ0XACGRG42BBBTGKZ0ZCBW0A9T6196Z5N26HA6SP1T8GDAT5H5SG.RN38G25DMYG3TBQJEGWDZT2B84N1JYYJZ8VRJ8HG2G1A4EFD4GH5TZXB0RXV7QEMZBSKWCCEF736FXNH6C5BYKG9DSTV99ETFGC93R0.1520328 |
||
+ | |||
+ | ...}} |
||
+ | |||
+ | 起動して、 |
||
+ | |||
+ | {{bc|$ gnunet-download -o "Hardin, Garett (1968)_ Tragedy of the Commons.pdf" gnunet://fs/chk/Y1FD7D123CEGWDW544YDEP15YA5E7ZD2XRSJBNP0847A5JXMMZEZ0XACGRG42BBBTGKZ0ZCBW0A9T6196Z5N26HA6SP1T8GDAT5H5SG.RN38G25DMYG3TBQJEGWDZT2B84N1JYYJZ8VRJ8HG2G1A4EFD4GH5TZXB0RXV7QEMZBSKWCCEF736FXNH6C5BYKG9DSTV99ETFGC93R0.1520328}} |
||
+ | |||
+ | これにより、現在のディレクトリに {{ic|Hardin, Garett (1968)_ Tragedy of the Commons.pdf}} がダウンロードされます。 |
||
+ | |||
+ | ===== リモート GNUnet ディレクトリをダウンロードせずにマウントする ===== |
||
+ | |||
+ | {{AUR|gnunet-fuse}} という名前のモジュールは、GNUnet ネットワークからリモート ディレクトリをマウントするために開発されました。{{ic|gnunet-fuse}} を使用すると、GNUnet ネットワーク上に公開されたディレクトリを読み取り専用ファイルシステムとしてマウントし、通常のファイル操作を使用してアクセスできます。{{ic|gnunet-download}} を介してディレクトリを再帰的にダウンロードするのとは対照的に、これにはファイルがオンデマンドでダウンロードされるという利点があります。アクセスしたファイル (またはディレクトリ) のみがダウンロードされます。詳細については、モジュールをインストールし、"{{ic|man gnunet-fuse}}" と入力してください。 |
||
+ | |||
+ | ==== アップロード ==== |
||
+ | |||
+ | GNUnet ファイル共有ネットワーク上でファイルを公開するには、後で他の人がファイルを検索するために使用できるキーワードを選択する必要があります。 |
||
+ | |||
+ | キーワードは厳密には必須ではありませんが、推奨されます。これは、GNUnet ではファイル名ではなくキーワードによる検索が許可されているためです。GNUnet の依存関係である {{Pkg|libextractor}} ライブラリは、ファイルからキーワードを自動的に抽出できますが、独自のキーワードを入力することもできます。 |
||
+ | |||
+ | 次の例では、キーワード "commons" と "state" を使用して、{{ic|ostrom.pdf}} という名前のファイルを公開します。 |
||
+ | |||
+ | {{hc|$ gnunet-publish -k 'commons' -k 'state' ostrom.pdf| |
||
+ | Publishing `/srv/filesharing/gnunet/ostrom.pdf' done. |
||
+ | URI is `gnunet://fs/chk/M57S... |
||
+ | }} |
||
+ | |||
+ | GNUnet ユーザーは、{{ic|gnunet-search}} コマンドを使用してファイルを検索できるようになりました。 |
||
+ | |||
+ | {{hc|$ gnunet-search 'commons'| |
||
+ | #1: |
||
+ | gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57S... |
||
+ | }} |
||
+ | |||
+ | 現在公開されているすべてのファイルをリストするには、{{ic|gnunet-fs -i}} を起動します。後でファイルの共有を停止したい場合は、{{ic|gnunet-unindex ''filename''}} を使用できます (この例では、{{ic|gnunet-unindex 'ostrom.pdf'}}) |
||
+ | |||
+ | ファイルが公開されると、ファイルのインデックスに使用されたキーワードを取得することはできません (つまり、逆検索) ただし、さらにキーワードを追加することはいつでも可能です。 |
||
+ | |||
+ | 新しくアップロードされたファイルがピアに表示されるまでには、しばらく時間がかかる (最大で数時間) 場合があることに注意してください。 |
||
+ | |||
+ | {{Warning|ファイルを非公開にしても、現在のマシンによるファイルの共有が停止されるだけで、GNUnet ネットワークからファイルが消去されることはありません。これは設計上不可能です。他の人がファイルをダウンロードして自分で共有している可能性があるためです。必ず、{{ic|gnunet-publish}} は '''取り消しできないアクション''' であると考えてください。}} |
||
+ | |||
+ | {{ic|gnunet-publish}} コマンドには、インデックスを付けずにファイルを公開するためのオプション {{ic|-n}} または同等の {{ic|--noindex}} が用意されています。使用すると、GNUnet は完全な挿入を実行し、ファイル全体を暗号化された形式で GNUnet データベースに保存します。 |
||
+ | |||
+ | このオプションは、検閲が厳しい国で検閲されたファイルの場合に、GNUnet を実行しているコンピュータに物理的にアクセスした人が現在公開されているファイルを知ることを回避する目的で作成されました。{{ic|--noindex}} オプションを使用して公開されたファイルは、ネットワークからダウンロードされたチャンクとして表示されるため、非公開またはインデックス付けを解除することはできません (そもそもインデックス付けされていません)。ただし、公開中にコンテンツの優先順位を低く指定し ({{ic|--prio}})、データベースがいっぱいになったときに公開されるコンテンツが簡単に失われてもよいことを GNUnet に伝えることは常に可能です。 |
||
+ | |||
+ | 詳細については、[https://docs.gnunet.org/handbook/gnunet.html#File_002dsharing the chapter on file-sharing in the handbook] を参照してください。https://gnunet.org/en/use.html#filesharing も参照してください。 |
||
+ | |||
+ | ===== インデックス付きファイルの変更と削除 ===== |
||
+ | |||
+ | * ファイルを変更すると、ファイルのURIが変わります。したがって、GNUnet はこれをまったく別のファイルと見なし、インデックス付きファイルは見つからないとみなします。したがって、最初に元のファイルのインデックスが解除されていることを確認し ({{ic|gnunet-unindex}} コマンドを使用)、ファイルを変更してから、新しいファイルにインデックスを付けて、ネットワーク経由でアクセスできるようにします。 |
||
+ | * ファイルシステムからファイルを削除する場合は、まずそのファイルのインデックスを解除する必要があります。 |
||
+ | * 公開されたファイルを多かれ少なかれ頻繁に更新する必要があることが事前にわかっている場合は、[[GNUnet#更新可能なファイルの公開]] を参照してください。 |
||
+ | |||
+ | ==== ダウンロード + 共有 ==== |
||
+ | |||
+ | GNUnet ファイル共有ネットワークは DHT です ([[Wikipedia:ja:分散ハッシュテーブル]] を参照) DHT のピアとして、ユーザーはさまざまなファイルのチャンクをディスク上に保存します。これは、''ダウンロードしていないファイルやダウンロードしたファイルであっても'' です。どのファイルが保存されるかは、DHT 距離メトリック/アルゴリズムによって異なります。 |
||
+ | |||
+ | 技術的には、ファイルが完全にダウンロードされていない限り、ファイルの一部のみが保存されます。これらはキャッシュ (通常は {{ic|/var/lib/gnunet/.local/share/gnunet}} の下) に保存されます。DHT クエリがキャッシュされた部分の 1 つについてピアに到達すると、ピアはそれを提供します。ファイル共有ブロックの保存に使用されるデータベースは有限 (構成可能なクォータ以下) に保たれ、すべてのキャッシュされた部分は期限切れになり、新しいファイル用のスペースを確保できます。 |
||
+ | |||
+ | 誰かが GNUnet ネットワークでファイルを共有すると、そのファイルの分散チャンクはネットワークのキャッシュにしばらく残り、ファイルを共有した人がオフラインになってもファイルは利用可能なままになります。しかし、元の発行者が行方不明になり、他の誰もファイルを ''明示的に'' ({{ic|gnunet-publish}} を使用して) 共有しなかった場合、ピアのキャッシュが期限切れになるか、ピアがオフラインになると、そのファイルは最終的に利用できなくなります。 |
||
+ | |||
+ | ファイルが GNUnet ネットワークに確実に残るようにする唯一の方法は、ファイルをダウンロードした後に ({{ic|gnunet-publish}} を使用して) 明示的に再公開し、ファイルを公開するマシンが定期的にネットワークにアクセスできるようにすることです。 |
||
+ | |||
+ | ダウンロード後にファイルを公開すると、再公開用に選択されたキーワードに関係なく、ファイルがダウンロードされたときと同じ URI (以下の例では {{ic|gnunet://fs/chk/Y1FD...}}) が常に生成されます。 |
||
+ | |||
+ | {{hc|$ gnunet-download -o 'Hardin, Garett (1968)_ Tragedy of the Commons.pdf' gnunet://fs/chk/Y1FD...|2= |
||
+ | 100% [============================================================] |
||
+ | Downloading `Hardin, Garett (1968)_ Tragedy of the Commons.pdf' done (160 b/s). |
||
+ | }} |
||
+ | |||
+ | {{hc|$ gnunet-publish -k 'tragedy' 'Hardin, Garett (1968)_ Tragedy of the Commons.pdf'|2= |
||
+ | Publishing `/srv/filesharing/gnunet/Hardin, Garett (1968)_ Tragedy of the Commons.pdf' done. |
||
+ | URI is `gnunet://fs/chk/Y1FD... |
||
+ | }} |
||
+ | |||
+ | === VPN === |
||
+ | |||
+ | GNUnet は VPN を提供しており、これを使用してインターネット接続を共有したり (これは Tor 出口ノードを実行するのと同じように危険な可能性があります)、ホスト上のサービスへのアクセスを提供したりできます (これらのサービスは安全です) |
||
+ | |||
+ | GNUnet で VPN をセットアップする方法については、https://gnunet.org/en/use.html#vpn を参照してください。 |
||
+ | |||
+ | === GNU ネームサービス (GNS) === |
||
+ | |||
+ | GNU ネーム サービス (GNS) は、[[ドメイン名前解決]] (DNS) に代わる完全に分散化された代替手段であり、後者と同じ重大なセキュリティ上の欠陥に悩まされることはありません ([https://en.wikipedia.org/wiki/Domain_Name_System#Security_issues セキュリティの問題] を参照) |
||
+ | |||
+ | GNS の使用方法については、https://gnunet.org/en/use.html#gns_cli および https://gnunet.org/en/use.html#gns_browser を参照してください。 |
||
+ | |||
+ | === 他の GNUnet ユーザーとチャットする === |
||
+ | |||
+ | GNUnet ユーザーとチャットするには、{{ic|gnunet-messenger}} ユーティリティを使用できます。"これには、{{ic|gnunet.service}} [[ユーザーユニット]] を [[起動]] する必要があります" (おそらく、{{ic|gnunet.service}} システムユニットと一緒に – [[GNUnet#マルチユーザー設定で現在のユーザーとしてデーモンを起動する|マルチユーザー設定で現在のユーザーとしてデーモンを起動する]] を参照してください) たとえば、"アリス" というニックネームを使用して "miscellanea" ルームに入るには、 |
||
+ | |||
+ | {{hc|$ gnunet-messenger -e alice -r miscellanea| |
||
+ | * Welcome to the messenger, 'alice'! |
||
+ | * You try to open a room... |
||
+ | * You joined the room. |
||
+ | [EHDA8T] * 'anonymous' opened the room on: 2ABN944E16FTWFMOKTMQ5JMPQ233YSPBKC47XR2DHSPQCQ8GYK80 |
||
+ | [EHDA8T] * 'anonymous' gets renamed to 'alice' |
||
+ | █ |
||
+ | }} |
||
+ | |||
+ | == アプリのエコシステム == |
||
+ | |||
+ | === GNUnet GTK === |
||
+ | |||
+ | GNUnet GTK は、GNUnet フレームワーク用のグラフィカルインターフェイスのコレクションです。以下の [[GTK]] アプリケーションが同梱されています。 |
||
+ | |||
+ | * {{ic|gnunet-conversation-gtk}} |
||
+ | * {{ic|gnunet-fs-gtk}} |
||
+ | * {{ic|gnunet-namestore-gtk}} |
||
+ | * {{ic|gnunet-peerinfo-gtk}} |
||
+ | * {{ic|gnunet-setup}} |
||
+ | * {{ic|gnunet-statistics-gtk}} |
||
+ | |||
+ | GNUnet GTK をインストールするには、{{AUR|gnunet-gtk}} パッケージをダウンロードします。 |
||
+ | |||
+ | === GTK メッセンジャー === |
||
+ | |||
+ | 現在、GNUnet ネットワーク上でチャットするためのいくつかのグラフィカルユーザーインターフェイスが開発されています。そのうちの 1 つは、モバイル対応の [[GTK]] である '''Messenger GTK''' ({{AUR|messenger-gtk}}、または開発バージョンの場合は {{AUR|messenger-gtk-git}}) です。コマンドラインを介したチャットについては、'''Messenger CLI''' (開発バージョンの場合は {{AUR|messenger-cli}} または {{AUR|messenger-cli-git}}) を参照してください。 |
||
+ | |||
+ | === Web ユーザーインターフェース === |
||
+ | |||
+ | GNUnet の Web インターフェースが存在し、{{AUR|gnunet-webui-git}} として入手できます。 |
||
+ | |||
+ | === re:claimID === |
||
+ | |||
+ | [https://gnunet.org/en/reclaim/index.html re:claimID] は、GNU ネーム システム上に構築された分散型アイデンティティプロバイダー (IdP) サービスです。これにより、ユーザーは標準化されたプロトコル (OpenID Connect) を使用して Web サイトと個人情報を安全に共有できます。 |
||
+ | |||
+ | ユーザー向けに ''re:claimID'' は [https://addons.mozilla.org/addon/reclaimid/ Firefox の拡張機能] と [https://chrome.google.com/webstore/detail/reclaimid/jiogompmdejcnacmlnjhnaicgkefcfll 拡張機能] を提供します。 Chromium の拡張機能] Web ブラウザで ''re:claimID'' ID を管理するための拡張機能 ({{AUR|gnunet}} パッケージをインストールする必要があります) |
||
+ | |||
+ | 拡張機能をインストールした後、https://ui.reclaim/ にアクセスして、ローカルの ''re:claimID'' インスタンスに新しい ID を追加し、それにいくつかの属性を追加できるようになります (拡張機能がないとリンクは機能しません) インストールされています。 |
||
+ | |||
+ | 詳細については、[https://gnunet.org/en/reclaim/users.html マニュアル] を参照してください。 |
||
+ | |||
+ | === GNU Taler === |
||
+ | |||
+ | GNU Taler は、GNUnet 上に構築されたマイクロトランザクションおよび電子決済システムです。他の分散型決済システムとは異なり、Taler はブロックチェーンに基づいておらず、代わりにブラインド署名に基づいています。 |
||
+ | |||
+ | 詳細については、[https://taler.net/en/docs.html 公式ドキュメント] を参照してください。パッケージ {{AUR|sync}}、{{AUR|taler-exchange}}、{{AUR|taler-mdb}}、{{AUR|taler-merchant}}、および {{AUR|taler-twister}} も参照してください。 |
||
+ | |||
+ | === GNU Anastasis === |
||
+ | |||
+ | [https://www.gnu.org/software/anastasis/GNU Anastasis] は、ユーザーがオープンセットのエスクロープロバイダーにコア シークレットを安全に預け、元のコピーが失われた場合にこれらのシークレットを回復できるようにするプロトコルと実装です。Anastasis は AUR ({{AUR|anastasis}} および {{AUR|anastasis-gtk}}) で利用できます。詳細については、https://www.gnu.org/software/anastasis/ および https://anastasis.lu/ を参照してください。 |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === GNUnet がファイルの公開に失敗する === |
||
+ | |||
+ | GNUnet サービスの仕組みを理解していない人にありがちな間違いは、現在のユーザーに対してファイル共有サービスが実行されていないときに、ホームディレクトリ (またはそのサブディレクトリ) にあるファイルを公開しようとすることです。問題は、{{ic|gnunet}} システムユーザー (GNUnet システムサービスを実行する) が通常、他のユーザーのホーム ディレクトリにアクセスできないことです。 |
||
+ | |||
+ | 簡単な解決策は、{{ic|gnunet}} グループに属するユーザーのみが書き込み権限を持つ共有ディレクトリを作成し、それを使用して公開するファイルを配置することです。たとえば、{{ic|/srv/filesharing/gnunet}} が適切な選択となる可能性があります。 |
||
+ | |||
+ | # install -dm775 -g gnunet -o gnunet /srv/filesharing/gnunet |
||
+ | |||
+ | {{ic|gnunet}} グループに属する各ユーザーは、ホームディレクトリにそのグループへのリンクを作成できます。 |
||
+ | |||
+ | $ ln -s /srv/filesharing/gnunet ~/Publishing |
||
+ | |||
+ | これは {{ic|gnunet-publish}} によって逆参照できます。 |
||
+ | |||
+ | {{hc|1=$ (cd ~/Publishing && gnunet-publish -k commons ostrom.pdf) && gnunet-fs -i|2= |
||
+ | /srv/filesharing/gnunet/ostrom.pdf |
||
+ | }} |
||
+ | |||
+ | ファイル共有サービスを現在のユーザーとして実行したい場合は、それに応じて {{ic|/etc/gnunet.conf}} を編集します。 |
||
+ | |||
+ | [fs] |
||
+ | ... |
||
+ | RUN_PER_USER = YES |
||
+ | ... |
||
+ | UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-fs.sock |
||
+ | ... |
||
+ | |||
+ | === 低帯域幅 === |
||
+ | |||
+ | ファイル共有の場合、GNUnet の帯域幅制限を、実際にはかなり低いデフォルト値から増やすことをお勧めします。以下の例では、WAN と LAN の制限を {{ic|unlimited}} に設定します。 |
||
+ | |||
+ | {{bc| |
||
+ | $ gnunet-config -s ats -o WAN_QUOTA_IN -V unlimited |
||
+ | $ gnunet-config -s ats -o WAN_QUOTA_OUT -V unlimited |
||
+ | $ gnunet-config -s ats -o LAN_QUOTA_IN -V unlimited |
||
+ | $ gnunet-config -s ats -o LAN_QUOTA_OUT -V unlimited |
||
+ | }} |
||
+ | |||
+ | === /var/lib/gnunet/ が大きくなりすぎる === |
||
+ | |||
+ | GNUnet のキャッシュは有限に保たれており、永久に増大することはありません。ただし、デフォルトで予約されているクォータは小さくありません (現在 5 GB) この数を減らすには、{{ic|/etc/gnunet.conf}} の {{ic|datastore}} セクションの {{ic|QUOTA}} キーに希望の値を割り当てる必要があります。 |
||
+ | |||
+ | {{hc|/etc/gnunet.conf|2= |
||
+ | ... |
||
+ | |||
+ | [datastore] |
||
+ | ... |
||
+ | QUOTA = 2 GB |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | === アンインストール後も /var/lib/gnunet/ は残ります === |
||
+ | |||
+ | {{ic|/var/lib/gnunet/}} ディレクトリは、{{ic|gnunet}} システムユーザーのホームディレクトリであり、GNUnet をアンインストールした後に残ります。GNUnet を二度と使用しないと確信している場合は、次のコマンドを起動します。 |
||
+ | |||
+ | {{bc| |
||
+ | # userdel -r gnunet |
||
+ | # groupdel gnunetdns |
||
+ | }} |
||
+ | |||
+ | {{Warning|現在のピアによって累積的に保存されている ID とネットワークに関するすべての情報は破棄されます。これは、他のパスに明示的にダウンロードされたファイルには影響しません。}} |
||
+ | |||
+ | === ネットワークが静的すぎる === |
||
+ | |||
+ | デフォルトでは、GNUnet はネットワークに接続するたびに、{{ic|https}}) からダウンロードされた {{ic|hostlist}} ファイルを使用して自身をブートストラップします。他のピアから提供されたホストリストを学習して記憶するように指示したい場合は、{{ic|hostlist}} の {{ic|OPTIONS}} キーに {{ic|-e}} オプションを追加する必要があります。{ic|/etc/gnunet.conf}}。さらにオプションもご利用できます。 |
||
+ | |||
+ | {{hc|/etc/gnunet.conf|2= |
||
+ | ... |
||
+ | |||
+ | [hostlist] |
||
+ | ... |
||
+ | # Options: |
||
+ | # -p : provide a hostlist as a hostlist servers |
||
+ | # -b : bootstrap using configured hostlist servers |
||
+ | # -e : enable learning advertised hostlists |
||
+ | # -a : advertise hostlist to other servers |
||
+ | OPTIONS = -b -e -a -p |
||
+ | ...}} |
||
+ | |||
+ | == ヒントとテクニック == |
||
+ | |||
+ | === マルチユーザー設定で現在のユーザーとしてデーモンを起動する === |
||
+ | |||
+ | 新規インストール後、ユーザー構成ファイルが失われます。マルチユーザー設定では、これはシステムデーモンの実行中に {{ic|gnunet.service}} [[ユーザーユニット]] を [[起動]] および [[停止]] するために (必要な場合に) ほとんどのみ使用されます。したがって、通常は次のものだけを含む最小限の構成ファイルを作成するだけで十分です。 |
||
+ | |||
+ | {{hc|~/.config/gnunet.conf|2= |
||
+ | [arm] |
||
+ | START_SYSTEM_SERVICES = NO |
||
+ | START_USER_SERVICES = YES |
||
+ | }} |
||
+ | |||
+ | {{ic|START_SYSTEM_SERVICES}} を {{ic|NO}} に設定しないと、システムデーモンの実行中に現在のユーザーとしてデーモンを起動すると、プロセスが重複します。 |
||
+ | |||
+ | 詳細については、マニュアルの [https://docs.gnunet.org/handbook/gnunet.html#The-Multi_002dUser-Setup The Multi-User Setup] を参照してください。 |
||
+ | |||
+ | === GNUnet のオンとオフを切り替えるボタン === |
||
+ | |||
+ | [[GNOME]] を使用する場合は、Systemd Manager シェル拡張機能 ({{AUR|gnome-shell-extension-systemd-manager}}) をインストールし、それに GNUnet を追加するとよいでしょう。 |
||
+ | |||
+ | $ dconf write /org/gnome/shell/extensions/systemd-manager/systemd \ |
||
+ | <nowiki>'['\''{"name":"GNUnet system service","service":"gnunet.service","type":"system"}'\'', '\''{"name":"GNUnet user service","service":"gnunet.service","type":"user"}'\'']'</nowiki> |
||
+ | |||
+ | (拡張機能をインストールした後、セッションの再起動が必要になる場合があります。) |
||
+ | |||
+ | === シングルユーザーセットアップ === |
||
+ | |||
+ | GNUnet ピアは、{{ic|gnunet}} システムサービスを実行せずに、現在のユーザーからも開始できます。シングルユーザー設定の場合は、{{ic|~/.config/gnunet.conf}} で {{ic|START_SYSTEM_SERVICES}} と {{ic|START_USER_SERVICES}} が {{ic|YES}} に設定されていることを確認してください。 |
||
+ | |||
+ | {{hc|~/.config/gnunet.conf|2= |
||
+ | [arm] |
||
+ | START_SYSTEM_SERVICES = YES |
||
+ | START_USER_SERVICES = YES |
||
+ | }} |
||
+ | |||
+ | 現在のユーザーとしてピアを開始するには、{{ic|gnunet.service}} [[ユーザーユニット]] を [[起動]] します。現在のユーザーとして実行中のピアを停止するには、{{ic|gnunet.service}} ユーザーユニットを [[停止]] します。 |
||
+ | |||
+ | 詳細については、[https://docs.gnunet.org/handbook/gnunet.html#The-Single_002dUser-Setup the chapter on the single-user setup in the handbook] を参照してください。 |
||
+ | |||
+ | === 更新可能なファイルの公開 === |
||
+ | |||
+ | "更新可能な" ファイル (つまり、将来別のバージョンをリリースする可能性があり、別のファイルではなく、更新されたばかりの同じファイルであることを宣伝するファイル) を公開することができます。更新可能なファイルをリリースするには、ego を作成し、それを使用してファイルに署名する必要があります。これは、悪意のある者が偽造されたアップデートを提供できないようにする唯一の方法です。 |
||
+ | |||
+ | ego を作成するには、{{ic|gnunet-identity}} ユーティリティが利用可能です。"これには、{{ic|gnunet.service}} [[ユーザーユニット]] を [[起動]] する必要があります" システムユニットと一緒に ([[GNUnet#マルチユーザー設定で現在のユーザーとしてデーモンを起動する]]) を参照してください。たとえば、"caroline" という名前の ego を作成するには、{{ic|gnunet}} ユーザーユニットを [[有効化]] して起動します。 |
||
+ | |||
+ | $ gnunet-identity -C caroline |
||
+ | |||
+ | {{Note|後でこの ego を消去することにした場合は、{{ic|gnunet-identity -D caroline}} を起動できます。}} |
||
+ | |||
+ | ego を作成したので、ファイルの現在のリリースを識別する文字列 ({{ic|-t}} オプション) と、"計画されている次のバージョンを識別する文字列" を指定する必要があります。 ({{ic|-N}} オプション) – 後者は覚えておく必要があります。両方の文字列には任意のコンテンツが可能です。 |
||
+ | |||
+ | {{hc|1= |
||
+ | $ gnunet-publish -P caroline -t 'diary version 1' -N 'diary version 2' -k 'diary' until-2020/my_diary.md|2= |
||
+ | Publishing `/srv/filesharing/gnunet/until-2020/my_diary.md' done. |
||
+ | URI is `gnunet://fs/chk/AF26...'. |
||
+ | |||
+ | Namespace URI is `gnunet://fs/sks/V3TK.../diary version 1'. |
||
+ | }} |
||
+ | |||
+ | 更新の準備ができたら、以前に選択したのと同じ文字列 (この例では "diary version 2") を使用する必要があります。さらに更新する場合は、別の名前を付ける必要があります (該当する場合) |
||
+ | {{hc|1= |
||
− | === アップロード === |
||
+ | $ gnunet-publish -P caroline -t 'diary version 2' -N 'diary version 3' -k 'diary' until-2021/my_diary.md|2= |
||
+ | Publishing `/srv/filesharing/gnunet/until-2021/my_diary.md' done. |
||
+ | URI is `gnunet://fs/chk/5Y7V...'. |
||
+ | Namespace URI is `gnunet://fs/sks/V3TK.../diary version 2'. |
||
− | gnunet ネットワークへのファイルのアップロードはやや複雑です。GNUnet ではファイルの 'indexing' とファイルの 'inserting' を区別しています。詳細は [https://gnunet.org フレームワークのウェブサイト] を読んで下さい。以下ではネットワークを使ってデータを共有する方法を説明します。[https://gnunet.org/file-sharing こちらのページ] に書かれていることの簡略版です。 |
||
+ | }} |
||
+ | 更新が最後の更新であると判断した場合は、{{ic|-N}} オプションを省略します (今後の更新は許可されません) |
||
− | 以下の手順は手動で行って下さい。アップロードを簡単にする gnunet-fuse という名前のモジュールが開発されていますが、2008年12月現在、ドキュメントはほとんど無きに等しく、[[AUR]] にパッケージもありません。 |
||
+ | GNUnet で更新しても古いコンテンツが利用できなくなるわけではないことに注意してください。GNUnet は発行者がユーザーに新しいバージョンを示すことを許可するだけです。 |
||
− | ==== ファイル・ディレクトリのインデックスを作成 ==== |
||
+ | === systemd を使用しない GNUnet の起動と停止 === |
||
− | gnunet-insert [-n] [-k keword1] [-k keyword 2] [-m TYPE:VALUE] ''filename'' |
||
+ | GNUnet には、独自のデーモン管理システムである ''自動再起動マネージャー'' (GNUnet サービスに限定) が付属しています。 |
||
− | キーワードの追加は必須ではありませんが、推奨されています。GNUnet ではファイル名ではなく、キーワードによって検索するからです。gnunet の依存パッケージとなっている Libextractor がファイルからキーワードを抽出しますが、自分でキーワードを入力するほうが良いでしょう。'-m' オプションはメタデータの意味です。他のユーザーが検索をかけて、あなたのファイルがそれにかかったときに、gnunet が表示する (ファイルに関する) データになります。詳細は gnunet.org のオンラインドキュメントを見て下さい。'-n' オプションを使用するとインデックスが作成されるだけではなく、gnunet の MySQL/sqlite データベースにファイル・ディレクトリが挿入されます。 |
||
+ | [[systemd]] を使用せずにシステム サービスを手動で開始するには、{{ic|gnunet-arm}} ユーティリティを「{{ic|gnunet}} ユーザー として起動します。 |
||
− | ==== ファイル・ディレクトリのインデックスを解除 ==== |
||
+ | $ sudo -u gnunet gnunet-arm -c /etc/gnunet.conf -s |
||
− | gnunet-unindex |
||
+ | systemd を使用せずにシステム サービスを手動で終了するには、次のコマンドを起動します。 |
||
− | インデックスしたファイルを忘れてしまっても、{{ic|1=GNUNET_HOME=/var/lib/gnunet}} ({{ic|gnunet-setup -d}} によって設定されます) の {{ic|/var/lib/gnunet/data/shared}} ディレクトリで確認できます。 |
||
+ | $ sudo -u gnunet gnunet-arm -c /etc/gnunet.conf -e |
||
− | {{Warning|ディレクトリを直接編集してはいけません。gnunet-insert や gnunet-unindex を使って変更してください。gnunet はデータベースを使ってファイルの情報を保存しているため、ディレクトリの中身を削除 (編集) しても gnunet データベースのエントリは削除されません。}} |
||
+ | systemd を使用せずにユーザー サービスを手動で開始するには、{{ic|gnunet-arm}} ユーティリティを ''現在のユーザーとして'' 起動します。 |
||
− | ==== インデックスしたファイルを修正・削除 ==== |
||
+ | $ gnunet-arm -c ~/.config/gnunet.conf -s |
||
− | * ファイルを修正した場合、ファイルの URI が変更され、GNUnet は全く違うファイルとして認識します。したがって、(gnunet-unindex コマンドで) 元のファイルのインデックスを解除してから、ファイルを修正し、新しいファイルのインデックスを作成してネットワーク上で利用できるようにしてください。 |
||
− | * システムからファイルを移動・削除したいときは、まずインデックスの解除を行って下さい。 |
||
+ | systemd を使用せずにユーザーサービスを手動で終了するには、次のコマンドを起動します。 |
||
− | === GNUnet サービスの終了 === |
||
+ | $ gnunet-arm -c ~/.config/gnunet.conf -e |
||
− | [https://gnunet.org/content/how-start-and-stop-gnunet-peer] を見て下さい。 |
2024年8月14日 (水) 23:04時点における最新版
GNUnet は中央サーバーや信頼機関を使わないセキュアなピアツーピアネットワークを提供するフレームワークです。現在、フレームワークを使って実装されたサービスとして検閲を免れるファイル共有があります。
Wikipedia:ja:GNUnet も参照してください。
インストール
GNUnet は gnunetAUR パッケージでインストールできます。グラフィカルインターフェイスも使いたい場合は gnunet-gtkAUR をインストールしてください。
もしくは、最新の git バージョンを gnunet-gitAUR と gnunet-gtk-gitAUR パッケージでインストールすることもできます。
設定
もしくは、ターミナルからピアを今すぐ起動するには:
# gnunet-arm -s
How to start and stop a GNUnet peer も参照してください。
使用方法
GNUnet ネットワークへの参入
gnunet
システムサービスを 起動、場合によっては 有効化 します。一部の操作では、gnunet
ユーザーサービスも開始する必要があります。
ネットワークを確認する
通常のユーザーとして gnunet-peerinfo
コマンドを起動することで、ネットワークの現在の状態を確認できます。
$ gnunet-peerinfo
ピア ID の起動を確認するには:
$ gnunet-peerinfo -s
直接接続しているピア (これらを "neighbours" と呼びます) を一覧表示するには、次のコマンドを実行します。
$ gnunet-core
ファイル共有
デフォルトでは、ファイル共有サービスは ユーザーごと に実行されます。つまり、システムとユーザーの両方の gnunet
サービス を 起動 する必要があります。このオプションを変更して マシンごと にファイル共有を実行したい場合は、それに応じて /etc/gnunet.conf
を編集します。
[fs] ... RUN_PER_USER = NO ... UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-fs.sock ...
ファイルを検索する
gnunet-search
を使用して、キーワード (これらは必ずしもファイル名に関連しているわけではありません) を使用してファイルを検索します。たとえば、"commons" キーワードでインデックス付けされたファイルを検索するには、次のコマンドを起動します。
$ gnunet-search --timeout='10 s' 'commons'
タイムアウトを指定しないと (上記の例では 10 秒)、gnunet-search
は永久に実行され、ユーザーが CTRL-C を押すのを待ちます。
gnunet-search
コマンドには、印刷出力を操作するための --printf
オプションがあります。これは、find
ユーティリティです。詳細については、man gnunet-search
と入力してください。
検索結果を "GNUnet ディレクトリ" として保存する
gnunet-search
の -o
オプションを使用して、検索結果を "GNUnet ディレクトリ" (.gnd
ファイル) として保存します。この場合、出力は印刷されます (-s
オプション)
たとえば、3 秒間検索し、"commons" キーワードによって得られた結果を three-seconds-commons.gnd
という名前のファイルに保存するには、次のように起動します。
$ gnunet-search -s -t 3s -o three-seconds-commons.gnd 'commons'
後で three-seconds-commons.gnd
の内容を検査したい場合は、次のコマンドを起動できます。
$ gnunet-directory three-seconds-commons.gnd
ダウンロード
gnunet-search
の出力は、デフォルトでは、通常のユーザーとして直接コピーして起動できる gnunet-download
コマンドのリストです。
たとえば、gnunet-search 'commons'
によって生成された出力を使用すると、
$ gnunet-search 'commons'
#1: gnunet-download -o "Liotard (2017)_ Fablab - a new space for commons based peer production.pdf" gnunet://fs/chk/C6369DRQ3S8RYK1FD5VDE666W2HVEJ5G5GJRX29BH6ZM08CBRWS7FY9326RBJ4G0N8V1RJ2N802KBYZT7RJT2EDK1J9JR2DXK5MTVM0.4SXJCK9NT5XGCZ0YAJ0ETXJJGY3P2SMNZ0Q94N775YEX9SXS2RW5FWRFK4GMBTP668Z3R8QZZ4WSHW1KG1AVQ5VFC1VF5T3WF57GT58.336423 #2: gnunet-download -o "Rose, Carol (1986)_ The Comedy of the Commons_ Commerce, Custom, and inherently Public Property.pdf" gnunet://fs/chk/TQK3A2C279EJQ50B1TQWFNTPMGQZJJ4JXYTF2D88D03H038TB7SVVSRBT74FMYPNZ47YZSV096PVVZH0TQ3B8KBVBV2H8GN9VAASTJR.CQ7M7843MGPZCV8M26NKH6EB5MBGZAXRWCF39YS668WM6F22D214GSXNTJ4RYGE7XF68VPZM4C19XR48TT4J8WH8S2E00C96Q8K6790.1593230 #3: gnunet-download -o "Hardin, Garett (1968)_ Tragedy of the Commons.pdf" gnunet://fs/chk/Y1FD7D123CEGWDW544YDEP15YA5E7ZD2XRSJBNP0847A5JXMMZEZ0XACGRG42BBBTGKZ0ZCBW0A9T6196Z5N26HA6SP1T8GDAT5H5SG.RN38G25DMYG3TBQJEGWDZT2B84N1JYYJZ8VRJ8HG2G1A4EFD4GH5TZXB0RXV7QEMZBSKWCCEF736FXNH6C5BYKG9DSTV99ETFGC93R0.1520328 ...
起動して、
$ gnunet-download -o "Hardin, Garett (1968)_ Tragedy of the Commons.pdf" gnunet://fs/chk/Y1FD7D123CEGWDW544YDEP15YA5E7ZD2XRSJBNP0847A5JXMMZEZ0XACGRG42BBBTGKZ0ZCBW0A9T6196Z5N26HA6SP1T8GDAT5H5SG.RN38G25DMYG3TBQJEGWDZT2B84N1JYYJZ8VRJ8HG2G1A4EFD4GH5TZXB0RXV7QEMZBSKWCCEF736FXNH6C5BYKG9DSTV99ETFGC93R0.1520328
これにより、現在のディレクトリに Hardin, Garett (1968)_ Tragedy of the Commons.pdf
がダウンロードされます。
リモート GNUnet ディレクトリをダウンロードせずにマウントする
gnunet-fuseAUR という名前のモジュールは、GNUnet ネットワークからリモート ディレクトリをマウントするために開発されました。gnunet-fuse
を使用すると、GNUnet ネットワーク上に公開されたディレクトリを読み取り専用ファイルシステムとしてマウントし、通常のファイル操作を使用してアクセスできます。gnunet-download
を介してディレクトリを再帰的にダウンロードするのとは対照的に、これにはファイルがオンデマンドでダウンロードされるという利点があります。アクセスしたファイル (またはディレクトリ) のみがダウンロードされます。詳細については、モジュールをインストールし、"man gnunet-fuse
" と入力してください。
アップロード
GNUnet ファイル共有ネットワーク上でファイルを公開するには、後で他の人がファイルを検索するために使用できるキーワードを選択する必要があります。
キーワードは厳密には必須ではありませんが、推奨されます。これは、GNUnet ではファイル名ではなくキーワードによる検索が許可されているためです。GNUnet の依存関係である libextractor ライブラリは、ファイルからキーワードを自動的に抽出できますが、独自のキーワードを入力することもできます。
次の例では、キーワード "commons" と "state" を使用して、ostrom.pdf
という名前のファイルを公開します。
$ gnunet-publish -k 'commons' -k 'state' ostrom.pdf
Publishing `/srv/filesharing/gnunet/ostrom.pdf' done. URI is `gnunet://fs/chk/M57S...
GNUnet ユーザーは、gnunet-search
コマンドを使用してファイルを検索できるようになりました。
$ gnunet-search 'commons'
#1: gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57S...
現在公開されているすべてのファイルをリストするには、gnunet-fs -i
を起動します。後でファイルの共有を停止したい場合は、gnunet-unindex filename
を使用できます (この例では、gnunet-unindex 'ostrom.pdf'
)
ファイルが公開されると、ファイルのインデックスに使用されたキーワードを取得することはできません (つまり、逆検索) ただし、さらにキーワードを追加することはいつでも可能です。
新しくアップロードされたファイルがピアに表示されるまでには、しばらく時間がかかる (最大で数時間) 場合があることに注意してください。
gnunet-publish
コマンドには、インデックスを付けずにファイルを公開するためのオプション -n
または同等の --noindex
が用意されています。使用すると、GNUnet は完全な挿入を実行し、ファイル全体を暗号化された形式で GNUnet データベースに保存します。
このオプションは、検閲が厳しい国で検閲されたファイルの場合に、GNUnet を実行しているコンピュータに物理的にアクセスした人が現在公開されているファイルを知ることを回避する目的で作成されました。--noindex
オプションを使用して公開されたファイルは、ネットワークからダウンロードされたチャンクとして表示されるため、非公開またはインデックス付けを解除することはできません (そもそもインデックス付けされていません)。ただし、公開中にコンテンツの優先順位を低く指定し (--prio
)、データベースがいっぱいになったときに公開されるコンテンツが簡単に失われてもよいことを GNUnet に伝えることは常に可能です。
詳細については、the chapter on file-sharing in the handbook を参照してください。https://gnunet.org/en/use.html#filesharing も参照してください。
インデックス付きファイルの変更と削除
- ファイルを変更すると、ファイルのURIが変わります。したがって、GNUnet はこれをまったく別のファイルと見なし、インデックス付きファイルは見つからないとみなします。したがって、最初に元のファイルのインデックスが解除されていることを確認し (
gnunet-unindex
コマンドを使用)、ファイルを変更してから、新しいファイルにインデックスを付けて、ネットワーク経由でアクセスできるようにします。 - ファイルシステムからファイルを削除する場合は、まずそのファイルのインデックスを解除する必要があります。
- 公開されたファイルを多かれ少なかれ頻繁に更新する必要があることが事前にわかっている場合は、GNUnet#更新可能なファイルの公開 を参照してください。
ダウンロード + 共有
GNUnet ファイル共有ネットワークは DHT です (Wikipedia:ja:分散ハッシュテーブル を参照) DHT のピアとして、ユーザーはさまざまなファイルのチャンクをディスク上に保存します。これは、ダウンロードしていないファイルやダウンロードしたファイルであっても です。どのファイルが保存されるかは、DHT 距離メトリック/アルゴリズムによって異なります。
技術的には、ファイルが完全にダウンロードされていない限り、ファイルの一部のみが保存されます。これらはキャッシュ (通常は /var/lib/gnunet/.local/share/gnunet
の下) に保存されます。DHT クエリがキャッシュされた部分の 1 つについてピアに到達すると、ピアはそれを提供します。ファイル共有ブロックの保存に使用されるデータベースは有限 (構成可能なクォータ以下) に保たれ、すべてのキャッシュされた部分は期限切れになり、新しいファイル用のスペースを確保できます。
誰かが GNUnet ネットワークでファイルを共有すると、そのファイルの分散チャンクはネットワークのキャッシュにしばらく残り、ファイルを共有した人がオフラインになってもファイルは利用可能なままになります。しかし、元の発行者が行方不明になり、他の誰もファイルを 明示的に (gnunet-publish
を使用して) 共有しなかった場合、ピアのキャッシュが期限切れになるか、ピアがオフラインになると、そのファイルは最終的に利用できなくなります。
ファイルが GNUnet ネットワークに確実に残るようにする唯一の方法は、ファイルをダウンロードした後に (gnunet-publish
を使用して) 明示的に再公開し、ファイルを公開するマシンが定期的にネットワークにアクセスできるようにすることです。
ダウンロード後にファイルを公開すると、再公開用に選択されたキーワードに関係なく、ファイルがダウンロードされたときと同じ URI (以下の例では gnunet://fs/chk/Y1FD...
) が常に生成されます。
$ gnunet-download -o 'Hardin, Garett (1968)_ Tragedy of the Commons.pdf' gnunet://fs/chk/Y1FD...
100% [============================================================] Downloading `Hardin, Garett (1968)_ Tragedy of the Commons.pdf' done (160 b/s).
$ gnunet-publish -k 'tragedy' 'Hardin, Garett (1968)_ Tragedy of the Commons.pdf'
Publishing `/srv/filesharing/gnunet/Hardin, Garett (1968)_ Tragedy of the Commons.pdf' done. URI is `gnunet://fs/chk/Y1FD...
VPN
GNUnet は VPN を提供しており、これを使用してインターネット接続を共有したり (これは Tor 出口ノードを実行するのと同じように危険な可能性があります)、ホスト上のサービスへのアクセスを提供したりできます (これらのサービスは安全です)
GNUnet で VPN をセットアップする方法については、https://gnunet.org/en/use.html#vpn を参照してください。
GNU ネームサービス (GNS)
GNU ネーム サービス (GNS) は、ドメイン名前解決 (DNS) に代わる完全に分散化された代替手段であり、後者と同じ重大なセキュリティ上の欠陥に悩まされることはありません (セキュリティの問題 を参照)
GNS の使用方法については、https://gnunet.org/en/use.html#gns_cli および https://gnunet.org/en/use.html#gns_browser を参照してください。
他の GNUnet ユーザーとチャットする
GNUnet ユーザーとチャットするには、gnunet-messenger
ユーティリティを使用できます。"これには、gnunet.service
ユーザーユニット を 起動 する必要があります" (おそらく、gnunet.service
システムユニットと一緒に – マルチユーザー設定で現在のユーザーとしてデーモンを起動する を参照してください) たとえば、"アリス" というニックネームを使用して "miscellanea" ルームに入るには、
$ gnunet-messenger -e alice -r miscellanea
* Welcome to the messenger, 'alice'! * You try to open a room... * You joined the room. [EHDA8T] * 'anonymous' opened the room on: 2ABN944E16FTWFMOKTMQ5JMPQ233YSPBKC47XR2DHSPQCQ8GYK80 [EHDA8T] * 'anonymous' gets renamed to 'alice' █
アプリのエコシステム
GNUnet GTK
GNUnet GTK は、GNUnet フレームワーク用のグラフィカルインターフェイスのコレクションです。以下の GTK アプリケーションが同梱されています。
gnunet-conversation-gtk
gnunet-fs-gtk
gnunet-namestore-gtk
gnunet-peerinfo-gtk
gnunet-setup
gnunet-statistics-gtk
GNUnet GTK をインストールするには、gnunet-gtkAUR パッケージをダウンロードします。
GTK メッセンジャー
現在、GNUnet ネットワーク上でチャットするためのいくつかのグラフィカルユーザーインターフェイスが開発されています。そのうちの 1 つは、モバイル対応の GTK である Messenger GTK (messenger-gtkAUR、または開発バージョンの場合は messenger-gtk-gitAUR) です。コマンドラインを介したチャットについては、Messenger CLI (開発バージョンの場合は messenger-cliAUR または messenger-cli-gitAUR) を参照してください。
Web ユーザーインターフェース
GNUnet の Web インターフェースが存在し、gnunet-webui-gitAUR として入手できます。
re:claimID
re:claimID は、GNU ネーム システム上に構築された分散型アイデンティティプロバイダー (IdP) サービスです。これにより、ユーザーは標準化されたプロトコル (OpenID Connect) を使用して Web サイトと個人情報を安全に共有できます。
ユーザー向けに re:claimID は Firefox の拡張機能 と 拡張機能 を提供します。 Chromium の拡張機能] Web ブラウザで re:claimID ID を管理するための拡張機能 (gnunetAUR パッケージをインストールする必要があります)
拡張機能をインストールした後、https://ui.reclaim/ にアクセスして、ローカルの re:claimID インスタンスに新しい ID を追加し、それにいくつかの属性を追加できるようになります (拡張機能がないとリンクは機能しません) インストールされています。
詳細については、マニュアル を参照してください。
GNU Taler
GNU Taler は、GNUnet 上に構築されたマイクロトランザクションおよび電子決済システムです。他の分散型決済システムとは異なり、Taler はブロックチェーンに基づいておらず、代わりにブラインド署名に基づいています。
詳細については、公式ドキュメント を参照してください。パッケージ syncAUR、taler-exchangeAUR、taler-mdbAUR、taler-merchantAUR、および taler-twisterAUR も参照してください。
GNU Anastasis
Anastasis は、ユーザーがオープンセットのエスクロープロバイダーにコア シークレットを安全に預け、元のコピーが失われた場合にこれらのシークレットを回復できるようにするプロトコルと実装です。Anastasis は AUR (anastasisAUR および anastasis-gtkAUR) で利用できます。詳細については、https://www.gnu.org/software/anastasis/ および https://anastasis.lu/ を参照してください。
トラブルシューティング
GNUnet がファイルの公開に失敗する
GNUnet サービスの仕組みを理解していない人にありがちな間違いは、現在のユーザーに対してファイル共有サービスが実行されていないときに、ホームディレクトリ (またはそのサブディレクトリ) にあるファイルを公開しようとすることです。問題は、gnunet
システムユーザー (GNUnet システムサービスを実行する) が通常、他のユーザーのホーム ディレクトリにアクセスできないことです。
簡単な解決策は、gnunet
グループに属するユーザーのみが書き込み権限を持つ共有ディレクトリを作成し、それを使用して公開するファイルを配置することです。たとえば、/srv/filesharing/gnunet
が適切な選択となる可能性があります。
# install -dm775 -g gnunet -o gnunet /srv/filesharing/gnunet
gnunet
グループに属する各ユーザーは、ホームディレクトリにそのグループへのリンクを作成できます。
$ ln -s /srv/filesharing/gnunet ~/Publishing
これは gnunet-publish
によって逆参照できます。
$ (cd ~/Publishing && gnunet-publish -k commons ostrom.pdf) && gnunet-fs -i
/srv/filesharing/gnunet/ostrom.pdf
ファイル共有サービスを現在のユーザーとして実行したい場合は、それに応じて /etc/gnunet.conf
を編集します。
[fs] ... RUN_PER_USER = YES ... UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-fs.sock ...
低帯域幅
ファイル共有の場合、GNUnet の帯域幅制限を、実際にはかなり低いデフォルト値から増やすことをお勧めします。以下の例では、WAN と LAN の制限を unlimited
に設定します。
$ gnunet-config -s ats -o WAN_QUOTA_IN -V unlimited $ gnunet-config -s ats -o WAN_QUOTA_OUT -V unlimited $ gnunet-config -s ats -o LAN_QUOTA_IN -V unlimited $ gnunet-config -s ats -o LAN_QUOTA_OUT -V unlimited
/var/lib/gnunet/ が大きくなりすぎる
GNUnet のキャッシュは有限に保たれており、永久に増大することはありません。ただし、デフォルトで予約されているクォータは小さくありません (現在 5 GB) この数を減らすには、/etc/gnunet.conf
の datastore
セクションの QUOTA
キーに希望の値を割り当てる必要があります。
/etc/gnunet.conf
... [datastore] ... QUOTA = 2 GB ...
アンインストール後も /var/lib/gnunet/ は残ります
/var/lib/gnunet/
ディレクトリは、gnunet
システムユーザーのホームディレクトリであり、GNUnet をアンインストールした後に残ります。GNUnet を二度と使用しないと確信している場合は、次のコマンドを起動します。
# userdel -r gnunet # groupdel gnunetdns
ネットワークが静的すぎる
デフォルトでは、GNUnet はネットワークに接続するたびに、https
) からダウンロードされた hostlist
ファイルを使用して自身をブートストラップします。他のピアから提供されたホストリストを学習して記憶するように指示したい場合は、hostlist
の OPTIONS
キーに -e
オプションを追加する必要があります。{ic|/etc/gnunet.conf}}。さらにオプションもご利用できます。
/etc/gnunet.conf
... [hostlist] ... # Options: # -p : provide a hostlist as a hostlist servers # -b : bootstrap using configured hostlist servers # -e : enable learning advertised hostlists # -a : advertise hostlist to other servers OPTIONS = -b -e -a -p ...
ヒントとテクニック
マルチユーザー設定で現在のユーザーとしてデーモンを起動する
新規インストール後、ユーザー構成ファイルが失われます。マルチユーザー設定では、これはシステムデーモンの実行中に gnunet.service
ユーザーユニット を 起動 および 停止 するために (必要な場合に) ほとんどのみ使用されます。したがって、通常は次のものだけを含む最小限の構成ファイルを作成するだけで十分です。
~/.config/gnunet.conf
[arm] START_SYSTEM_SERVICES = NO START_USER_SERVICES = YES
START_SYSTEM_SERVICES
を NO
に設定しないと、システムデーモンの実行中に現在のユーザーとしてデーモンを起動すると、プロセスが重複します。
詳細については、マニュアルの The Multi-User Setup を参照してください。
GNUnet のオンとオフを切り替えるボタン
GNOME を使用する場合は、Systemd Manager シェル拡張機能 (gnome-shell-extension-systemd-managerAUR) をインストールし、それに GNUnet を追加するとよいでしょう。
$ dconf write /org/gnome/shell/extensions/systemd-manager/systemd \ '['\''{"name":"GNUnet system service","service":"gnunet.service","type":"system"}'\'', '\''{"name":"GNUnet user service","service":"gnunet.service","type":"user"}'\'']'
(拡張機能をインストールした後、セッションの再起動が必要になる場合があります。)
シングルユーザーセットアップ
GNUnet ピアは、gnunet
システムサービスを実行せずに、現在のユーザーからも開始できます。シングルユーザー設定の場合は、~/.config/gnunet.conf
で START_SYSTEM_SERVICES
と START_USER_SERVICES
が YES
に設定されていることを確認してください。
~/.config/gnunet.conf
[arm] START_SYSTEM_SERVICES = YES START_USER_SERVICES = YES
現在のユーザーとしてピアを開始するには、gnunet.service
ユーザーユニット を 起動 します。現在のユーザーとして実行中のピアを停止するには、gnunet.service
ユーザーユニットを 停止 します。
詳細については、the chapter on the single-user setup in the handbook を参照してください。
更新可能なファイルの公開
"更新可能な" ファイル (つまり、将来別のバージョンをリリースする可能性があり、別のファイルではなく、更新されたばかりの同じファイルであることを宣伝するファイル) を公開することができます。更新可能なファイルをリリースするには、ego を作成し、それを使用してファイルに署名する必要があります。これは、悪意のある者が偽造されたアップデートを提供できないようにする唯一の方法です。
ego を作成するには、gnunet-identity
ユーティリティが利用可能です。"これには、gnunet.service
ユーザーユニット を 起動 する必要があります" システムユニットと一緒に (GNUnet#マルチユーザー設定で現在のユーザーとしてデーモンを起動する) を参照してください。たとえば、"caroline" という名前の ego を作成するには、gnunet
ユーザーユニットを 有効化 して起動します。
$ gnunet-identity -C caroline
ego を作成したので、ファイルの現在のリリースを識別する文字列 (-t
オプション) と、"計画されている次のバージョンを識別する文字列" を指定する必要があります。 (-N
オプション) – 後者は覚えておく必要があります。両方の文字列には任意のコンテンツが可能です。
$ gnunet-publish -P caroline -t 'diary version 1' -N 'diary version 2' -k 'diary' until-2020/my_diary.md
Publishing `/srv/filesharing/gnunet/until-2020/my_diary.md' done. URI is `gnunet://fs/chk/AF26...'. Namespace URI is `gnunet://fs/sks/V3TK.../diary version 1'.
更新の準備ができたら、以前に選択したのと同じ文字列 (この例では "diary version 2") を使用する必要があります。さらに更新する場合は、別の名前を付ける必要があります (該当する場合)
$ gnunet-publish -P caroline -t 'diary version 2' -N 'diary version 3' -k 'diary' until-2021/my_diary.md
Publishing `/srv/filesharing/gnunet/until-2021/my_diary.md' done. URI is `gnunet://fs/chk/5Y7V...'. Namespace URI is `gnunet://fs/sks/V3TK.../diary version 2'.
更新が最後の更新であると判断した場合は、-N
オプションを省略します (今後の更新は許可されません)
GNUnet で更新しても古いコンテンツが利用できなくなるわけではないことに注意してください。GNUnet は発行者がユーザーに新しいバージョンを示すことを許可するだけです。
systemd を使用しない GNUnet の起動と停止
GNUnet には、独自のデーモン管理システムである 自動再起動マネージャー (GNUnet サービスに限定) が付属しています。
systemd を使用せずにシステム サービスを手動で開始するには、gnunet-arm
ユーティリティを「gnunet
ユーザー として起動します。
$ sudo -u gnunet gnunet-arm -c /etc/gnunet.conf -s
systemd を使用せずにシステム サービスを手動で終了するには、次のコマンドを起動します。
$ sudo -u gnunet gnunet-arm -c /etc/gnunet.conf -e
systemd を使用せずにユーザー サービスを手動で開始するには、gnunet-arm
ユーティリティを 現在のユーザーとして 起動します。
$ gnunet-arm -c ~/.config/gnunet.conf -s
systemd を使用せずにユーザーサービスを手動で終了するには、次のコマンドを起動します。
$ gnunet-arm -c ~/.config/gnunet.conf -e