選ぶ知識を、あなたの力に。
当サイトはプロモーションを含みます
記事一覧へVPS

VPSでWireGuardを構築する方法|UbuntuのVPN設定手順

公開 2026.09.16 約10分
VPSとPCをWireGuardの暗号化トンネルで接続するイメージ

Ubuntu VPSへWireGuardを導入し、鍵生成、IP転送、UFW、サーバー・クライアント設定、接続確認まで解説します。

WireGuardは、公開鍵と秘密鍵を使って端末間に暗号化トンネルを作るVPNです。VPSを入口にすれば、外出先から自宅・社内ネットワークへ接続したり、通信の出口をVPSへまとめたりできます。

ただし、VPNを作れば匿名になる、あらゆる通信が自動で保護される、というものではありません。VPS事業者から見える情報、接続ログ、DNS、利用規約を理解し、正当な用途で利用してください。

今回の構成

  • VPS:Ubuntu Server、グローバルIPあり
  • VPNインターフェース:wg0
  • VPN内ネットワーク:10.10.10.0/24
  • VPS側:10.10.10.1
  • クライアント側:10.10.10.2
  • UDP待受ポート:51820

実際のNIC名、IP、ポートは環境へ合わせます。既存ネットワークと重複しないVPNアドレス帯を選んでください。

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

sudo apt update
sudo apt install wireguard -y

VPS管理画面のファイアウォールでUDP 51820を許可します。SSH用TCP 22を誤って閉じないでください。

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

sudo install -m 700 -d /etc/wireguard
umask 077
wg genkey | sudo tee /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub

秘密鍵は他人へ渡さず、画面共有や記事へ載せません。設定ファイルも600相当の権限で保護します。

3. IP転送を有効にする

VPSをインターネットへのゲートウェイとして使う場合は転送を有効にします。

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard-forward.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

VPS内だけへ接続する構成では、目的に応じて転送範囲を最小化します。

4. サーバー設定を作る

まず外向きNIC名を確認します。

ip route show default

eth0は実際のNIC名へ置き換え、PrivateKeyにはサーバー秘密鍵の内容を設定します。

[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.10.10.2/32
sudo chmod 600 /etc/wireguard/wg0.conf

UFWを使う場合は、転送ポリシーとNATをUFWの方式へ統一するか、既存ルールとの関係を確認します。

5. クライアント鍵と設定を作る

クライアント端末で鍵を生成します。秘密鍵は端末外へ出しません。

umask 077
wg genkey | tee client.key | wg pubkey > client.pub

クライアント設定例です。

[Interface]
Address = 10.10.10.2/24
PrivateKey = <CLIENT_PRIVATE_KEY>
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <VPSのIP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

すべてのIPv4通信をVPS経由にする例です。VPS内部だけへ接続するなら、AllowedIPs10.10.10.0/24など必要な範囲へ絞ります。IPv6を経由させない構成では、IPv6通信が別経路になる可能性も確認してください。

6. WireGuardを起動する

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

設定変更後、Peerの追加だけならreloadで済む場合がありますが、AddressやPostUpを変えた場合はrestartが必要です。

7. 接続を確認する

クライアントでVPNを有効にし、次を確認します。

  1. 10.10.10.1へ到達できる
  2. wg showのlatest handshakeが更新される
  3. transferの送受信が増える
  4. 目的が全トンネルなら外部から見えるIPがVPSになる
  5. DNSの問い合わせ先が意図したものになる

鍵、Endpoint、UDPポート、AllowedIPs、IP転送、NATを順に確認します。

接続できないときの確認

sudo wg show
ip addr show wg0
ip route
sudo ss -ulnp | grep 51820
sudo journalctl -u wg-quick@wg0 -n 100

ハンドシェイクがない

VPS側のUDP許可、Endpoint、公開鍵の組み合わせを確認します。TCPではなくUDPです。

ハンドシェイクはあるが通信できない

AllowedIPs、IP転送、NAT、ルーティングを確認します。AllowedIPsは送信時の経路選択と受信時の許可範囲の両方に関係します。

しばらくすると切れる

クライアントがNAT配下の場合、PersistentKeepalive = 25が役立つ場合があります。常に必要とは限らないため、問題がある側のPeerで使います。

セキュリティ上の注意

  • 秘密鍵とQRコードを公開しない
  • Peerごとに別の鍵を発行する
  • 使わないPeerはサーバー設定から削除する
  • AllowedIPsを必要最小限にする
  • VPSのOSとWireGuardを更新する
  • 設定ファイルを暗号化してバックアップする
  • VPN内だから無条件に信頼せず、アプリ側の認証も残す

スマホ用QRコードには秘密鍵が含まれるため、スクリーンショットをクラウド写真へ自動保存しないよう注意します。

まとめ

VPS上のWireGuardは、鍵、VPN内IP、UDPポート、AllowedIPs、転送、NATを正しく組み合わせて構築します。接続時はwg showのハンドシェイクから確認すると切り分けやすくなります。公開前にVPSのセキュリティ初期設定も実施してください。

本記事は情報提供を目的としたもので、契約・投資判断はご自身の責任で行ってください。