はじめに
この記事では、GCP Marketplaceで提供されているOpenVPN Access ServerのイメージをTerraformから利用して、Google Cloud上にVPN環境を構築する手順を紹介します。
前提
本記事の手順を進めるにあたり、以下の準備が必要です。
- Google Cloudプロジェクトを所有しており、課金が有効になっていること。
- Terraform, gcloud cliがローカル環境にインストールされていること。
- VPNサーバに割り当てるための独自ドメインを所有していること。
- OpenVPN Access Serverのライセンスを所有していること。(2ユーザまでであれば無償利用可能)
構成
本記事で作成する構成は以下の通りです。

-
Compute Engine
OpenVPN Access Serverが動作するCompute Engineを作成します。このVMの起動ディスクには、GCP MarketplaceでOpenVPN Access Serverが提供する特定のOSイメージを使用します。
-
VPC
Compute Engineを配置するVPCを作成します。
-
Elastic IP
Compute Engineへアタッチします。
構築
まずはTerraformコードを記述し、必要なリソースを作成します。
variables.tf
: プロジェクトやリージョンなどの変数を定義
provider.tf
: GCPプロバイダーの設定
network.tf
: VPCネットワークとファイアウォールルールの設定
iam.tf
: サービスアカウントの作成
compute_engine.tf
: OpenVPNサーバのCompute Engine設定
variables.tf
provider.tf
network.tf
iam.tf
compute_engine.tf

info
-
コード中のプロジェクトID、リージョン、ゾーン、ネットワーク名などはご自身の環境に合わせて修正してください。
-
source_ranges は、セキュリティの観点からできる限り制限することを強く推奨します。自宅や会社の固定IPなどがあればそれを指定します。
-
使用するMarketplaceイメージのURIは、時間経過で更新される可能性があります。上記のURIは記事執筆時点のものです。
コードの準備ができたら、terraformを実行します。
VPNサーバ設定
OpenVPN Access Server初期設定
Terraformでのリソース作成が完了したら、Conmute EngineへSSHし、OpenVPN Access Serverの初期設定を行います。SSHすると自動的に以下のようなメッセージが流れます。
上記質問は利用規約の同意に関するもののため、yes
を入力します。
次にこのOpenVPN Access Serverがプライマリノードか聞いてきますが、今回はシングル構成のためEnterを押します。
その他いくつか質問されますが、基本的にデフォルト設定で問題ないので全てEnterを押してください。
証明書設定
SSL証明書を作成し、OpenVPN Access Serverへ適用します。
今回はlet's encryptの証明書を使用します。
let's encryptの証明書はデフォルトの有効期限が90日のため、更新処理をcronに設定しておくと便利です。
使い方
OpenVPN Access Serverの準備ができたので、実際にVPNを利用してみます。
ユーザ作成
https://<ドメイン名>:943/admin/user_permissions
へアクセスする
- 新しく払い出すユーザのメールアドレスをユーザ名として登録する
Allow Auto-login
にチェックを入れる
More Settings
で初期PWを設定する(ユーザに対して連携する)
VPNクライアント設定
https://<ドメイン名>:943
へアクセスする
- クライアントアプリをインストールする
- 接続プロファイル(autologin)をダウンロードし開く
- VPN接続する
異常が無ければこれでVPN接続できている状態となります。
まとめ
この記事では、Terraformを使用してGoogle Cloud上にOpenVPN Access Serverを構築する方法を紹介しました。この方法を活用することで、社内向けのVPN環境を効率的に、かつ手軽に用意できます。Google CloudでのVPN環境構築をご検討の際に、本記事がお役に立てれば幸いです。
参考文献