Yggdrasilネットワークとは?分散型メッシュネットワークの仕組みとインストール・設定方法を徹底解説
Yggdrasilネットワークは、分散型かつ暗号化されたメッシュネットワークの構築を目指すIPv6オーバーレイネットワークです。ネットワークを二分木の葉として扱うことでこれを実現しています。オーバーレイネットワークであるため、Yggdrasilはユーザー同士が安全に通信できる仮想プライベートネットワーク(VPN)としても機能します。
さらに、Yggdrasilは無料で比較的簡単にセットアップでき、幅広いプラットフォームで利用できる点も魅力です。安全でプライベートな接続を求めるユーザーにとって、強力な選択肢となっています。
メッシュネットワーキングとYggdrasilとは?
Yggdrasilは、ネットワークを相互接続されたノードのツリーとして表現することで、メッシュネットワーキングを実現します。各ノードは他のノードへのリレーとしても動作できるため、Yggdrasilは真のメッシュネットワークだと言えます。
また、このネットワーク構造のおかげで、YggdrasilはアクセスしたいマシンやWebサイトを容易に特定できます。その結果、中央サーバーにトラフィックのルーティングを依存させることなく、他のユーザーと通信することが可能です。
なぜYggdrasilを使うのか?
Yggdrasilの最大の特長は、インターネット上のデータルーティングの仕組みを変えられる点にあります。これは、ネットワークのデフォルト状態について、以下のような前提を置くことで実現されています。
- すべてのノードが、少なくとも1つの別のノードに接続している
- 各ノードは、他のノードへデータを透過的に中継できる
- 各ノードは、自分に接続されているノードの情報をブロードキャストできる
これらの前提により、堅牢で予測可能でありながら、非常に柔軟な構造が生まれます。たとえば、1つの公開ノードに接続するだけで、自分のマシンを外部からアクセス可能な状態にできます。この公開ノードはさらに他のノードと接続されており、他のユーザーはそのノードとピアリングすることで、あなたのマシンへ接続できるのです。
さらに、Yggdrasilではローカルマシンだけで構成されるサブネットワークを作成することもできます。そのため、独自のVPNを構築したい場合に非常に便利です。
Yggdrasilのインストール方法
前述のとおり、Yggdrasilは多くのプラットフォームやOSで利用でき、主要なLinuxディストリビューションのほとんどに対応しています。
ただし、Yggdrasilがデフォルトのリポジトリに含まれていないケースもあります。そのため、一部のディストリビューションでは、インストール前にパッケージソースを追加する必要があります。
DebianおよびUbuntuへのインストール
たとえば、DebianやUbuntuにYggdrasilをインストールする場合は、まず公式のGPGキーをaptに追加します。以下のコマンドを実行してください。
gpg --fetch-keys https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/key.txt gpg --export 569130E8CA20FBC4CB3FDE555898470A764B32C9 | sudo apt-key add -
次に、aptがパッケージを検索する際に参照するソースリストに、Yggdrasilのリポジトリを追加します。
echo 'deb https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/ debian yggdrasil' | sudo tee /etc/apt/sources.list.d/yggdrasil.list
完了したら、aptを更新してプログラムをインストールします。以下の1行のコマンドで実行できます。
sudo apt update && sudo apt install yggdrasil
Fedoraへのインストール
DebianやUbuntuとは対照的に、FedoraへのYggdrasilのインストールはとても簡単です。「コミュニティパッケージ」にすでに含まれているためです。
したがって、以下のコマンドを実行するだけでインストールが完了します。
sudo dnf copr enable rany/yggdrasil sudo dnf install yggdrasil
Arch Linuxへのインストール
最後に、Arch Linuxへのインストールも非常にシンプルです。Fedoraと同様に、Archのコミュニティリポジトリにすでに含まれています。
そのため、pacmanコマンドを使ってインストールできます。
sudo pacman -Syu yggdrasil
インストール後の設定方法
インストールが完了したら、ノードへの接続設定は非常に簡単です。「/etc/yggdrasil.conf」を編集するだけで、プログラムの動作を細かく制御できます。nanoエディタで開くには、以下のコマンドを実行します。
sudo nano -w /etc/yggdrasil.conf
通常、Yggdrasilはインストール後にこのファイルを自動生成します。もし存在しない場合は、以下のコマンドで新しい設定ファイルを作成できます。
su --command="yggdrasil -genconf > /etc/yggdrasil.conf"
公開ノードへの接続
前述のとおり、Yggdrasilには主に2つの使い方があります。
- 公開ノードに接続して、自分のマシンをネットワーク上で発見可能にする
- 複数のマシンを仮想プライベートネットワークでつなぐ
前者の場合、「/etc/yggdrasil.conf」ファイル内の Peers: ブロックを編集して、公開ノードのアドレスを追加します。
このセクションは、どのノードに接続するかを決める重要な設定箇所です。ここに記載するマシンは、すべてインターネットから公開されており、接続可能な状態である必要があります。
それを踏まえて、以下の設定例を見てみましょう。
{
# List of connection strings for outbound peer connections in URI format,
# e.g. tls://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j. These connections
# will obey the operating system routing table, therefore you should
# use this section when you may connect via different interfaces.
Peers: [
tls://address.domain:port
tcp://1.2.3.4:port
socks://[aaaa:...:ffff]/[1111:...:9999]
]
[...]
Peersブロックは、接続したいノードの一覧を記述する部分です。
TLSやSOCKSを使った暗号化接続、あるいはTCPを使った非暗号化接続のいずれかを確立できます。後者は、TLSをサポートしていないものの、基本的なネットワーク接続を持つ小型の組み込みデバイスを接続する際に役立ちます。
設定が済んだら、コミュニティが提供しているノードリンクをいくつかコピーするだけで、公開Yggdrasilネットワークに接続できます。
接続情報を追加したら、以下のコマンドでサービスを有効化して起動しましょう。
sudo systemctl enable yggdrasil sudo systemctl start yggdrasil
専用のWebページにアクセスすると、ネットワークに正しく接続できているかどうかをテストできます。
独自のプライベートネットワークを構築する
一方、プライベートネットワークの構築は少し手間がかかりますが、それでも比較的簡単に行えます。プライベートなYggdrasilネットワークを作るには、以下のものが必要です。
- 公開アクセス可能なマシン。CG-NATでブロックされていないローカルマシンか、低価格のVPS(仮想専用サーバー)が該当します。
- 互いに直接通信できない、異なるネットワーク上に配置された複数のマシン。
自分の公開ノードを設定する
プライベートなYggdrasilネットワークを構築するには、まず公開マシンが他のノードからの接続を受け入れられるようにします。そのために、公開マシンの「/etc/yggdrasil.conf」にある Listen: ブロックを修正します。
たとえば、外部からの接続を受け入れるよう設定されたノードは、次のようになります。
[...]
# Listen addresses for incoming connections. You will need to add
# listeners in order to accept incoming peerings from non-local nodes.
# Multicast peer discovery will work regardless of any listeners set
# here. Each listener should be specified in URI format as above, e.g.
# tls://0.0.0.0:0 or tls://[::]:0 to listen on all interfaces.
Listen: [
tls://your.ipv4.address.here:12345
tcp://[your:ipv6:address:here]:12345
]
[...]
この例では、ポート12345でIPv4とIPv6の両方からの着信接続を受け入れるように設定しています。さらに、IPv4接続はTLSで保護され、IPv6は非暗号化のTCPを使用しています。
設定後は、Yggdrasilサービスを有効化して起動し、変更を適用します。以降のこのノードへの接続方法は、公開ノードへの接続と同じ手順です。
アドレスの確認とアクセス制限
デフォルトでは、新しく作成したYggdrasilノードは、正しいポートを使用している限り、あらゆる着信接続を受け入れます。マシン群のための本格的なプライベートVPNを作るには、許可するマシンを公開鍵のホワイトリストに登録する必要があります。
Yggdrasilノードは、初回インストール時に自動生成された一意の公開鍵をブロードキャストすることで動作します。この鍵は、ネットワーク内でのセキュリティ確保と、ノードアドレスの生成に使用されます。
以下のコマンドで、自分のYggdrasilアドレスを確認できます。
sudo yggdrasilctl getself
これにより、「20x: …」で始まるIPv6アドレスが表示されます。このアドレスを使えば、Yggdrasil経由でそのマシンに直接接続できます。
さらに、getselfコマンドはマシンの公開鍵も表示します。これが、公開ノード側で許可するマシンのリストを作成する際に必要となる情報です。
アクセスを制限するためのノード設定
Yggdrasilノードへのアクセスを制限するには、公開ノードの「/etc/yggdrasil.conf」にある AllowedPublicKeys: ブロックを編集します。このノードに受け入れさせたい公開鍵をすべて追加するだけです。
たとえば、3つの公開鍵のみを受け入れるノードの設定は、次のとおりです。
# List of peer public keys to allow incoming peering connections
# from. If left empty/undefined then all connections will be allowed
# by default. This does not affect outgoing peerings, nor does it
# affect link-local peers discovered via multicast.
AllowedPublicKeys: [
"publickey1"
"publickey2"
"publickey3"
]
設定が完了したら、Yggdrasilサービスを再起動して変更を適用します。
sudo systemctl restart yggdrasil
おめでとうございます!これでYggdrasilネットワークの基本的な仕組みと、プライベートネットワークの接続・設定方法の基礎を習得できました。
インターネットの仕組みについてさらに興味が湧いた方は、tcpdumpを使ったTCPパケットのキャプチャ方法を解説した記事もぜひチェックしてみてください。
よくある質問
1. 友人のYggdrasilアドレスを設定ファイルに追加しましたが、接続できません。何が問題なのでしょうか?
この問題にはいくつかの原因が考えられますが、最も一般的なものは以下の2つです。
- 両方のマシンがNATの内側にあり、直接接続を確立できない
- 「/etc/yggdrasil.conf」の
Peers:ブロックとListen:ブロックの設定が誤っている
前者の場合、少なくとも1台のマシンが外部からアクセス可能であることを確認してください。また、使用しているポートが適切にポートフォワーディングされ、ローカルネットワークの外から到達できることも確認が必要です。
後者の場合、Peers: と Listen: ブロックに、ピアリング先マシンの実際のIPv4またはIPv6アドレスが記載されているか確認してください。Yggdrasilアドレスではなく、実アドレスを指定する必要があります。
2. マシン同士が正しくピアリングされているか確認する方法は?
以下のコマンドを実行すれば、マシン同士が正しくピアリングされているかを簡単に確認できます。
sudo yggdrasilctl getpeers
このコマンドにより、現在接続されているすべてのピアと、それぞれのYggdrasilネットワークツリー内での相対的な位置が表示されます。
3. より強力なYggdrasilキーとアドレスを作成することは可能ですか?
はい、可能です!アドレスマイナーと呼ばれるツールを使えば実現できます。これは、先頭に一定数のゼロが並ぶ公開鍵ペアを総当たりで計算するシンプルなプログラムです。
最も広く使われているのはSimple Yggdrasil Generator(SYG)で、最新版はC++で実装されています。
-
「ドライブがオフライン」と表示される原因と解決方法
この記事では、iBoysoft Data Recovery for Macを使用してストレージデバイスのスキャンやデータ復元を行う際に表示される「ドライブがオフライン(The drive is offline)」というポップアップの意味について解説します。あわせて、ドライブをオンライン状態に戻すための実用的な対処法もご紹介します。目次:1. オフラインディスクとは?2. ドライブがオフラインになる問題の解決方法オフラインディスクとは?「ドライブがオフライン」は、iBoysoft Data Recovery for Macを使ってストレージデバイスから失われたデータをスキャンしているとき、または
-
攻撃対象領域(アタックサーフェス)とは?サイバー攻撃のリスクを最小限に抑える方法
ハッカーがあなたのネットワークに侵入してデータを盗むために使えるすべての経路や手法の総数を「攻撃対象領域(アタックサーフェス)」と呼びます。この領域は可能な限り小さく保つことが極めて重要です。ハッカーにとって攻略すべき侵入経路が少なければ、彼らは早々に諦めて、より脆弱な標的へと移っていくからです。一般的な攻撃対象領域は「デジタル」と「物理」の2種類に分けられます。 攻撃対象領域とは何か デジタル攻撃対象領域:ソフトウェア、ウェブサイト、サーバーなど、企業や組織のシステムにデジタル的に接続できるあらゆるものに関わる脅威を指します。例えば、フィッシングメールによるインターネット経由の潜在的なリス