なぜ自分でWireGuard VPNを運用するのか
商用VPNを利用するということは、監査できない企業を信頼することを意味します。料金を支払い、すべてのトラフィックをその会社のサーバー経由で流し、「ログを保持しない」という言葉を信じるしかありません。セルフホスト型VPNはそれを逆転させます。サーバーをレンタルし、VPNを自分でインストールすれば、あなたのトラフィックを見られるのはあなた自身だけです。間に介在するプロバイダーはなく、ログを記録したり、販売したり、令状に応じて提供したりする相手も存在しません。
WireGuardはこれを現実的にするプロトコルです。小規模で高速かつシンプルなモダンなVPNプロトコルであり、旧来のスタックが数十万行のコードを持つのに対し、WireGuardは数千行しかありません。これにより監査が容易で、設定ミスが起きにくい構造になっています。控えめなスペックのVPSでも、CPU負荷をほとんどかけずに回線帯域を使い切ることができます。KYCなし・オフショアVPSと組み合わせれば、セルフホストのWireGuardトンネルはあなただけに属するプライベートな出口ポイントを実現します。このガイドではそれをゼロから構築します。

必要なもの
セットアップに必要なのはサーバー1台と約15分だけです。
- VPS。最小プランで十分です — WireGuardは非常に軽量です。トラフィックを出口とする国・地域を選択してください。フルrootアクセス付きのServPrivacy VPS(月額$7.50〜)で十分すぎるほどです。
- 新しくインストールしたLinux。最近のDebianまたはUbuntuであれば問題ありません。以下のコマンドはそれらを前提としています。他のディストリビューションではパッケージのインストール手順のみ異なります。
- rootまたはsudoアクセス権とコマンドラインでの数分の作業。
ドメイン、コントロールパネル、サードパーティのVPNソフトウェアは一切不要です。WireGuardはモダンなLinuxカーネル自体に組み込まれています。
ステップ1 — サーバーにWireGuardをインストールする
SSH経由でVPSに接続し、WireGuardツールをインストールします。DebianまたはUbuntuであれば、コマンドは1行です: apt update && apt install -y wireguard。カーネルモジュールはモダンなカーネルに既に含まれているため、インストールされるのはトンネル管理に使うユーザースペースツール — wg と wg-quick — のみです。
インストールはこれだけです。設定が必要な別デーモンも、作成が必要なアカウントも、通常のシステムアップデート以外に個別にパッチを当てるものも何もありません。
ステップ2 — 鍵を生成してサーバー設定を記述する
WireGuardは公開鍵暗号でピアを認証するため、まずサーバー用の鍵ペアを作成します。wg genkey | tee server_private.key | wg pubkey > server_public.key で生成します。秘密鍵はサーバーに保持し、外部には共有しません。公開鍵は各クライアントに渡します。
次に、/etc/wireguard/wg0.conf にトンネル設定を作成します。サーバーセクションでは、トンネルのプライベートアドレス範囲、WireGuardがリッスンするポート(デフォルトは51820)、およびサーバーの秘密鍵を定義します。後から接続するデバイスはそれぞれ、クライアントの公開鍵とトンネル内のアドレスを含む [Peer] ブロックとして追加します。サーバーの秘密鍵が含まれるため、ファイルはrootのみが読めるように設定してください。
設定は意図的に短くなっています。動作するサーバー設定は20行にも満たないため、WireGuardは致命的な設定ミスが起きにくい構造になっています。
ステップ3 — フォワーディングを有効にしてポートを開放する
VPNがトラフィックをインターネットへルーティングするには、サーバーがパケットを転送する必要があります。/etc/sysctl.conf に net.ipv4.ip_forward=1 を設定し、sysctl -p で適用してIPフォワーディングを有効にします。また、トンネル設定にはアウトバウンドトラフィックをマスカレードするファイアウォールルールが必要で、サーバー自身のアドレスで送出されるようにします。これは通常 wg0.conf の PostUp 行として追加され、トンネル起動時に自動的に適用されます。
続いて、WireGuardのポートが外部から到達可能であることを確認します。VPSでファイアウォールが動作している場合、選択したポート(デフォルトは51820)でUDPを許可してください。WireGuardはUDPのみを使用し、送信されていないパケットには一切応答しないため、ポートスキャンでもサービスの存在を確認できません。これはプライバシー上の利点でもあります。
wg-quick up wg0 でトンネルを起動し、systemctl enable [redacted-user]@[redacted-host] でブート時の自動起動を有効にします。サーバー側の設定はこれで完了です。
ステップ4 — クライアントを追加して接続する
VPNを使用するデバイス(ノートPC、スマートフォンなど)にはそれぞれ独自の鍵ペアと小さなクライアント設定が必要です。サーバーと同様にクライアント用の鍵ペアを生成し、クライアントの秘密鍵、トンネルアドレス、サーバーの公開鍵、サーバーのパブリックIPとポートを Endpoint として含むクライアント設定を記述します。また、AllowedIPs に [redacted-ip]/0 を設定してすべてのトラフィックがトンネル経由となるようにします。
サーバーの wg0.conf にクライアントの公開鍵を含む対応する [Peer] ブロックを追加してリロードします。クライアント側では、WireGuardアプリ(すべてのデスクトップおよびモバイルプラットフォーム対応)をインストールし、設定をインポートします。多くのアプリはQRコードに対応しており、スマートフォンへの取り込みが最も簡単です。トンネルをオンにすれば、数秒以内にデバイスのトラフィックがVPS経由で送出されます。パブリックIPアドレスを確認してみましょう。サーバーのIPアドレスに変わっているはずです。
ステップ5 — 堅牢化とメンテナンス
トンネルが動作すれば作業の大半は完了ですが、仕上げとしていくつかの対策を施すと安心です。
- SSHを強化する。鍵認証でログインし、パスワード認証を無効にして、SSHをポート22から移動することも検討してください。VPNのプライバシーはそれが動くサーバーのセキュリティに依存します。
- システムを最新に保つ。WireGuard自体はほとんど手がかかりませんが、基盤となるOSにはセキュリティアップデートを適用してください。自動アップデートを有効にしましょう。
- デバイスごとに個別の鍵ペアを使う。クライアント設定を複数のデバイスで共有しないでください。デバイスを紛失した場合、そのデバイスの
[Peer]ブロックだけを削除すれば済み、すべての鍵を再生成する必要がありません。 - クライアント設定でDNSを設定する。プライバシーに配慮したリゾルバを指定し、DNSクエリもトンネル経由で送信されるようにしましょう。ローカルネットワークへのDNSリークを防げます。
- ログについてはデフォルトを信頼する。WireGuardは通過するトラフィックについて何も記録しません。通過するデータについてのログは一切存在しないため、無効にするものも特にありません。
このように管理すれば、サーバーはほぼ手がかかりません。WireGuardは一度設定すれば放置できるに近い存在です。
セルフホスト型VPNが最適な選択となる場面
セルフホストのWireGuard VPNは、自分だけが管理するプライベートな出口ポイントを求めるときに最適な選択肢です。信頼できないネットワーク上での接続を保護する場合、ISPへのブラウジング履歴を隠す場合、または特定の国や地域から接続しているように見せたい場合などが挙げられます。あなた自身のサーバーであるため、数千人の他人と共有するIPアドレスも、信頼に基づくプロバイダーのログポリシーも存在しません。
一点だけ明確にしておく価値があります。単一サーバーのVPNは、ISPや訪問先サイトからプライバシーを守りますが、VPSプロバイダーは原理的にはトラフィックを観察できます。だからこそホストの選択が重要なのです。KYCなし・ノーログ・オフショアのVPSは、IDを収集せず記録も保持しないプロバイダーが出口ポイントを運営することを意味します。セルフホストのWireGuardと適切なVPSの組み合わせは、ほとんどの人にとって最も誠実なプライバシー構成です。自分がコントロールするインフラ以外への信頼は不要です。