ドキュメント
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 status や sdl list には通常管理者権限は不要です。
Getting Started
新しいユーザーが SDL ネットワークへ参加する最短手順です。
- SDL をダウンロードします。 ダウンロードページ を開き、利用するプラットフォームのリリースアーカイブを選択します。
- ローカルサービスをインストールします。 アーカイブを展開し、OS 用のインストーラを実行します。Linux と macOS は
sudo ./install.sh、Windows は管理者 PowerShell から.\install.ps1を実行します。 - この Web サイトにサインインします。 Google または Microsoft で登録またはログインし、ダッシュボード を開きます。
- 認証チケットを生成します。 Generate auth ticket をクリックします。チケットは短時間で失効するため、デバイスを認証する直前に生成してください。
- デバイスを認証します。 ダッシュボードに表示されるコマンドをコピーするか、ローカルで
sdl auth --userId <user-id> <ticket>を実行します。 - 状態を確認します。
sdl statusを実行します。正常なデバイスでは、ローカルサービス、認証状態、仮想 IP、ゲートウェイ状態が表示されます。機械処理しやすい出力が必要な場合はsdl status --jsonを使います。
sdl status が auth_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/system、systemctl、/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
インストーラは sdl と sdl-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-service に profiles/ 配下の該当ファイルを読み込ませます。アップグレード時にデバイス ID と保存済みプロファイルを維持したい場合は、env と profiles の両方を保持してください。
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.exe、sdl-service.exe、wintun.dll を C:\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 status、sdl 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\Environment の MultiString 値でサービス環境を設定します。バイナリの隣に任意の 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 からインストールディレクトリを外します。
