📝

Cloud VPN と Unifi Dream Router で VPN 接続を構築する

2024/05/15に公開

こんにちは、SRE 部の岸本です。
今回は、自宅から Cloud VPN 経由で Google Cloud にある Compute Engine にアクセスしてみたいと思います。

対象読者

  • Cloud VPN を使ってみたいけど、どうやって設定すればいいかわからない方
  • VPN 設定が可能なルーターをお持ちの方
  • Google Cloud と VPN 接続を行いたい方

紹介すること

  • Cloud VPN の概要
  • Cloud VPN の設定方法

Cloud VPN の概要

  • Cloud VPN とは
    IPsec VPN 接続を提供するサービスです。
    Google Cloud のリソースとオンプレミスのリソースを安全に接続するために使用されます。
    Cloud VPN は 2 種類あり、Classic VPN と HA VPN があります。
    現在は、Classic VPN の一部の機能が非推奨となっており、HA VPN を使用することが推奨されています。
    しかし、Classic VPN は静的ルーティングが使用でき、HA VPN では使用できない、など違いがあるため適切に使い分ける必要があります。
それぞれの違い
  • Classic VPN

    • 静的ルーティングに対応
    • 高可用性なし
    • IPv4 トラフィックのみに対応
  • HA VPN

    • 動的ルーティング(BGP)のみに対応
    • 高可用性(99.99 SLA、リージョン内)に対応
    • IPv4 トラフィックと IPv6 トラフィックに対応

上記はコンソール画面にも記述されている内容です。
さらに詳しく表にまとまったものはこちらを参照してください。

余談

Google Cloud には、Cloud Interconnect というサービスも提供されています。
これは、Google Cloud とオンプレミスのネットワークを閉域網で接続するためのサービスです。
VPN の種類としては IP VPN に該当します。

Cloud VPN を使ってみる

構成図は以下の通りです。
構成図
今回は、自宅で設定可能なUnifi Dream Routerを使って VPN 接続を構築します。
Cloud VPN の仕様は変わらないので、Unifi Dream Router 以外のルーターを使っている方も参考にしてください。

実践

以下の手順で構築していきます。

  1. Cloud VPN の設定
  2. Unifi Dream Router の設定
  3. Cloud VPN 接続の確認

1. Cloud VPN の設定

Google Cloud コンソールで、「Cloud VPN」の画面に移動します。
【Cloud VPN の画面】
Cloud VPNの画面

次に VPN のオプションを選択します。
オプションは大きく静的ルーティングと動的ルーティングがあります。
今回は、設定が簡単な静的ルーティングを使用するため、Classic VPN を選択します。

【VPN のオプション】
VPNのオプション

VPN 接続を作成していきます。
大きく項目が Google Compute Engine VPN ゲートウェイとトンネルの 2 つがあります。
構成図では以下の 2 つの設定です。
【構成図】
構成図1

設定は以下のように行います。

Google Compute Engine VPN ゲートウェイ

Google Compute Engine VPN ゲートウェイ

最終的な項目は以下のようになります。

項目
ゲートウェイ名前 home-gc
ネットワーク test-vpn
リージョン asia-northeast1(東京)
IP アドレス test-vpn

設定項目については以下の通りです。

  • ゲートウェイ名前
    任意の名前を入力します。
  • ネットワーク
    VPN 接続を行うネットワークを選択します。default ネットワーク、または自作の VPC ネットワークを選択します。
  • リージョン
    VPN 接続を行うリージョンを選択します。任意のリージョンを選択します。
  • IP アドレス
    VPN 接続を行うゲートウェイの IP アドレスです。IP アドレス欄をクリックすると、IP アドレスの名前を入力する画面が出てきます。ここで名前を入力すると、IP アドレスが自動で生成されます。
トンネル

トンネル

項目
トンネル名前 to-home-main
リモートピア IP アドレス 自宅の WAN IP
IKE バージョン IKEv2
IKE 事前共有キー 生成してコピー
ルーティングオプション ルートベース、自宅ネットワーク IP の範囲

設定項目については以下の通りです。

  • トンネル名前
    任意の名前を入力します。
  • リモートピア IP アドレス
    自宅の WAN IP アドレスを入力します。リモートピアは、VPN 接続を行うリモート側の IP アドレスです。この IP アドレスは、自宅のルーターの WAN IP アドレスにあたります。
  • IKE バージョン
    IKE バージョンを選択します。IKEv1 または IKEv2 を選択します。こちらは使用しているルーターのドキュメントを参照していただければと思います。
    私の使用している Unifi Dream Router は、IKEv1, IKEv2 の両方に対応しています。
    今回は、バージョンが新しい IKEv2 を選択します。
  • IKE 事前共有キー
    IKE 事前共有キーを生成します。自分で任意のキーを入力することもできます。
    このキーは、VPN 接続を行うリモート側(自宅)のルーターにも設定する必要がありますので、コピーして保管しておいてください。
  • ルーティングオプション
    ルーティングオプションを選択します。動的、ルートベースまたはポリシーベースを選択します。
    今回は、静的ルーティングを使用するため、動的は選択肢から外れます。
    ルートベースかポリシーベースかですが、自宅と Google Cloud の接続という簡単な構成なので、ルートベースを選択します。最後に、自宅のローカル IP アドレスの範囲を入力します。この IP アドレスを入力することで、VPC ネットワーク内でルートが作成され、VPN 接続を行うことができます。

これではまだ接続はできません。
Cloud VPN のステータスが「最初の handshake 」になっているかと思います。

続いて、Unifi Dream Router の設定を行います。

2. Unifi Dream Router の設定

構成図では以下の部分の設定です。
【構成図】
構成図2

Unifi Dream Router

Unifi Dream Router の設定画面に移動します。
【Unifi Dream Router の画面】
Unifi Dream Routerの画面
VPN の設定を行います。今回はサイト間 VPN の IPsec を使用します。そのほか対応している VPN はこちらから確認できます。
埋める項目は以下の通りです。

項目
名前 vpn1
事前共有キー 先ほど Google Cloud コンソール画面で生成したキーを入力
ローカル IP デフォルトで入力されている
Remote IP 先ほど Google Cloud の test-vpn と名付けた IP アドレスを入力
VPN タイプ ルートベース
リモートネットワーク test-vpn ネットワークにあるサブネットの IP レンジ
鍵交換バージョン IKEv2

設定項目については以下の通りです。

  • 名前
    任意の名前を入力します。
  • 事前共有キー
    先ほど Google Cloud コンソール画面で生成したキーを入力します。これは、Google Cloud と Unifi Dream Router の間で通信を暗号化するためのキーです。
  • ローカル IP
    デフォルトで入力されている IP アドレスを使用します。この IP アドレスは、Unifi Dream Router の外部 IP アドレスです。
  • Remote IP
    先ほど Google Cloud の test-vpn と名付けた IP アドレスを入力します。この IP アドレスは、Google Cloud の VPN ゲートウェイの IP アドレスです。
  • VPN タイプ
    Google Cloud でルートベースを選択したので、Unifi Dream Router でもルートベースを選択します。
  • リモートネットワーク
    Google Cloud の test-vpn ネットワークにあるサブネットの IP レンジを入力します。これは、Google Cloud の VPC ネットワーク内のサブネットの IP レンジです。
  • 鍵交換バージョン
    Google Cloud で IKEv2 を選択したので、Unifi Dream Router でも IKEv2 を選択します。

これを設定すると、Unifi Dream Router の VPN のステータスがオンラインになりました。
また、Google Cloud の VPC ネットワークのルートにも自宅へのルートが追加されていることが確認できます。
【Unifi ステータス】
ステータス

【VPC ネットワークのルート】
VPC ネットワークのルート

3. Cloud VPN 接続の確認

最後に、実際に接続してみます。
自宅の PC から内部 IP アドレスのみが割り当てられている Compute Engine に Ping の通信を行います。
【Compute Engine の詳細】
Compute Engineの詳細

では接続テストを行います。
【Ping コマンドの実行結果】
Compute EngineのIPアドレス

続いて、Compute Engine に SSH 接続を行います。
以下のコマンドを実行します。ZONE, VM_NAME, PROJECT_ID はご自身のものに置き換えてください。

gcloud compute ssh VM_NAME --zone ZONE --project=PROJECT_ID --internal-ip

【SSH 接続】
SSH接続

接続できました。

まとめ

今回は構築のみに焦点を当てて説明しました。
実際には、IKE のバージョンや IPsec の設定、アーキテクチャなど様々なことを検討する必要があります。
今後は DNS のフォワーディングやルーティングの設定にもチャレンジしていく予定です。
最後まで読んでいただき、ありがとうございました。

Discussion