Windows向けのセキュアなWireGuardクライアントです。Tauri v2 + Rust + React で実装されており、秘密鍵をディスクに平文で保存しないことと、秘密鍵を画面に表示しないことを特徴としています。
- 秘密鍵の平文保存なし — 秘密鍵は Windows DPAPI で暗号化してレジストリに保存されます
- メモリ内処理 — 接続時、秘密鍵はRustのヒープ上で復号されてカーネルドライバーに渡すのみ。設定ファイルへの書き出しは行いません
- wireguard-nt利用 — wireguard-nt のカーネルモードドライバーを直接呼び出すことで、WireGuard for Windowsのサービスに依存しません
- DLL署名検証 — WireGuard for Windowsがインストールした公式の署名済みDLLのみを読み込みます(
WinVerifyTrustによるAuthenticode検証) - 自動再接続 — セッションが期限切れになると自動的に再接続を試みます(ユーザーが「切断」ボタンを押した場合を除く)
- セッション監視UI — ハンドシェイクの経過時間・送受信バイト数をリアルタイム表示。セッションが古くなると警告を表示します
| 項目 | 要件 |
|---|---|
| OS | Windows 10 21H1 以降 (x64) |
| 権限 | 管理者権限 (wireguard.sys のインストールに必要) |
| ランタイム | Microsoft Visual C++ 再頒布可能パッケージ 2022 |
| 前提ソフト | WireGuard for Windows のインストール |
なぜ WireGuard for Windows が必要なのか
SWGCは
C:\Program Files\WireGuard\wireguard.dllを使用します。このDLLは WireGuard for Windowsのインストーラーが配置するもので、WireGuard LLCによって コード署名されています。SWGCはDLL読み込み時にWinVerifyTrustで署名を検証し、 未署名または改ざんされたDLLは拒否します。このリポジトリにDLLを同梱しないのは、第三者が配布するバイナリへの不信感を 避けるためです。公式インストーラーから入手することを強く推奨します。
ビルド済みの配布バイナリはありません。ソースからビルドして実行してください。
| ソフト | 用途 |
|---|---|
| WireGuard for Windows | wireguard.dll の取得(接続に必須) |
| Rust (stable) | Rustバックエンドのビルド |
| Node.js 18以上 | フロントエンドのビルド |
| Tauri 前提条件 | WebView2・Visual Studio Build Tools |
WireGuard for Windows のトンネル機能自体は使用しません。
wireguard.dllをC:\Program Files\WireGuard\に配置するためにインストールします。
管理者権限のPowerShellで実行してください。
git clone https://github.com/gtms-code/swgc.git
cd swgc
npm install
npm run tauri buildビルドが完了すると以下にexeが生成されます:
src-tauri\target\release\swgc.exe
src-tauri\target\release\swgc.exeを管理者として実行。- 「設定をインポート (.conf)」 ボタンから WireGuard 設定ファイルを選択。その際に、任意のパスコードを設定。
- 「接続」 ボタンをクリック。そして、2.で設定したパスコードを入力。
- ハンドシェイクが確立されると接続時間・TX/RXが表示されます。
ヒント: セキュリティのため、
.confのEndpointには固定IPアドレスの使用を推奨します。
# 開発モードで起動(ホットリロード有効、管理者権限のターミナルで実行)
npm run tauri devsrc/ # React フロントエンド (TypeScript)
App.tsx # メインUI・ステータス表示・自動再接続検出
commands.ts # Tauri IPC ラッパー
src-tauri/src/ # Rust バックエンド
wireguard.rs # WireGuard tunnel管理・DLL署名検証・監視スレッド・自動再接続
wg_nt.rs # wireguard-nt FFI バインディング
config.rs # 設定ファイルのパース・DPAPI暗号化
crypto.rs # DPAPI ラッパー
commands.rs # Tauri コマンドハンドラー
wireguard.dll はこのリポジトリには含まれません。実行時に以下の順で検索します:
C:\Program Files\WireGuard\wireguard.dll(WireGuard for Windows — 推奨)- 実行ファイルと同じフォルダ
C:\Windows\System32\wireguard.dll
各パスのDLLは読み込み前に WinVerifyTrust による署名検証を行います。
.conf ファイル
↓ parse (64KB 上限チェック)
WgConfig (ヒープ上、ZeroizeOnDrop)
↓ DPAPI暗号化
レジストリ (HKCU\...\SWGC)
↓ 接続時にDPAPI復号
WgConfig (ヒープ上)
↓ WireGuardSetConfiguration
wireguard.sys (カーネル)
↓ ZeroizeOnDrop で上書きゼロ化
このソフトウェアは個人利用・学習目的で、Claude Code (Sonnet 4.6)を用いて作成しました。ご利用は自己責任でお願いします。
本プロジェクトのソースコード: GNU General Public License v2.0
wireguard-nt (wireguard.dll) はこのリポジトリには含まれません。実行時に
WireGuard for Windowsが提供するDLLを使用します (Copyright © WireGuard LLC, GPLv2)。
本プロジェクトのソースコードは wireguard-nt と動的リンクして動作するため、
GPLv2 で頒布しています。
