VPSにWireGuard VPNをセットアップする方法
ApexVPSチーム執筆 • 最終更新:2026年7月 • 9分で読めます
このWireGuard VPSセットアップチュートリアルでは、UbuntuまたはDebianサーバー上に独自のプライベートで高速かつモダンなVPNを構築する方法を示します。WireGuardはLinuxカーネルに組み込まれた軽量なVPNプロトコルであり、OpenVPNやIPsecよりもはるかにシンプルでありながら、強力で最新の暗号化を提供します。最後には、稼働中のサーバーと少なくとも1つの接続されたクライアント、そして自分自身の暗号化トンネルを完全に制御できるようになります。サードパーティのVPNサブスクリプションは不要です。
WireGuardを自分のマシンで実行するということは、トラフィックが混雑したコンシューマーVPNエンドポイントではなく、自分がレンタルしたハードウェアで終端することを意味します。これがなぜプライベートボックスがより良い基盤なのかを詳しく知りたい場合は、始める前に個人VPN用のVPSの選び方に関するガイドを読んでください。
始める前に必要なもの
- WireGuardカーネルモジュールを備えたUbuntu 20.04+ または Debian 11+を実行しているVPS(どちらにも同梱されています)。
- SSH経由のrootまたはsudoアクセス。以下のすべてのコマンドは、
sudoを使用できることを前提としています。 - サーバーのパブリックIPアドレスとデフォルトのネットワークインターフェースの名前。
- UDPポート51820に到達可能であること — WireGuardのデフォルトです。ファイアウォールで開きます。
VPNには安定した競合のないエンドポイントが重要であり、そのため本当に専用のリソースが過剰に販売された共有ホスティングよりも優れています。専用のIPv4アドレスはApexVPSのBusinessおよびEnterpriseプランで利用可能で、トンネルに他の誰とも共有されないアドレスを提供します。
ステップ1: システムを更新してWireGuardをインストールする
パッケージインデックスを更新し、WireGuardユーザースペースツールをインストールすることから始めます。最新のカーネルでは、これが唯一必要なパッケージです。
sudo apt update
sudo apt install wireguard -y
これにより、キー、インターフェース、設定を管理する2つのコマンドであるwgとwg-quickがインストールされます。インストールを確認するにはwg --versionを使用します。
ステップ2: サーバーキーを生成する
WireGuardはSSHと同様に、公開鍵/秘密鍵のペアでピアを認証します。設定ディレクトリに移動し、ファイルのパーミッションをumaskで厳格にし、鍵を一度に生成します。
cd /etc/wireguard
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
umask 077の行により、秘密鍵はrootのみが読み取れるようになります。2つの値を表示して、後続の設定に貼り付けられるようにします。
sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key
秘密鍵は秘密にしてください。それを保持する者は誰でもサーバーになりすますことができます。
ステップ3: サーバー設定(wg0.conf)を作成する
サーバーインターフェースは単一のファイル/etc/wireguard/wg0.confで記述されます。お好みのエディタで作成してください:
sudo nano /etc/wireguard/wg0.conf
以下のブロックを貼り付け、<SERVER_PRIVATE_KEY>をステップ2の秘密鍵に、eth0を実際のインターフェース名に置き換えます(異なる場合)。
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ここで、10.8.0.1/24はプライベートVPNサブネット、51820/udpはリッスンポート、PostUp/PostDownのルールはNATを追加・削除し、クライアントトラフィックがサーバーのパブリックインターフェースを通してマスカレードされるようにします。インターフェース名を見つけるには、次を実行します:
ip route list default
出力のdevの後の単語(多くの場合eth0、ens3またはenp1s0)が、上記の2つのファイアウォール行で使用するインターフェースです。
ステップ4: IPフォワーディングとNATを有効にする
デフォルトでは、Linuxはインターフェース間でパケットをルーティングしないため、カーネルにフォワーディングを指示する必要があります。sysctlのドロップインファイルで永続的に有効にします。
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
また、IPv6をトンネル経由でルーティングする場合は、同じファイルにnet.ipv6.conf.all.forwarding = 1を追加します。ステップ3のMASQUERADEルールがNAT自体を処理するため、フォワーディングが有効になるとルーティングパスが完成します。
ファイアウォールのポートを開く
WireGuard UDPポートを許可します。ufwを使用している場合は、次のコマンドを実行し、SSHを開いたままにして、ロックアウトされないようにしてください。
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable
ufwの代わりにiptablesで直接ルールを管理する場合、PostUpの行がすでにフォワーディングとNATルールを追加しているため、受信UDP 51820がホストファイアウォールまたはプロバイダーのセキュリティグループで許可されていることを確認するだけで済みます。
ステップ5: systemdでWireGuardを起動する
wg-quickにはsystemdサービステンプレートが含まれているため、今すぐトンネルを開始でき、再起動後も自動的に起動します。
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
enable --nowフラグは、インターフェースを起動し、ブート時に起動するように設定します。簡単な動作確認でインターフェースが起動していることを確認します:
sudo wg show
wg0というインターフェースが表示され、公開鍵とリッスンポートが表示されます。まだピアはありません。それは次のステップです。
ステップ6: クライアント(ピア)を追加する
接続する各デバイスは、独自の鍵ペアを持つピアです。最初のクライアントの鍵ペアを生成します:
wg genkey | sudo tee client1_private.key | wg pubkey | sudo tee client1_public.key
次に、サーバーにクライアントを登録します。/etc/wireguard/wg0.confに[Peer]ブロックを追加し、クライアントの公開鍵とVPNサブネットの次の空きアドレスを使用します。
[Peer]
PublicKey = <CLIENT1_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32
インターフェースをリロードして、新しいピアを有効にします:
sudo systemctl restart wg-quick@wg0
トンネルを切断したくないですか?再起動せずにピアをホット追加できます:
sudo wg set wg0 peer <CLIENT1_PUBLIC_KEY> allowed-ips 10.8.0.2/32
ステップ7: クライアント設定とQRコードを作成する
サーバー上で、クライアント設定ファイルを組み立てます。これはデバイス(ラップトップまたは携帯電話)がロードするものです。プレースホルダーをクライアントの秘密鍵とサーバーの公開鍵および公開IPに置き換えます。
[Interface]
PrivateKey = <CLIENT1_PRIVATE_KEY>
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_PUBLIC_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0, ::/0ルートを設定すると、すべてのクライアントトラフィックがトンネルを通過します — 典型的なフルVPN動作です。PersistentKeepalive = 25でNATやファイアウォールを越えた接続が維持されます。これをclient1.confとして保存してください。
デスクトップの場合、client1.confをマシンにコピーし、公式WireGuardクライアントにインポートします。電話の場合、ターミナルでファイルをスキャン可能なQRコードとして直接レンダリングします:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.conf
AndroidまたはiOSでWireGuardアプリを開き、「トンネルを追加」→「QRコードからスキャン」を選択すると、トンネルが数秒でインポートされます。公式アプリとクライアントはすべてwireguard.comからリンクされています。
ステップ8: トンネルを確認する
クライアントでトンネルを有効にし、サーバーでハンドシェイクを確認します。正常な接続では、最近のハンドシェイクと上昇する転送カウンタが表示されます。
sudo wg show
ピアの下にあるlatest handshakeタイムスタンプと非ゼロのtransfer値を探します。最後に、クライアントから自分のパブリックIPがサーバーのIPになっていることを確認します:
curl ifconfig.me
それがVPSアドレスを返す場合、トラフィックはトンネルを流れており、WireGuard VPSのセットアップは完了です。デバイスを追加するには、新しいキーペアと10.8.0.0/24範囲の次のアドレスで手順6と7を繰り返します。
接続が確立しない場合のトラブルシューティング
wg showがハンドシェイクを報告しない場合は、通常の原因を順に確認してください。まず、ポートが実際に開いているか確認します:別のマシンからnc -uzv <SERVER_PUBLIC_IP> 51820を実行し、プロバイダのセキュリティグループまたはファイアウォールがTCPだけでなくUDP 51820の受信を許可しているか確認します。次に、IP転送が実際に有効になっているかsysctl net.ipv4.ip_forwardで確認します。1が返されるはずです。第三に、PostUp NATルールのインターフェース名がip route list defaultの出力と一致するか再確認します。不一致がトラフィックが認証されるのにインターネットに到達しない最も一般的な理由です。最後に、キーが交換されていないか確認します:サーバー設定にはサーバーの秘密鍵とクライアントの公開鍵が含まれ、クライアント設定はその逆を反映します。キーが1つでも間違っていると、ハンドシェイクが静かにブロックされます。
WireGuardに適したVPSの選び方
WireGuard自体は非常に軽量で、プロトコルはCPUにほとんど触れないため、エントリーレベルのプランでも個人用VPNは快適に動作します。実際に体験を左右するのはネットワークです。帯域幅、自分の地域へのレイテンシ、IPが自分専用かどうか。ApexVPSは、39のロケーションで真に専用のvCPU、RAM、NVMeストレージを提供し、主要地域では低レイテンシを実現。ノイジーな隣人に影響されず、スループットは予測可能です。
トンネルを安定した共有されていないアドレスに置きたい場合は、専用IPv4がBusinessおよびEnterpriseプランに含まれています。そして、VPNをセルフホスティングする目的がプライバシーであることが多いため、サインアップ方法に注目する価値があります。ApexVPSはKYC不要のVPSで、メールのみのサインアップとOxaPayによる暗号通貨のみのチェックアウトを提供。Bitcoin、Ethereum、USDT、および30以上の暗号通貨に対応しており、名前、住所、クレジットカード、銀行口座は不要です。
よくある質問
VPSでのWireGuardの設定は難しいですか?
いいえ。WireGuardは小さく読みやすい設定ファイルと標準的なコマンドを使用します。新しいUbuntuまたはDebian VPSでは、インストール、キーの生成、wg0.confの書き込み、最初のクライアントの接続を約10〜15分で行えます。
WireGuard VPNに専用IPは必要ですか?
専用IPは厳密には必要ありませんが、他の顧客と共有されない安定したエンドポイントが得られます。ApexVPSでは、Businessプランに専用IPv4が1つ、Enterpriseには2つ含まれています。
どのUbuntuおよびDebianバージョンがWireGuardをサポートしていますか?
WireGuardはLinuxカーネルバージョン5.6以降に組み込まれているため、Ubuntu 20.04以降とDebian 11以降では標準で含まれています。aptでユーザースペースツールをインストールするだけで済みます。
同じサーバーをスマートフォンで使用できますか?
はい。スマートフォン用にセカンドピアを追加し、クライアント設定を生成して、qrencodeでQRコードとしてレンダリングします。AndroidおよびiOS用の公式WireGuardアプリがコードをスキャンしてすぐに接続します。
クレジットカードなしでVPSの支払いはできますか?
はい。ApexVPSのチェックアウトは暗号通貨のみで、Bitcoin、Ethereum、USDT、および30以上の暗号通貨を受け付けています。サインアップはアクセス情報を送信するためのメールのみを要求します。名前、住所、IDは不要です。