株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > WireGuard VPN サーバー構築(Ubuntu 24.04 LTS)

WireGuard VPN サーバー構築(Ubuntu 24.04 LTS)


WireGuard は現代的な VPN プロトコルで、OpenVPN と比べてシンプルな設定・高速な通信・ 少ないコードベース(セキュリティ監査しやすい)が特徴です。 Linux カーネル 5.6 以降(Ubuntu 20.04 以降)では標準搭載されています。
本記事では Ubuntu 24.04 LTS に WireGuard VPN サーバーを構築し、 PC・スマートフォンから接続する手順を解説します。


sudo apt update
sudo apt install -y wireguard

# バージョン確認
wg --version

# 作業ディレクトリ(root で実行)
sudo -i
cd /etc/wireguard

# サーバーの鍵ペアを生成
wg genkey | tee server_private.key | wg pubkey > server_public.key

# クライアントの鍵ペアを生成
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

# 生成された鍵を確認
cat server_public.key
cat client1_public.key

# ファイルのパーミッションを設定
chmod 600 server_private.key client1_private.key

SERVER_PRIVATE_KEYcat server_private.key の出力で、 CLIENT1_PUBLIC_KEYcat client1_public.key の出力で置き換えてください。 eth0 は WAN インターフェース名(ip link show で確認)に合わせます。

# /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# client1
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
chmod 600 /etc/wireguard/wg0.conf

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

sudo ufw allow 51820/udp
sudo ufw reload

# WireGuard を起動
sudo wg-quick up wg0

# 状態確認
sudo wg show

# OS 起動時に自動起動
sudo systemctl enable wg-quick@wg0

# 停止する場合
sudo wg-quick down wg0

以下の設定ファイルを作成し、クライアント PC に転送します(安全な方法:SCP や直接入力)。 CLIENT1_PRIVATE_KEYcat client1_private.key の出力で、 SERVER_PUBLIC_KEYcat server_public.key の出力で置き換えてください。

# client1.conf(クライアント PC に保存)
[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT1_PRIVATE_KEY
DNS = 8.8.8.8

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

AllowedIPs = 0.0.0.0/0 はすべての通信を VPN 経由にする設定です。 社内ネットワークのみ VPN 経由にする場合は AllowedIPs = 10.0.0.0/24 のように指定します。


# 稼働中のサーバーにクライアントを追加(wg0.conf を再編集して wg syncconf で反映)
sudo wg set wg0 peer CLIENT2_PUBLIC_KEY allowed-ips 10.0.0.3/32

# またはサーバーを再起動せずに設定を反映
sudo wg syncconf wg0 <(wg-quick strip wg0)

# サーバー側でピアの接続状態を確認
sudo wg show

# interface: wg0
#   public key: ...
#   private key: (hidden)
#   listening port: 51820
#
# peer: CLIENT1_PUBLIC_KEY
#   allowed ips: 10.0.0.2/32
#   latest handshake: 5 seconds ago
#   transfer: 1.23 MiB received, 456 KiB sent

OpenVPN サーバー構築(Ubuntu 24.04 LTS) — PKI ベースの VPN、TCP 対応
UFW・Fail2ban 設定(Ubuntu 24.04) — ファイアウォール設定
Nginx SSL/TLS 設定(Ubuntu 24.04 LTS) — 公開 Web サーバーの HTTPS 設定


WireGuard で管理アクセスやリモートワーク通信を保護しつつ、 公開 Web サーバーには SSL証明書で HTTPS 化することで、 ネットワーク層とアプリ層の両方でセキュリティが確保できます。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。

SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス


← 技術ドキュメント一覧へ戻る