Cloud VPN と Unifi Dream Router で VPN 接続を構築する
こんにちは、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 以外のルーターを使っている方も参考にしてください。
実践
以下の手順で構築していきます。
- Cloud VPN の設定
- Unifi Dream Router の設定
- Cloud VPN 接続の確認
1. Cloud VPN の設定
Google Cloud コンソールで、「Cloud VPN」の画面に移動します。
【Cloud VPN の画面】
次に VPN のオプションを選択します。
オプションは大きく静的ルーティングと動的ルーティングがあります。
今回は、設定が簡単な静的ルーティングを使用するため、Classic VPN を選択します。
【VPN のオプション】
VPN 接続を作成していきます。
大きく項目が Google Compute Engine VPN ゲートウェイとトンネルの 2 つがあります。
構成図では以下の 2 つの設定です。
【構成図】
設定は以下のように行います。
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 の設定
構成図では以下の部分の設定です。
【構成図】
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 ネットワークのルート】
3. Cloud VPN 接続の確認
最後に、実際に接続してみます。
自宅の PC から内部 IP アドレスのみが割り当てられている Compute Engine に Ping の通信を行います。
【Compute Engine の詳細】
では接続テストを行います。
【Ping コマンドの実行結果】
続いて、Compute Engine に SSH 接続を行います。
以下のコマンドを実行します。ZONE, VM_NAME, PROJECT_ID はご自身のものに置き換えてください。
gcloud compute ssh VM_NAME --zone ZONE --project=PROJECT_ID --internal-ip
【SSH 接続】
接続できました。
まとめ
今回は構築のみに焦点を当てて説明しました。
実際には、IKE のバージョンや IPsec の設定、アーキテクチャなど様々なことを検討する必要があります。
今後は DNS のフォワーディングやルーティングの設定にもチャレンジしていく予定です。
最後まで読んでいただき、ありがとうございました。
Discussion