Runetale Logo

アーキテクチャー

Runetaleでは、OktaやMicrosoft Active Directory、Google WorkspacesなどのIdPに紐づく、ユーザー専用のVPN環境を構築することができます。例えば、ACME株式会社でRunetaleを利用する場合、@acme.comのドメイン(Eメールアドレス)でログインを行うと、自動的に企業専用のネットワークが立ち上がります。

ログイン後は、Runetaleが管理・運用するUser Management Serverで認証され、自動的にメッシュネットワークを構築します。

Runetaleクライアント

Runetaleのクライアントはデバイスやサーバーなどの通信元・通信先にインストールする、エージェントアプリケーションです。
クライアントアプリをインストールできない環境 (例: AWS Private VPC、プリンター、IoTデバイス) では、通信をリレーする機能を利用することで、サブネット配下への通信を実現します。

Runetaleクライアントは、ユーザー側デバイスに常駐するアプリとして、大きく3つの役割を担っています。

  • デバイスの登録と認証のリクエスト

    デバイスにインストールしたRunetaleクライアントから、SSOもしくはCLIによるログインを実行します。
    この際、各デバイスとSSOログイン情報 (ドメイン) の紐付けと・認証を、User Management Serverで処理しています。

  • WireGuardの秘密鍵と公開鍵を生成

    通信プロトコルWireGuardを利用したpeer-to-peerなネットワーキングに必要な、公開鍵・秘密鍵の生成を実行します。 WireGuardでは、Cryptokey Routingと呼ばれています。生成した公開鍵は、初回のSSOログインと同時にUser Management Serverへ送信され、メタデータの自動配布を実現します。(秘密鍵は常にデバイスから離れず管理されています

  • ノードのメタデータ受け取り・管理

    各デバイス・サーバーは認証されたノードの公開鍵とIPアドレスを持つデバイスのリストを受け取ります。以下はその一例で、PeerはRunetale上におけるノードを示しています。 また、認証時に生成されるドメインに紐づくPrivete IPアドレスも同じタイミングでnodeメタデータの一部として付与しています。

    [Peer]
    PublicKey = HIgo9xNzJMWLKASShiTqIybxZ0U3wGLiUeJ1PKf8ykw=
    Endpoint = 192.95.5.69:51820

User Management Server

User Management Serverは、ユーザーの認証やアクセス権限、WireGuard公開鍵の自動配布を実現するサーバーです。OSS版WireGuardでは手動での更新が必須ですが、Runetaleではあらゆる設定情報の管理を自動化しています。

制限機能について

一部機能はお問い合わせいただいた企業様向けに、クローズドβ版としてご提供しています。 User Management Serveの役割である、NodeをDNSで管理するための機能や、WireGuardのキーローテーション自動化なども制限機能に該当します。

Nodeがパケットを受け入れるためには、お互いの公開鍵等のメタデータを事前に共有している必要があります。クライアント側で鍵を生成後、リアルタイムに該当情報を他のnodeに共有しない限り、通信可能な相手を見つけることができません。

そのため、User Management Serverは複数のノードが同時にメタデータ(公開鍵やIPアドレスなどの、ノードを識別するための情報)の共有を自動化するための役割を担っています。(メタデータの処理のみを担っているので、トラフィックは常にpeer-to-peerです)。

  • WireGuard公開鍵の管理と自動配布

    Runetaleクライアントで生成され、SSOアカウントやCLIを通してドメインと紐づいたデバイス・サーバーの、WireGuard公開鍵の配布自動化を実現します。自動化されることで、各nodeは常に最新のメッシュネットワーク環境を維持することが可能です。

WireGuard公開鍵はUser Management Server上で共有管理されますが、パケット解読に必須となる秘密鍵はローカル環境から離れることはありません。

  • メタデータの管理・自動配布

    各nodeに紐づく、ネットワーク構築に関わるメタデータ(IPアドレスやPort番号など)を一元管理・自動配布しています。どのnodeが他のnodeにアクセス権を持っているかなどのACLs情報も、同様に管理・自動化されています。

プライベートIPアドレスについて

同じドメインのユーザー・リソースのみで構成される、プライベートなネットワークです。Carrier Grade NATを利用しています。

Signal Server

ネットワーク(Runet)に参加するデバイス・サーバーが、P2P接続を確立しハンドシェイクするための仲介者(ストリーミングサーバー)として機能しています。

各AgentからのSignal Serverに対する通信はP2Pで暗号化されており、トラフィックデータの管理等は一切行いません。 P2P接続状態が確立されれば、Signal Serverはストリーム接続(2つのnode間をP2P状態にさせるための通信)を切断します。

Relay Server

Relay Serverは、ネットワーク環境によってP2P接続が確立できない際にトラフィックをリレーする役割を担っています。 WebRTCのTURNサーバーと同じ機能で、通信がRunetaleのサーバーを経由し通信先にパケットを届けます。

この場合、厳密にはP2PではなくHub-and-Spoke型での通信となっていますが、秘密鍵は常にローカルで管理されているためパケットの解読は不可能となっています。

NAT越え

Relay Serverは、多くの場合NAT(Network Address Translation)が介在するケースに利用されます。 例えば、カフェや空港のFree WiFiなどユーザー自身でネットワークを管理していないケースなど、P2Pで通信が確立できないケースが生じる可能性があります。

Last updated on

On this page