OffshoreVps
セキュリティ2026年9月17日読了時間 10 分執筆:OffshoreVps チーム

VPS で自分専用の WireGuard VPN を構築する

手順ごとの解説:Ubuntu または Debian に WireGuard をインストールし、鍵を作成し、サーバーとクライアントの設定を書き、ファイアウォールを開けて、トンネルをテストします。

WireGuard は、高速で小さく、設定も簡単な最新の VPN プロトコルです。VPS で自分用に運用すれば、第三者の VPN 事業者を介さずに、好きな国のサーバーへの暗号化トンネルが手に入ります。このガイドでは Ubuntu 24.04 または Debian 12/13 を使い、すでにサーバーを保護済みであることを前提とします。

WireGuard をセットアップするために使うコマンドを、「sudo apt update」から始めて表示している VPS のターミナルウィンドウ
このガイドでサーバー上で実行するコマンドの例。

1. WireGuard をインストールする

sudo apt update
sudo apt install -y wireguard

2. サーバーの鍵を生成する

cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub

umask 077 により、鍵ファイルは root だけが読み取れるようになります。server.key は非公開にしてください。

3. クライアントの鍵を作成する

ノート PC やスマートフォン用の鍵ペアをサーバー上で生成し、後でクライアントの設定をコピーします。

wg genkey | tee client1.key | wg pubkey > client1.pub

4. サーバーの設定を書く

まず、公開ネットワークインターフェースの名前を調べます。

ip route get 1.1.1.1 | awk '{print $5; exit}'

多くの場合は eth0 または ens3 です。/etc/wireguard/wg0.conf を作成し、大文字の値を自分のものに置き換えます。

[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 ETH_IF -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ETH_IF -j MASQUERADE

[Peer]
# client1
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

server.key と client1.pub の内容を指示された場所に貼り付け、ETH_IF をインターフェース名に置き換えます。

5. IP フォワーディングを有効にする

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
このガイドの手順(順番どおり):1. 1. WireGuard をインストールする;2. 3. クライアント鍵を作成する;3. 5. IP フォワーディングを有効にする;4. 7. トンネルを起動する;5. 9. テストする;6. ロケーションの選択
このガイドの手順(順番どおり)。

6. ファイアウォールを開ける

sudo ufw allow 51820/udp
sudo ufw route allow in on wg0
sudo ufw reload

7. トンネルを起動する

sudo systemctl enable --now wg-quick@wg0
sudo wg show

インターフェースが表示され、クライアントが接続すると最新のハンドシェイクも表示されるはずです。

8. クライアントを設定する

お使いのデバイスで、次のような設定を作成します(Windows、macOS、Linux、iOS、Android 向けの公式 WireGuard アプリは、ファイルまたは QR コードからインポートできます)。

[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT1_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0, ::/0 を使うと、すべてのトラフィックがトンネルを通ります。プライベートネットワークだけに到達したい場合は、代わりに 10.8.0.0/24 を使います。

9. テストする

  1. クライアントでトンネルを有効にします。
  2. サーバーで sudo wg show を実行し、最近のハンドシェイクがあることを確認します。
  3. クライアントから「自分の IP アドレスを調べる」ページを開きます。サーバーのアドレスが表示されるはずです。
  4. プライバシーが目的なら DNS リークを確認し、サーバーに IPv6 がある場合は IPv6 のルールも追加します。

デバイスを追加する

新しいデバイスごとに鍵ペアを生成し、別の [Peer] ブロックを新しいアドレス(たとえば 10.8.0.3/32)で追加して、sudo wg syncconf wg0 <(wg-quick strip wg0) を実行すると、既存の接続を切らずに反映できます。

ロケーションの選択

WireGuard サーバーは、当社のどのロケーションでも動作します。速度を重視するなら近い場所を、トラフィックの送信元にしたい IP アドレスの国があるならその国を選んでください。VPS ロケーションの選び方をご覧ください。個人用のトンネルなら、小さな VPS で十分すぎるほどです。