AWS VPC と GCP VPC を IPsec-VPN で接続するための設定例を記載します。
Build HA VPN connections between Google Cloud and AWS
VPC 10.2.0.0/16
ap-northeast-1b Subnet 10.2.2.0/24
asia-northeast1 Subjet 10.1.1.0/24
GCP VPN GW は、以下の二つから選択して作成します。
本ページでは HA VPN を作成します。
my-gcp-ha-gw
の作成、Subnet と同じ asia-northeast1
リージョン
AWS 側の Public IP が未設定であるため、VPN トンネルは後で作成します。キャンセルをクリックします。
作成された HA VPN GW です。
HA VPN にはインタフェースが二つ存在します。それぞれの外部 IP を控えておきます。
35.242.56.246
35.220.56.61
補足: VPN GW は Classic VPN および HA VPN によらず、regional リソースです。
AWS VPC 内の経路情報と GCP VPC 内の経路情報は、BGP プロトコルで送受信されます。BGP において、ネットワーク機器の集合体には AS 番号が付与されます。IP と同様にグローバル AS 番号、プライベート AS 番号という概念があります。ここでは 64512 から 65534 までの範囲のプライベート AS 番号から、以下の二つを AWS VPC と GCP VPC 用に割り当てることにします。参考: VyOS の基本的なルーティング設定 / BGP ルーティング
Cloud Router を Subnet と同じリージョンに作成し、プライベート AS 番号 65534 を設定します。
作成された Cloud Router
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
GCP HA VPN GW には二つのインタフェース 0 と 1 が存在します。AWS からこれらのインタフェースに向けた VPN 接続を行うために、VGW または TGW を作成します。
どちらも VPN 接続毎に 0.048 USD/hour (東京リージョン) が発生します。
更に TGW の場合は、追加で 0.07 USD/hour/attachment (東京リージョン) が発生します。
アタッチする VPC の個数が多い場合に TGW の方が管理が簡単になりますが、本ページの例のように VPC の個数が少ない場合は VGW で十分です。
本ページのように GCP で HA VPN GW を作成しており、GCP VPC と AWS VPC を接続する場合は、以下のような AWS 料金になります。
(0.048 * 2) + (0.07 * 3) = 0.306 USD/hour
→ 月額 約 24,235 円0.048 * 2 = 0.096 USD/hour
→ 月額 約 7,603 円何らかの事情で料金を抑えたい場合は、HA VPN GW のインタフェース0 のみを利用することも考えられます。
(0.048 * 1) + (0.07 * 2) = 0.188 USD/hour
→ 月額 約 14,890 円0.048 * 1 = 0.048 USD/hour
→ 月額 約 3,802 円Cloud VPN の料金は Classic VPN と HA VPN に違いはなく、VPN トンネル毎に発生します。
0.075 USD/hour/tunnel (東京リージョン) です。
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 円前述のように、本ページの構成であれば TGW を使用する必要は実際にはありませんが、設定方法の確認のために TGW を用いてみます。VGW を用いる場合もおおよそ同じ設定方法となります。
VPC を TGW にアタッチします。0.048 USD/hour
が発生します。
Customer GW 二つを TGW にアタッチします。0.048 * 2 USD/hour
が発生します。
VPN トンネルのオプションを既定値にすると、以下の二つが AWS によって自動生成されます。後に AWS からダウンロードして GCP 設定時に参照します。
ここまでの設定で、TGW には以下の 3 つがアタッチされた状態になります。
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
Site-to-Site VPN 設定をダウンロードします。自動生成された、VPN トンネルの事前共有鍵や、リンクローカル IP アドレスが記載されています。
HA VPN GW に VPN トンネルを設定します。
VPN トンネルを作成するに先立ち、peer GW を作成する必要があります。AWS における Customer GW に相当する概念です。
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
各 VPN トンネルに対して、BGP セッションの設定を作成します。
AWS からダウンロードした設定ファイルに記載のリンクローカル IP アドレスを記載します。
Inside IP Addresses
- Customer Gateway : 169.254.92.246/30
- Virtual Private Gateway : 169.254.92.245/30
GCP における確認
AWS における確認
GCP の動的ルーティングにおいて、AWS VPC ネットワークへの経路情報が確認できます。
GCP VPC 内に起動した VM と AWS VPC 内に起動した 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
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.