プロローグ
GCP(Google Cloud Platform)とAWS(Amazon Web Service)の間のSite-to-Site VPN通信(クラウド間VPN通信)は、超簡単にできる!
- GCPの「VPN接続」機能とAWSの「VGW(Virtual Private GW)」は、直結可能!
- Azureの「仮想ネットワークゲートウェイ」とAWSのVGWは、(数年前は)繋げなかった...
- 確か「どちらが先にグローバルIPアドレスを払い出す?」問題。
- ARM版では未検証。
- AWSのようにWindows-VPNを試してみたが、不発...
- 詳細は(エピローグ中の)「gcpとAWSのNW観点の差異」をご参照。
手順
-
[gcp] 外部IPアドレス(以下、この値をGIPと呼ぶ)を取得する。
- AWSのVGWはグローバルIPアドレスが自動的に割り振られる(=Uncontrollable)なので、gcp側でControlする。
-
[AWS] GIPに相当するCGW(Customer Gateway)を作成する。
-
[AWS] VGWを作成し、VPCに紐づける。
- このとき、VPCに紐づいているRouteTableにおいて、VGWの「Route Propagation」を「Yes」にしておくと、「AWS→gcp」のルートがAWS側に自動設定される。
-
[AWS] SecurityGroupを調整する。
- gcp側のプライベートNWからの通信を受け付けるべく開ける(テスト用ICMPとか)。
-
[AWS] 上記のCGWとVGWをツナぐVPN Connection(VPNC)を作成する。
- 「Routing Options」:まずは敷居の低い「static」で...
- 「Static IP Prefixes」:gcp側のNWアドレス(CIDR)を指定。
-
[AWS] VPNCのConfigurationをDownloadする。
- AWS側グローバルIPアドレス/Pre-Shared-Key(2つずつ)は、AWSが自動割り当てする(=Uncontrollable)。
-
[gcp] VPN接続を作成する。
-
ICMPで疎通確認のためには、下記を確認:
- AWS側のRouteTable(Propageted指定なら追加作業なし)
- AWS側のSecurityGroup
- gcp側のルート(VPN接続作成時に自動作成されているはずなので、追加作業なし)
- gcp側のファイアウォールルール(サブNW作っているとハマりがちなので注意)
エピローグ
gcpとAWSのNW観点の差異
-
gcpでは、
ひとつのインスタンスは複数のNICを持つことはできない?(ひとつのNW/サブNWにしか収容できない?)
⇒複数NIC持つことできます。訂正。
⇒複数NICを持たせたうえで、Windows-VPNに再挑戦★ -
gcpインスタンス上でipconfig/ifconfigを実行すると下記の結果が出てプチ衝撃:
C:\>ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : c.xxx.internal
IPv4 Address. . . . . . . . . . . : 10.xxx.0.100
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 10.xxx.0.1
C:\>
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP qlen 1000
link/ether 42:01:0a:8c:00:02 brd ff:ff:ff:ff:ff:ff
inet 10.xxx.0.2/32 brd 10.140.0.2 scope global dynamic eth0
valid_lft 80364sec preferred_lft 80364sec
inet6 fe80::xxxx:xxxx:xxxx:2/64 scope link
valid_lft forever preferred_lft forever
⇒サブネットマスクが「/32(IPv4)」「/64(IPv6)」?
⇒全てのインスタンスは、GWインスタンスに直接ぶら下がっている(ハブ&スポーク構成)?
AzureとAWSの間のSite-to-Site VPN通信(クラウド間VPN通信)
- ぱっと見たところ、Azure側仮想ネットワークゲートウェイにおいて、
- パブリックIPアドレスは指定できる(「どちらが先にグローバルIPアドレスを払い出す?」問題は解消)。
- Pre-Shared-Keyが指定可能か不可か、依然調査中...
AWSリージョン間接続を、VGW同士で...
できないですよね。グローバルIPアドレス/Pre-Shared-Keyを自動で割り当てられてしまう(=Uncontrollable)ので★
最後にひとこと
「gcpとAWSの間のSite-to-Site VPN通信」の方が「AWSのリージョン間のSite-to-Site VPN通信」よりもシンプル・早・易だと思いました♪