前回の記事では、なぜ WireGuard を選んだか という判断の背景を書きました。
今回はその続きとして、
実際に VPS 上に WireGuard を構築して、業務で運用してみた記録 をまとめます。
Web 公開用途ではなく、業務専用 VPN という前提なので、
「最低限・シンプル・安定」を軸にしています。
今回の構成イメージ
今回の VPN 構成はこんな感じです。
- VPS(Ubuntu 24.04)上に WireGuard サーバ
- VPN 内部ネットワーク:10.0.0.0/24
- サーバ:10.0.0.1
- クライアント:10.0.0.2 以降
- スマホからは VPN 経由のみ利用
あくまで 業務システム用途限定 で、Web サービスを外に公開する目的ではありません。
SQL Server、Metabase、VPN を 1 台の VPS に同居させていますが、
業務用途としては特に問題なく安定しています。
この構成を動かしている VPS は、
実際に業務検証・運用している Xserver VPS です。
メモリ 12GB のビジネスプランで、DB と BI と VPN を同居させても、体感的に余裕があります。
VPS で WireGuard は問題なかったか?
結論としては、特に問題なし でした。
- CPU 使用率:ほぼ変化なし
- 常時接続:安定
- 再起動後:systemd で自動復旧
- 通信:体感的にかなり軽快
SQL Server + Metabase + VPN という構成なので、
最初は負荷面を少し心配していましたが、
業務用途レベルでは余裕があります。
むしろ、SQL Server Express のメモリ制限がブレーキになっている分、
全体としてバランスが取れている という印象でした。
WireGuard のインストール
必要なパッケージのみインストールします。
apt update
apt install wireguard qrencode
qrencode は QR コード生成用です。
あとでスマホ設定でかなり役に立ちます。
鍵の生成
まずサーバー側で鍵を作成。
wg genkey | tee server_private.key | wg pubkey > server_public.key
クライアント用も同様に生成します。
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
鍵ファイルは、
第三者に読まれない場所で管理 するのが前提です。
サーバー設定例(wg0.conf)
/etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 30274
PrivateKey = <server_private.key の中身>
PostUp = sysctl -w net.ipv4.ip_forward=1
PostDown = sysctl -w net.ipv4.ip_forward=0
[Peer]
PublicKey = <client1_public.key の中身>
AllowedIPs = 10.0.0.2/32
ポイントとしては、
- ポート番号は高番ポートを使用
- ルーティングが不要な場合は PostUp 行は省略可能
専用用途なので、できるだけ 余計な設定を入れない 方針です。
クライアント設定例(client1.conf)
[Interface]
PrivateKey = <client1_private.key の中身>
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = <server_public.key の中身>
Endpoint = <VPSのIPアドレス>:30274
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25
PersistentKeepalive = 25 は、
モバイル回線利用時の接続維持用です。
これを入れておくと、
スマホ利用時の安定度がかなり上がりました。
QRコードでスマホ設定が一気に楽になった
ここが WireGuard の一番ありがたいポイント でした。
qrencode -t ansiutf8 < client1.conf
ターミナルに QR が表示されるので、
スマホの WireGuard アプリでそのまま読み取れます。
設定ファイルを配布する必要がなく、
業務用スマホが複数ある場合でも 圧倒的に運用が楽 です。
正直、
「VPN 設定って面倒」
というイメージを一気に覆されました。
起動と自動起動設定
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0
状態確認:
wg
Peer が表示されていれば正常です。
再起動後も自動で立ち上がるので、
運用面で気にすることはほぼなくなりました。
実際に使ってみて感じたこと
一番心配だったのは、スマホのバッテリー消費 でした。
VPN 常時接続だと、
電池の減りが激しいんじゃないかと正直ビビっていました。
結果としては、
- 体感レベルでは ほぼ影響なし
- 常時接続でも特に不満なし
という感じです。
QR 設定の手軽さと合わせて、
導入前に想像していたよりずっと楽 でした。
スマホアクセスを VPN に閉じた効果
この構成にして一番良かったのは、
- 管理系ポートを外部公開しなくてよくなった
- SQL Server や BI を VPN 内に閉じられた
- 自己署名証明書の制約を気にせず安全に利用できた
という点です。
「SSL 化しなきゃ」「証明書どうする?」と悩む時間が、
ほぼゼロになりました。
結果として、
頑張って個別に暗号化対応するより、
VPN で丸ごと包んでしまった方が圧倒的に楽
という結論になりました。
VPS 構成について少しだけ
今回のように、
- DB
- BI
- VPN
を 1 台に集約する構成では、
ある程度スペックに余裕のある VPS が扱いやすいです。
業務用途で VPS を選ぶ場合は、
- SLA
- ネットワーク仕様
- バックアップ手段
このあたりを、
公式情報で一度しっかり確認しておくと安心です。
私は業務用途として Xserver VPS を使っていますが、
このあたりの判断理由や選定ポイントは、
「なぜ Xserver VPS を選んだか」の記事でまとめています。
まとめ
- WireGuard は VPS 環境でも安定
- スマホ VPN との相性がとても良い
- QR 設定が想像以上に楽
- 管理系アクセスを閉じる用途に向いている
- 思っていたより構築はずっと簡単だった
正直、
もっと早くやっておけばよかった と思いました。
次回は、
WireGuard + SQL Server + Metabase を同居させた全体構成 について、
運用視点でまとめています。
次の記事



