SDL logoSDL

ドキュメント

Linux、macOS、Windows で SDL をインストールし、デバイスを認証し、接続状態を確認するためのガイドです。

Overview

SDL (Software Defined LAN) は、WAN、インターネット、NAT をまたいだ複数のマシンを、ひとつのオーバーレイ LAN として接続します。中央の コントロールプレーン がデバイス認証と仮想 IP の割り当てを行い、データ通信は独立した ゲートウェイ インスタンスで中継されます。これにより、制御面とデータ面を分離してスケールできます。

リリースパッケージには、各マシンで使う 2 つのバイナリが含まれます。

  • sdl-service は常駐するローカルサービスです。TUN インターフェイス、コントロール接続、P2P とリレー経路、ローカルコマンドソケットを管理します。
  • sdl は CLI フロントエンドです。ローカルソケット経由で sdl-service と通信し、status、auth、gateway 選択、rename、suspend、resume などを実行します。

sdl-service は仮想ネットワークインターフェイスを作成するため、インストールとサービス管理には管理者権限または root 権限が必要です。日常的な CLI 操作、たとえば sdl statussdl list には通常管理者権限は不要です。

Getting Started

新しいユーザーが SDL ネットワークへ参加する最短手順です。

  1. SDL をダウンロードします。 ダウンロードページ を開き、利用するプラットフォームのリリースアーカイブを選択します。
  2. ローカルサービスをインストールします。 アーカイブを展開し、OS 用のインストーラを実行します。Linux と macOS は sudo ./install.sh、Windows は管理者 PowerShell から .\install.ps1 を実行します。
  3. この Web サイトにサインインします。 Google または Microsoft で登録またはログインし、ダッシュボード を開きます。
  4. 認証チケットを生成します。 Generate auth ticket をクリックします。チケットは短時間で失効するため、デバイスを認証する直前に生成してください。
  5. デバイスを認証します。 ダッシュボードに表示されるコマンドをコピーするか、ローカルで sdl auth --userId <user-id> <ticket> を実行します。
  6. 状態を確認します。 sdl status を実行します。正常なデバイスでは、ローカルサービス、認証状態、仮想 IP、ゲートウェイ状態が表示されます。機械処理しやすい出力が必要な場合は sdl status --json を使います。

sdl statusauth_pending のままの場合は、新しいチケットを発行して sdl auth を再実行してください。サービスが起動していない場合は、利用 OS のサービス管理ツールで sdl-service を再起動してください。

System Requirements

SDL のリリースパッケージは、次のプラットフォーム向けにビルドされています。その他の環境はソースからビルドできる可能性がありますが、現在公開している公式リリース対象には含まれません。

プラットフォーム 公式リリースターゲット 対応 OS バージョン 必要な OS 機能 権限 実行時依存
Linux x86_64 x86_64-unknown-linux-musl systemd ベースの x86_64 ディストリビューション。Ubuntu 20.04/22.04/24.04、Debian 11/12、Rocky Linux / AlmaLinux / RHEL 8 または 9、Fedora 38 以降、openSUSE Leap 15.x、Arch Linux など Linux kernel の TUN サポート (/dev/net/tun)、systemd/run/systemd/systemsystemctl/bin/sh、iproute2 の ip コマンド。従来の route コマンドはフォールバックとしてのみ使用されます。 インストール、サービス登録、TUN 作成、ルート変更には sudo による root 権限が必要 公式パッケージは musl static build のため glibc 要件はありません。
macOS Apple Silicon aarch64-apple-darwin Apple Silicon 上の macOS 12 Monterey 以降を想定しています。macOS 13 Ventura、14 Sonoma、15 Sequoia で動作する想定です。 launchd / launchctl、組み込み utun サポート、/bin/sh、システムの route コマンド インストール、LaunchDaemon 登録、utun 設定、ルート変更には sudo による root 権限が必要 追加のサードパーティ実行時依存はありません。Intel macOS 向け公式リリース成果物は現在公開していません。
Windows x86_64 x86_64-pc-windows-msvc Windows 10 1809 以降、Windows 11 21H2 以降、Windows Server 2016 / 2019 / 2022 / 2025 Windows Service Control Manager、install.ps1 実行用の PowerShell 5.1 以降、cmd.exe、IPv4 ルート管理 インストール、サービス登録、Wintun ドライバ利用、ルート変更には Administrator 権限が必要。インストール後の日常的な sdl CLI 操作は通常ユーザーで実行できます。 wintun.dll はリリース zip に同梱され、実行ファイルと同じ場所にインストールされます。

Linux に関する注意:

  • インストーラは non-systemd ホストを明示的に拒否します。コンテナ、WSL、OpenRC ベースのディストリビューション、/run/systemd/system のない最小イメージは install.sh の対象外です。
  • 公式 Linux 成果物は x86_64 のみです。ARM64 Linux は将来のソースビルド対象として扱えますが、現在のリリースワークフローでは公開していません。
  • サービスはデフォルトで sdl-tun という TUN デバイスを作成し、ip route replace でルートを設定します。既存のローカルルートと SDL 仮想ルートが衝突する可能性はあります。

Windows に関する注意:

  • インストーラは管理者 PowerShell が必要です。これはネイティブ Windows サービスの登録、C:\Program Files\SDL への書き込み、wintun.dll の配置、machine PATH の設定を行うためです。
  • 32-bit Windows と Windows on ARM は現在のリリースパッケージではサポートしていません。
  • Windows 7/8/8.1 は現在のインストーラおよびリリースポリシーの対象外です。

ネットワークとディスク:

  • コントロールプレーンへの outbound HTTPS。デフォルトは https://control.middlescale.net/control です。
  • コントロールプレーンが選択するゲートウェイポリシーとローカルネットワーク状況に応じて、SDL ゲートウェイリレーへの UDP、QUIC、または HTTPS アクセスが必要です。
  • バイナリ、identity file、profile、ローテーションログ用に数 MB 程度のディスク容量が必要です。

Download

ダウンロードページ からプラットフォームに合うリリースアーカイブを取得してください。各アーカイブには次のファイルが含まれます。

  • Linux / macOS: sdl, sdl-service, install.sh, README.txt
  • Windows: sdl.exe, sdl-service.exe, wintun.dll, install.ps1, README.txt

Install on Linux

展開したリリースフォルダで次を実行します。

sudo ./install.sh

インストーラは sdlsdl-service/opt/sdl にコピーし、/usr/local/bin にシンボリックリンクを作成します。また /opt/sdl/env に永続的なデバイス ID を生成し、すぐに起動する sdl-service という systemd unit を登録します。

インストール後の構成:

/opt/sdl/
  sdl
  sdl-service
  env/                         # マシン ID と永続サービス状態
    config.json                # アクティブプロファイル、またはマルチユーザー時の active_user_id ポインタ
    device-id                  # マシン ID
    device.key                 # マシンの秘密 ID キー
    service-state.json         # CLI 用のサービス、認証、実行時状態
    command.sock               # ローカル CLI からサービスへのソケット。実行時に作成されます
    service.lock               # ローカルサービスロック。実行時に作成されます
  profiles/                    # sdl switch で使う保存済みプロファイル
    hxm.json
    sdl-cdba6d9b6ebb53ca.json
    ent-acme-admin.json
  log/
    sdl-service.log            # macOS のローテーションログ。Linux は通常 journald を使います

profiles ディレクトリには SDL ユーザーごとの保存済みプロファイルが入ります。env/config.json には、古い単一ユーザー構成のアクティブプロファイル、またはマルチユーザー構成の active_user_id ポインタが入ります。sdl switch --userId <user-id> はアクティブユーザーを切り替え、sdl-serviceprofiles/ 配下の該当ファイルを読み込ませます。アップグレード時にデバイス ID と保存済みプロファイルを維持したい場合は、envprofiles の両方を保持してください。

systemd でサービスを管理します。

systemctl status sdl-service
systemctl restart sdl-service
journalctl -u sdl-service -f

Install on macOS

macOS でも同じ install.sh を使います。インストーラがプラットフォームを検出し、systemd unit の代わりに launchd plist を作成します。

sudo ./install.sh

サービスラベルは net.middlescale.sdl-service で、KeepAlive により自動維持されます。管理には launchctl を使います。

sudo launchctl kickstart -k system/net.middlescale.sdl-service
sudo launchctl bootout system /Library/LaunchDaemons/net.middlescale.sdl-service.plist

バイナリは Linux と同じく /opt/sdl に配置され、/usr/local/bin へシンボリックリンクされます。

Install on Windows

リリースアーカイブを展開し、PowerShell を右クリックして Run as Administrator を選択します。展開したフォルダで次を実行します。

.\install.ps1

インストーラは sdl.exesdl-service.exewintun.dllC:\Program Files\SDL にコピーし、env\log\ を作成します。また永続的なデバイス ID を生成し、sdl-service という Windows サービスを登録します。サービスは遅延自動起動で、失敗時に再起動されます。インストールディレクトリはマシン PATH に追加されます。

インストール後の構成:

C:\Program Files\SDL\
  sdl.exe
  sdl-service.exe
  wintun.dll
  env\                         # マシン ID と永続サービス状態
    config.json                # アクティブプロファイル、またはマルチユーザー時の active_user_id ポインタ
    device-id                  # マシン ID
    device.key                 # マシンの秘密 ID キー
    service-state.json         # CLI 用のサービス、認証、実行時状態
  profiles\                    # sdl switch で使う保存済みプロファイル
    hxm.json
    sdl-cdba6d9b6ebb53ca.json
    ent-acme-admin.json
  log\
    sdl-service.log            # ローテーションサービスログ

env\ は共有ディレクトリです。通常ユーザーは sdl statussdl auth などを実行できるように読み取りとトラバース権限を持ちます。一方、秘密鍵 device.key は SYSTEM と Administrators に制限されます。共有設定や状態への書き込みは、昇格済みサービスのローカルコマンドソケット経由で行われます。

サービス管理:

Get-Service sdl-service
Restart-Service sdl-service
Stop-Service sdl-service
Start-Service sdl-service

Common Commands

sdl status              # ローカルサービス、認証、ネットワーク、経路、ゲートウェイ状態
sdl status --json       # 機械処理向け。auth_pending / last_error を含みます
sdl list                # ピアと到達性
sdl gateway --json      # ゲートウェイ候補とアクティブ選択
sdl gateway --set auto  # ゲートウェイ選択を自動に戻す
sdl gateway --set <name> # 特定ゲートウェイに固定
sdl route --json        # 現在の転送経路
sdl channel_change --type relay   # リレーチャネルを強制
sdl channel_change --json
sdl rename <new-name>   # 表示名を更新。ローカル反映には sdl-service の再起動が必要です
sdl suspend             # サービスを終了せずにトラフィック処理を一時停止
sdl resume              # 既存ランタイムを再開、または保存設定から再作成

Logs

ログの保存先はプラットフォームごとに異なります。

  • Linux: sdl-service は stderr に出力し、journald が取得します: journalctl -u sdl-service -f
  • macOS: /opt/sdl/log/sdl-service.log にローテーションログを出力します (10 MB x 5 世代)。
  • Windows: C:\Program Files\SDL\log\sdl-service.log にローテーションログを出力します (10 MB x 5 世代)。

デフォルトレベルは info です。RUST_LOG 環境変数で上書きできます。Linux/macOS ではサービス環境に設定し、Windows では HKLM\SYSTEM\CurrentControlSet\Services\sdl-service\EnvironmentMultiString 値でサービス環境を設定します。バイナリの隣に任意の log4rs.yaml を置くと、全プラットフォームで組み込みログ設定より優先されます。

Uninstall

Linux

sudo systemctl disable --now sdl-service
sudo rm /etc/systemd/system/sdl-service.service
sudo systemctl daemon-reload
sudo rm -rf /opt/sdl /usr/local/bin/sdl /usr/local/bin/sdl-service

macOS

sudo launchctl bootout system /Library/LaunchDaemons/net.middlescale.sdl-service.plist
sudo rm /Library/LaunchDaemons/net.middlescale.sdl-service.plist
sudo rm -rf /opt/sdl /usr/local/bin/sdl /usr/local/bin/sdl-service

Windows

管理者 PowerShell で、展開したリリースフォルダから次を実行します。

.\install.ps1 -Uninstall

これによりサービスを停止して削除し、インストールディレクトリを削除し、マシン PATH からインストールディレクトリを外します。