Google Cloud Platform へのサイト間 VPN 接続
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2019年05月30日(木)
Table of Contents
Heroku Private Space VPN 接続は、GCP のマネージド VPN 機能である Google Cloud VPN と互換性があります。これにより、Private Space と GCP インフラストラクチャの間で、セキュアなサイト間 VPN 接続を容易に確立できます。
Private Space を GCP と手動で接続することも、Terraform を使用して設定を自動化することもできます。
手動設定
まず、Google VPC の内部ネットワーク CIDR 範囲が、Private Space の同範囲 (通常は 10.0.0.0/16
) と競合していないことを確認します。
Heroku VPN 接続を作成するときは、GCP VPN ゲートウェイのパブリック IP と GCP ネットワークの CIDR 範囲の両方を指定する必要があります。そのため、最も簡単な操作の順序は次のようになります。
- (まだ作成していない場合) Heroku Private Space と GCP VPC を作成し、それぞれの CIDR 範囲が重複しないことを確認します。
- GCP の静的外部 IP アドレスを予約します (後で GCP VPN ゲートウェイに使用します)。
- GCP IP アドレスと内部ネットワーク CIDR を使用して、Heroku VPN 接続をプロビジョニングします。プロビジョニングが完了したら、Heroku VPN ゲートウェイのパブリック IP と事前共有 IKEv1 キーを取得します。
heroku spaces:vpn:config
コマンドによって返された IP と IKEv1 事前共有キーを使用して、GCP VPN ゲートウェイとトンネルを作成します。- 数分後、両方のトンネルが確立されます。
たとえば、35.237.228.210
という IP を GCP VPN ゲートウェイに使用していて、GCP サブネットが 10.138.0.0/16
であるとします。次のようにして Heroku VPN ゲートウェイを作成します。
$ heroku spaces:vpn:connect -i 35.237.228.210 -c 10.138.0.0/16 -n vpn-connection-name -s your-space
プロビジョニングが完了して接続情報が出力されるまで待ちます。
$ heroku spaces:vpn:wait -n vpn-connection-name -s your-space
Waiting for VPN Connection vpn-connection-name to allocate... done
=== vpn-connection-name VPN Tunnels
VPN Tunnel Customer Gateway VPN Gateway Pre-shared Key Routable Subnets IKE Version
────────── ──────────────── ────────────── ──────────────────────────────── ──────────────── ───────────
Tunnel 1 35.237.228.210 34.195.35.105 sY0sjBWR7YVeJI8x41Go5.ZRq.ohQOLu 10.0.0.0/16 1
Tunnel 2 35.237.228.210 34.224.185.144 MmesiNxUH0OfcghtYrVSrTDhXj48qPmn 10.0.0.0/16 1
この情報を使用して、GCP 側で設定を完了します。トンネルを作成するとき、「Routing options」(ルーティングオプション) には「Route-based」(ルートベース) を選択します (Heroku VPN では BGP をサポートしていません)。リモート IP 範囲は Heroku Private Space の CIDR 範囲です (通常は 10.0.0.0/16
)。
トンネル設定の詳細に関する Google VPN のドキュメントを参照してください。
最後に、両方のトンネルが確立することを確認します。
$ heroku spaces:vpn:info -s your-space vpn-connection-name
Terraform の設定
Terraform を使用して、この Heroku と Google Cloud Platform 間のクロスクラウド設定を自動化することを選択できます。Heroku での Terraform の使用を開始します。
terraform-heroku-vpn-gcp 設定モジュールとサンプルは GitHub で入手できます。リポジトリの README に記載された使用方法の指示に従ってください。
Terraform によって設定が適用されたら、VPN 接続のステータスを表示できます。
$ heroku spaces:vpn:connections -s <space name>
=== space-name VPN Connections
Name Status Tunnels
─────── ────── ─────────
default active DOWN/DOWN