WireGuardとは

WireGuardは、シンプルさとスピードを重視して設計された最新の高性能VPNプロトコルです。OpenVPNやIPsecなどの古いプロトコルと異なり、WireGuardは最先端の暗号化技術(鍵交換にはCurve25519、暗号化にはChaCha20、認証にはPoly1305を使用)を採用し、わずか約4,000行のコードで動作します。これは従来のソリューションの数十万行と比べて圧倒的に少なくなっています。このシンプルな設計により、監査が容易になり、接続確立が高速化され、Wi-Fiとモバイルデータのようなネットワーク変更時の信頼性が向上します。

WireGuardは、サーバーと1つ以上のクライアント間に暗号化されたポイント・ツー・ポイントトンネルを作成することで動作します。各側は秘密鍵を保持し、ピアの公開鍵を知っています。設定後、トラフィックはトンネルを通じてシームレスに流れ、プロトコルがハンドシェイク、鍵ローテーション、キープアライブパケットを自動的に処理します。

ツールの説明

このツールは、サーバー側とクライアント側の両方で使用可能なWireGuard設定ファイルを生成します。暗号学的に有効なX25519鍵ペアを自動生成し、適切にフォーマットされた.confファイルを作成し、単一のインターフェースから複数のクライアントを管理できます。各設定ファイルを直接ダウンロードするか、QRコードをスキャンしてモバイルデバイスを素早くセットアップできます。

サーバー設定の出力:

[Interface]
PrivateKey = aGVsbG93b3JsZC4uLi4uLi4uLi4uLi4uLi4uLi4=
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
SaveConfig = true

[Peer]
PublicKey = Y2xpZW50cHVibGlja2V5Li4uLi4uLi4uLi4uLi4=
AllowedIPs = 10.0.0.2/32

クライアント設定の出力:

[Interface]
PrivateKey = Y2xpZW50cHJpdmF0ZWtleS4uLi4uLi4uLi4uLi4=
Address = 10.0.0.2/32
DNS = 1.1.1.1, 1.0.0.1

[Peer]
PublicKey = c2VydmVycHVibGlja2V5Li4uLi4uLi4uLi4uLi4=
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

機能

  • Curve25519を使用してブラウザ内で直接、暗号学的に有効なX25519鍵ペアを生成
  • サーバーとすべてのクライアント用のダウンロード可能な.confファイルを生成
  • クライアント設定のQRコードを表示し、モバイルデバイスの即座なセットアップを実現
  • 複数のクライアントをサポートし、自動的にIPアドレスを割り当て
  • クライアントごとに設定可能なMTU、PostUp/PostDownフック、DNS、PersistentKeepalive

オプションの説明

  • サーバー名 — 設定ファイルのコメントとダウンロードファイル名に使用されるラベル
  • サーバーポート — WireGuardがリッスンするUDPポート(デフォルト: 51820)
  • サーバーIPアドレス — サーバーインターフェース用のVPNサブネットアドレス(例: 10.0.0.1/24)
  • サーバーエンドポイント — クライアントが接続する公開ホスト名またはIPとポート
  • MTU — 最大転送ユニットサイズ。空のままにするとシステムデフォルト(通常1420)を使用
  • PostUp / PostDown — インターフェースが起動または停止されるときに実行されるshellコマンド(一般的にiptables NATルールに使用)
  • 許可されたIP — クライアントがトンネルを通じてルーティングするIPレンジ。0.0.0.0/0, ::/0はすべてのトラフィックをルーティング
  • DNS — 接続中にクライアントが使用するDNSサーバー
  • PersistentKeepalive — キープアライブパケットの間隔(秒単位)。NATの背後にあるクライアントに便利(デフォルト: 25)

ユースケース

  • ラップトップとスマートフォンからのすべてのトラフィックを暗号化するため、クラウドインスタンス上に自己ホスト型VPNサーバーをセットアップ
  • セキュアなサイト間WireGuardトンネルを通じてリモートオフィスネットワークを接続
  • チームメンバーやモバイルデバイスを素早くオンボーディングするためのQRコード付きクライアント設定を生成