AWS VPC と GCP VPC を IPsec-VPN で接続するための設定例を記載します。
Build HA VPN connections between Google Cloud and AWS
AWS VPC の作成
VPC 10.2.0.0/16
ap-northeast-1b Subnet 10.2.2.0/24
GCP VPC の作成
asia-northeast1 Subjet 10.1.1.0/24
GCP HA VPN の作成
GCP VPN GW は、以下の二つから選択して作成します。
- Highly Available (HA) VPN
- Classic VPN (一部の機能が October 31, 2021 に廃止予定)
本ページでは HA VPN を作成します。
my-gcp-ha-gw
の作成、Subnet と同じ asia-northeast1
リージョン
AWS 側の Public IP が未設定であるため、VPN トンネルは後で作成します。キャンセルをクリックします。
作成された HA VPN GW です。
HA VPN にはインタフェースが二つ存在します。それぞれの外部 IP を控えておきます。
- インタフェース0
35.242.56.246
- インタフェース1
35.220.56.61
補足: VPN GW は Classic VPN および HA VPN によらず、regional リソースです。
BGP ルーティング
AWS VPC 内の経路情報と GCP VPC 内の経路情報は、BGP プロトコルで送受信されます。BGP において、ネットワーク機器の集合体には AS 番号が付与されます。IP と同様にグローバル AS 番号、プライベート AS 番号という概念があります。ここでは 64512 から 65534 までの範囲のプライベート AS 番号から、以下の二つを AWS VPC と GCP VPC 用に割り当てることにします。
- AWS 65001
- GCP 65534
GCP Cloud Router の作成
Cloud Router を Subnet と同じリージョンに作成し、プライベート AS 番号 65534 を設定します。
作成された Cloud Router
Customer GW の作成
GCP で作成した HA VPN GW のインタフェース 0 と 1 に対応する Customer GW を AWS に登録します。
GCP HA VPN GW のインタフェース0 に対応する AWS Customer GW 設定
GCP HA VPN GW のインタフェース1 に対応する AWS Customer GW 設定
作成された二つの Customer GW
VGW と TGW の料金について
GCP HA VPN GW には二つのインタフェース 0 と 1 が存在します。AWS からこれらのインタフェースに向けた VPN 接続を行うために、VGW または TGW を作成します。
- Virtual Private Gateway (VGW)
- Transit Gateway (TGW)
どちらも VPN 接続毎に 0.048 USD/hour (東京リージョン) が発生します。
更に TGW の場合は、追加で 0.07 USD/hour/attachment (東京リージョン) が発生します。
アタッチする VPC の個数が多い場合に TGW の方が管理が簡単になりますが、本ページの例のように VPC の個数が少ない場合は VGW で十分です。
AWS 料金の計算例
本ページのように GCP で HA VPN GW を作成しており、GCP VPC と AWS VPC を接続する場合は、以下のような AWS 料金になります。
- TGW →
(0.048 * 2) + (0.07 * 3) = 0.306 USD/hour
→ 月額 約 24,235 円 - VGW →
0.048 * 2 = 0.096 USD/hour
→ 月額 約 7,603 円
何らかの事情で料金を抑えたい場合は、HA VPN GW のインタフェース0 のみを利用することも考えられます。
- TGW →
(0.048 * 1) + (0.07 * 2) = 0.188 USD/hour
→ 月額 約 14,890 円 - VGW →
0.048 * 1 = 0.048 USD/hour
→ 月額 約 3,802 円
GCP Cloud VPN 料金について
Cloud VPN の料金は Classic VPN と HA VPN に違いはなく、VPN トンネル毎に発生します。
0.075 USD/hour/tunnel (東京リージョン) です。
GCP 料金の計算例
HA VPN GW インタフェース 0 と 1 それぞれから 2 本の VPN トンネルを張る場合です。
0.075 * 4 = 0.3 USD/hour
→ 月額 約 23,760 円
何らかの事情で料金を抑えたい場合は、HA VPN GW のインタフェース 0 のみを利用することも考えられます。
0.075 * 2 = 0.15 USD/hour
→ 月額 約 11,880 円
更にインタフェース0 から VPN トンネルを一本しか張らないことも考えられます。AWS の Site-to-Site VPN の二つの VPN トンネルのうち一本しか設定しないということになります。
0.075 * 1 = 0.075 USD/hour
→ 月額 約 5,940 円
Transit GW の作成
前述のように、本ページの構成であれば TGW を使用する必要は実際にはありませんが、設定方法の確認のために TGW を用いてみます。VGW を用いる場合もおおよそ同じ設定方法となります。
Transit GW への VPC アタッチ
VPC を TGW にアタッチします。0.048 USD/hour
が発生します。
Transit GW への VPN アタッチ
Customer GW 二つを TGW にアタッチします。0.048 * 2 USD/hour
が発生します。
VPN トンネルのオプションを既定値にすると、以下の二つが AWS によって自動生成されます。後に AWS からダウンロードして GCP 設定時に参照します。
- GCP と接続するための事前共有鍵
- VPN トンネル内における AWS と GCP それぞれのリンクローカル IP アドレス
ここまでの設定で、TGW には以下の 3 つがアタッチされた状態になります。
Site-to-Site VPN 接続の設定確認
Transit GW に Customer GW を VPN 設定でアタッチすると、Site-to-Site VPN 接続が生成されます。各 VPN 接続には、冗長化のために二つの VPN トンネルが存在します。VPN トンネルの AWS 側の外部 IP を控えておきます。
GCP 35.242.56.246
→ AWS 35.74.205.39
, 54.92.38.224
GCP 35.220.56.61
→ AWS 35.74.57.202
, 54.168.230.22
AWS Site-to-Site VPN 接続一つあたりの VPN トンネル数は2 となるため、全体としての VPN トンネル数は 4 となります。参考: HA VPN to AWS peer gateways
VPN トンネル接続設定のダウンロード
Site-to-Site VPN 設定をダウンロードします。自動生成された、VPN トンネルの事前共有鍵や、リンクローカル IP アドレスが記載されています。
GCP VPN トンネル設定の追加
HA VPN GW に VPN トンネルを設定します。
Peer GW の作成
VPN トンネルを作成するに先立ち、peer GW を作成する必要があります。AWS における Customer GW に相当する概念です。
VPN トンネルを作成
GCP 側の Cloud Router を選択します。
AWS からダウンロードした設定ファイルに記載されている事前共有鍵を、VPN トンネルの設定に記載します。
$ grep Pre-Shared Key vpn-0b6c529ce44fb05a4.txt
/usr/bin/grep: Key: No such file or directory
vpn-0b6c529ce44fb05a4.txt: - Authentication Method : Pre-Shared Key
vpn-0b6c529ce44fb05a4.txt: - Pre-Shared Key : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
vpn-0b6c529ce44fb05a4.txt: - Authentication Method : Pre-Shared Key
vpn-0b6c529ce44fb05a4.txt: - Pre-Shared Key : yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
BGP セッションの設定
各 VPN トンネルに対して、BGP セッションの設定を作成します。
AWS からダウンロードした設定ファイルに記載のリンクローカル IP アドレスを記載します。
Inside IP Addresses
- Customer Gateway : 169.254.92.246/30
- Virtual Private Gateway : 169.254.92.245/30
BGP セッションが確立されたことの確認
GCP における確認
AWS における確認
GCP の動的ルーティングにおいて、AWS VPC ネットワークへの経路情報が確認できます。
AWS ルートテーブルの更新
GCP VPC 内に起動した VM と AWS VPC 内に起動した EC2 インスタンスが相互に通信するためには、更に以下の設定も適切に行う必要があります。
- GCP VPC ファイアウォール → EC2 インスタンスから GCP VM への通信が許可されるように設定。
- AWS VPC ルートテーブル → EC2 インスタンスから GCP VM への通信が TGW にルーティンされるように設定。
- あるいは、AWS Route テーブルの Route Propagation を Yes に設定します。
- GCP 起点の通信であったとしても、応答時のパケットが正しく AWS から GCP にルーティングされる必要があります。
- AWS EC2 セキュリティグループ → GCP VM から EC2 インスタンスへの通信が許可されるように設定。
以下は GCP VM から EC2 インスタンスの内部 IP と外部 IP に対して ping 確認を行った際の出力例です。
username@my-vm-1:~$ ping 10.2.2.117
PING 10.2.2.117 (10.2.2.117) 56(84) bytes of data.
64 bytes from 10.2.2.117: icmp_seq=1 ttl=252 time=7.20 ms
64 bytes from 10.2.2.117: icmp_seq=2 ttl=252 time=5.16 ms
username@my-vm-1:~$ ping 54.250.83.111
PING 54.250.83.111 (54.250.83.111) 56(84) bytes of data.
64 bytes from 54.250.83.111: icmp_seq=39 ttl=235 time=4.16 ms
64 bytes from 54.250.83.111: icmp_seq=40 ttl=235 time=5.36 ms
64 bytes from 54.250.83.111: icmp_seq=41 ttl=235 time=4.41 ms
関連事項: IAP 利用による SSH 接続を許可するための Firewall 設定
35.235.240.0/20
からの TCP 22 番ポートへの接続が許可されるように設定する必要があります。
allows ingress traffic from the IP range 35.235.240.0/20. This range contains all IP addresses that IAP uses for TCP forwarding.
関連記事
- GKE における Node および Pod の autoscalingGoogle Kubernetes Engine (GKE) における autoscaling について、用語の意味を整理します。 GKE の機能による Node の autoscaling GKE のクラスタには Standard と Autopilot の二種類が存在します。 Autopilot の場合は Node は Google によって管理されるため、自動で autoscaling され...
- Snowflake におけるネットワーク関連の設定本ページではネットワーク関連の設定について記載します。 Network Policy によるアクセス元 IP 制限 IPv4 で指定します。IPv6 は 2021/9/21 時点では利用できません。 allowed list で許可されていない IP は block されます。 allowed list が /24 等で指定されており、その一部を
- VPC Service Controls に関する雑多な事項の整理VPC Service Controls (VPC-SC) に関する雑多な事項を記載します。 Private Google Access の基本形 Private Google Access は外部 IP を持たない VM のための機能です。VPC の機能ですが、VPC-SC と関連するため基本事項を記載します。 [Private Google Access](ht
- AWS IAM Role を GCP から STS 認証で利用する設定例GCP から AWS IAM Role を利用するための設定例を記載します。 GCP Service Account の作成 Service Account を作成して Unique ID を確認します。 AWS IAM Role の作成 Trust relationship の設定は Web Identity を選択します。Identity Provider
- Amazon Comprehend を GCP VPC 内から実行する設定の例 (Public Internet 接続なし)GCP DLP に相当する AWS サービスに Amazon Comprehend が存在します。GCP VPC 内から Public Internet を経由せずに利用する設定の例を記載します。 AWS VPC と GCP VPC の作成 クラウド 項目 値 AWS VPC region ap-northeast-1 AWS VPC CIDR 10.2.0.0/16 AWS ap-north