前書き
こんにちは、今回の記事はITRC Advent Calendar 2020 11日目の記事となっております。
前日の記事のリンク
https://qiita.com/rin1208/items/7005207adb0dc9bff9f2
次日の記事のリンク
明日
今回は知る人ぞ知るダークネットであるZeroNetについてご紹介をしようと思います。
内容は以下の通りです
- ZeroNetとは?その仕組みは?
- どうやって使用するのか
サイトを作ってみる- 最後にまとめ
なお、この記事はいろいろななんやかんやを助長するものではないという事にご留意ください。
ZeroNetとは?その仕組みは?
P2Pの技術を用いて検閲ができないネットワークを構築するというプロジェクトです。
P2PはTorrentとかの技術ですね。Linuxのisoをダウンロードする際にお世話になるアレです
基本的に今のネットワークはサーバークライアント型という構成になっていて、
サーバーが無くなってしまうと、そこに保管されていた情報が見えなくなってしまいます。
ZeroNetはZeroNetを使用するクライアントの中にサーバーに置かれるはずのデータが置かれます。
同じようにデータを持っているクライアントが複数台あるので、サーバーが無くなってもサイトを見る事ができます。
分散してサイトのデータを持っている為、分散WEBと呼ばれたりします。
ただサイトのデータを所有しているだけではサイトの作成者がサイトを更新した際にサイトのデータを持っている他のクライアントはページが更新されないので、強制的に他のデータを更新する publish
という機能があります。
どのようにサイトの所有者を判断しているのかは後述します。
zeronetをインストールすると、インストールしたディレクトリに users.json
というファイルが作成されます。
そのファイルの中に個人を識別する為の鍵が保存されています。
自分で作ったサイトなどは、公開鍵がサイトのコンフィグファイルの中に書かれてあり、サイトを更新する際に確認されます。
掲示板などの特定のwebでは zero.id
というものを発行しないと使用できない場合もあります。
zero.id
はユーザー認証の機能であり、user.json
の中にユーザー名と鍵を紐づける設定が追記され保存されます。
zero.idのサイトの中にあるdata
というディレクトリの中にusers.json
というファイルがあります。
このファイルの中身を参照し鍵を使い認証する事で個人を識別できます。
最初はzeroidのサイトのファイルとか持ってないんですけど!ってなるんですけど、ユーザーを作成する際にサイトにアクセスする事になるので問題ないです。
どうやって使用するのか
ZeroNetは普通のwebサイトではないので基本的にZeronetに接続するためのソフトウェアを用意しなければいけません。
なのでダークネット扱いになりますが、Zeronet内での活動のトラッキングは不可能では無い為、危険そうなサイトなどにはアクセスしないような自衛が必要になります。
ソフトウェアの入手方法はtorと同じくらい簡単で、公式サイトからダウンロードする事ができます。
私はDockerを使用してZeroNetにアクセスしています。
コマンドは以下の通りです。
mkdir ZeroNet docker run -d -e "ENABLE_TOR=true" -v `pwd`/ZeroNet:/root/data -p 43110:43110 nofish/zeronet
何をしているか解説します
mkdir
コマンドでZeroNetというディレクトリを作成します。
これはZeronetのサイトやuser.jsonなどの保管場所として使用するディレクトリです。
次にdocker runでZeroNet本体を起動します。
もうすでにDockerHubにZeroNetのコンテナがデプロイされている為、それをそのまま使用します。
オプションでTorを使用できるようにします。Torを使用する設定にするのはZeroNetコンテナ起動後、ZeroNetにアクセスして設定画面から行います。
主に自分が作ったサイトを公開する際にTorが必要になります。
ZeroNetはTorを経由してトラッカーというサーバーに接続してみようとしているサイトのダウンロードを行ったり、自分が作ったサイトを公開したりすることができます。
Torを経由してサイトを公開できるようにしておかないと、自宅のルータのポートを開放するなどの作業が必要になります。めんどくさい
(torrcを書き換えて匿名化を追求したい方は、コンテナ起動後にdocker exec
を使用して、コンテナ内のshellに入り、/etc/tor/torrc
を思うように書き換えてdocker restart
をするといいと思います。)
そして、先ほど作成したZeroNetというディレクトリにZeroNetのサイトのデータなどを保管します。
Dockerコンテナ内のファイルをそのまま割り当てているのでroot権限になってしまっています。
最後にZeroNetのページにアクセスするためのポートを割り当てます。
この43110がzeronetのWEB UIです。起動後にアクセスしてみるとzeronetのページが開きます。
サイトを作ってみる
Gigazineさんがめっちゃわかりやすく画像付きでまとめてくれていました・・・
作業を楽にしてくれて・・・ありがとう・・・
このままだとアレなので普段私が見ている一番活発な日本語の掲示板へのリンクをご紹介します。
http://127.0.0.1:43110/1QHXMjt1X3T4C2VAra9Arwar1FMk1WrfCd/
はい、私が管理している掲示板です。
最後にまとめ
ZeroNet面白そうですよね、サーバーがなくてもサイトを公開できたり。
軽量な掲示板があって古のインターネットを彷彿とさせたり。
しかし最近ではZeroNetの考え方そのものが古いんじゃないかと言われ始めていて、最近ではIPFSを使用した分散ネットワークに注目が集まっています。
正直、チョイス間違えたな~IPFSの事書くべきだったな~って思っています。
次の次くらいに記事を書く予定となっております。
あとがき
当日の22時くらいまでアドベントカレンダーの事、頭からすっぽ抜けていた為割と中身がスカスカのカスカス記事になってしまっているが申し訳ない
memo
https://ipfs.io/
コメントを残す