出張先やカフェなどでフリーWi-Fiを使う場面はそれなりにある。
普段はそこまで気にしていなかったものの、
外部ネットワークを使うときの通信経路について、
一度整理しておきたいと思うようになった。
VPNサービスを契約する方法もあるが、
今回は勉強も兼ねて Google Cloud上にVPNサーバーを作ってみた。
構成自体はそれほど複雑ではなかったので、
自分用のメモも兼ねて、今回の構築手順をまとめておく。
今回の構成
今回作成した構成は次のようなもの。
| 項目 | 内容 |
|---|---|
| クラウド | Google Cloud |
| OS | Ubuntu Server |
| VPN | WireGuard |
| 接続端末 | スマートフォン |
WireGuardは比較的新しいVPNソフトで、
設定がシンプルで動作も軽いと言われている。
個人用途で使うVPNとしては、
かなり扱いやすい印象だった。
Google CloudでVMを作成
まずはVPNサーバーになる仮想マシンを作成する。
Google Cloudコンソールから
Compute Engine → VMインスタンス を開き、
「インスタンスを作成」を選択。
今回は以下のような設定にした。
| 項目 | 設定 |
|---|---|
| マシンタイプ | e2-micro |
| OS | Ubuntu |
| リージョン | asia-northeast1(東京) |
VPN用途であれば、
この程度のスペックでも問題なく動作する。
WireGuardのインストール
VMにSSH接続したあと、
まずはパッケージを更新する。
sudo apt update
続いてWireGuardをインストール。
sudo apt install wireguard
インストール自体は特に詰まる部分もなく、
すぐに完了した。
鍵の作成
WireGuardでは、
公開鍵と秘密鍵のペアを使って通信を行う。
鍵は次のコマンドで作成できる。
wg genkey | tee privatekey | wg pubkey > publickey
ここで作成された鍵を
サーバーとクライアントで設定していく。
WireGuard設定ファイル
次にWireGuardの設定ファイルを作成する。
sudo nano /etc/wireguard/wg0.conf
設定例は以下のような形。
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = サーバー秘密鍵
設定を保存したあと、
WireGuardを起動する。
sudo wg-quick up wg0
Google Cloudのファイアウォール設定
Google Cloudでは、
外部から接続するポートを許可する必要がある。
WireGuardのデフォルトポートは
UDP 51820
なので、
このポートをファイアウォールで開けておく。
ここを忘れると、
VPN接続ができないので注意が必要だった。
スマートフォンから接続
スマートフォン側には
WireGuardアプリをインストール。
クライアント設定を作成し、
- サーバーIP
- 公開鍵
- 接続ポート
などを設定する。
設定後に接続をオンにすると、
スマートフォンからVPN接続できるようになった。
実際に使ってみた感想
短時間の利用ではあるが、
接続は安定していて速度も特に問題は感じなかった。
また、自分でVPNを構築してみると、
- VPNの仕組み
- 鍵認証
- ポート設定
といった部分が整理できて、
勉強としてもかなり面白かった。
クラウドを触るきっかけとしても、
こういう小さな構築はちょうどいい題材だと思う。
注意点
Google Cloudは無料枠があるものの、
使い方によっては料金が発生する。
特にVMを常時起動する場合は、
課金状況を定期的に確認しておいたほうが安心。
まとめ
今回、Google Cloud上に
WireGuardのVPNサーバーを構築してみた。
構成自体はシンプルで、
- VM作成
- WireGuardインストール
- ポート開放
という流れで構築できた。
VPNの仕組みを理解する意味でも、
一度自分で作ってみるのは良い経験になると思う。
また時間があるときに、
ログの確認や運用面についても整理してみる予定。


コメント