🪢

AWS Site-to-Site VPNでGoogle Cloudと接続する。

に公開

はじめに

今回はAWS Site-to-Site VPNを構築します。

よくAWSとオンプレミスネットワークをプライベート接続する際に使用されるサービスですが、

AWSの対向をGoogle Cloudとしマルチクラウド間をVPNで接続します。

本記事のゴールとしてAWSとGoogle Cloud(以下GC)をVPN接続しEC2インスタンスとCloud ComputeがプライべートIPアドレスで通信できるのを確認します。

AWSカスタマーゲートウェイの対向は仮想プライベートゲートウェイとします。

AWS Site-to-Site VPNとは

https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPC_VPN.html

AWSとローカルネットワークを通信するための接続を作成できるサービスを指します。

IPsec(インターネットプロトコルセキュリティ)接続をサポート。

AWSとローカルを接続する際にAWSに接続する物理的なデバイス等をカスタマーゲートウェイデバイスと呼びますが、

今回はGCのCloud RouterがCGWに該当します。

構築

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

  • GCでVPCとサブネットを構築する
  • GCでVPNゲートウェイとCloud Routerを作成する
  • AWSでVPCを構築しプライベートサブネットを作成する
  • AWSでCGW、仮想プライベートゲートウェイ(以下VGW)、VPN接続を作成する
  • GCでピアVPNゲートウェイ、VPNトンネルを作成する
  • BGPセッションを構築する

参考

https://cloud.google.com/network-connectivity/docs/vpn/tutorials/create-ha-vpn-connections-google-cloud-aws?hl=ja

設計

Google Cloud

  • サブネット1:10.100.0.0/24,asia-northeast1
  • サブネット2:10.100.1.0/24,asia-northeast1

AWS

  • VPC:10.0.0.0/16,ap-northeast-1
  • サブネット1:10.0.128.0/20,ap-northeast-1a
  • サブネット2:10.0.144.0/20,ap-northeast-1c

[GC]VPC・サブネットの構築

VPCネットワーク→VPCネットワーク→VPCネットワークを作成

サブネット作成モードをカスタムにしてサブネットを作成

2つ目以降のサブネットはサブネットを追加から作成

ファイアウォールルールでallow-icmpとallow-sshにチェックを入れる

[GC]VPNゲートウェイの作成

ネットワーク接続→VPN→VPNの作成orVPNゲートウェイを作成

(VPNと検索バーに入力してアクセスするのが早い)

VPNのオプションは高可用性(HA)VPNを選択。

ネットワークで先ほど作成したVPCを選択、

リージョンはサブネットと揃えるのが望ましい。

[GC]Cloud Routerの作成

ネットワーク接続→Cloud Router→Cloud Routerタブ→Create router

作成したVPCをネットワークに選択

Cloud RouterのASN64512-65534または4200000000-4294967294の範囲の任意のプライベートASNを指定。

アドバタイズされたルートのカスタムルートの作成にチェックを入れる。

Cloud Routerに表示されるすべてのサブネットにアドバタイズするにチェックを入れる。

[AWS]VPC・サブネットの作成

アジアパシフィック(東京)リージョンで構築

VPC→VPCを作成

VPCなどでサブネットも一括作成、プライベートサブネットのみ作成。

[AWS]CGWの作成

VPC→カスタマーゲートウェイ→カスタマーゲートウェイを作成

BGP ASNはGC側で設定した値と同じ値を設定。

IPアドレスにはVPNゲートウェイに割り当てられたインターフェースIPを入力

上記手順でCGWを2つ作成する。

[AWS]VGWの作成

VPC→仮想プライベートゲートウェイ→仮想プライベートゲートウェイを作成

自律システム番号 (ASN)でカスタム ASNを選択し

Cloud Routerとは異なるASNを指定

[AWS]VPN接続の作成

VPC→Site-to-Site VPN 接続→VPN 接続を作成する

仮想プライベートゲートウェイに[AWS]VGWの作成で構築したVGWを指定

カスタマーゲートウェイ IDに[AWS]CGWの作成で構築したCGWを指定

上記手順でVPN接続を2つ(CGW分)作成する

作成後、それぞれのVPN接続を選択し[設定をダウンロードする]からテキストをダウンロード

IKEバージョンはGCとAWSで揃える事

ここでikev1を選ぶ場合はこの後GC側でもikev1で構築する必要がある

[GC]ピアVPNゲートウェイ・VPNトンネルの作成

VPNゲートウェイ作成画面を残していた場合はピアVPNゲートウェイの名前から新しいピアVPNゲートウェイを作成する

キャンセルしていた場合は、ネットワーク接続→VPN→ピアVPNゲートウェイ→ピアVPNゲートウェイの作成

インターフェースで4つのインターフェースを選択

AWSでダウンロードした設定ファイルの中になるOutside IP AddressesのVirtual Private Gatewayを設定

作成したピアVPNゲートウェイを選択

高可用性の項目でVPNトンネルを4つ作成する。を選択

クラウドルーターで作成したCloud Routerを選択

以下VPNトンネルをそれぞれ作成する。

AWSでDLした設定ファイルにはIPsec Tunnel #1のようにトンネル毎の設定が記載されている

GC コンソール AWS設定ファイル(Outside)
関連付けられているCloud VPNゲートウェイインターフェース Customer Gateway
関連付けられているピアVPNゲートウェイインターフェース Virtual Private Gateway
IKE バージョン IKE version
IKE 事前共有キー Pre-Shared Key

[GC]BGPセッションの構成

トンネル作成後、Cloud VPN トンネルタブから各トンネルに対してBGPセッションの設定を入れる

GC コンソール AWS設定ファイル(Inside IP Addresses)
Cloud RouterのBGP IPv4アドレス Customer Gateway
BGP ピア IPv4アドレス Virtual Private Gateway

確認

全ての構築・設定が完了するとGC側でVPNトンネルのBGPが確立される

AWS側ではVPN接続の状態が利用可能になる

疎通確認

GCにVMインスタンス、AWSにEC2インスタンスを構築しpingによる疎通確認を行う。

それぞれの構築手順は省略(EC2側でGCサブネットからicmpを許可すること)

また、EC2をデプロイしたサブネットのルートテーブルでGC宛ての通信をVGWにルーティングするようにルートテーブルを修正する

それぞれ起動を確認したらVMインスタンスにCloudShellからSSH接続してpingを飛ばす

(EC2側にSSH接続したい場合は以下を参照)

https://zenn.dev/michinoku/articles/9db96caacad67f

プライベートIPでping疎通が取れている

パブリックからだとアクセスできない

おわり

今回はAWSのSite-to-Site VPNでAWSとGCをプライベートに接続しました。

自宅でルーターの設定を必要とせずクラウド間でVPN構築を試すことが可能です。

今後は、GCをオンプレミスに見たてたAWSとオンプレミス間の名前解決構築をしたいと考えています。

それでは、最後までお読みいただきありがとうございました。

Discussion