LoginSignup
12
13

More than 5 years have passed since last update.

[IPSec-VPN] クラウド間(GCP⇔AWS)通信

Last updated at Posted at 2017-06-07

プロローグ

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観点の差異」をご参照。

手順

  1. [gcp] 外部IPアドレス(以下、この値をGIPと呼ぶ)を取得する。
    • AWSのVGWはグローバルIPアドレスが自動的に割り振られる(=Uncontrollable)なので、gcp側でControlする。
  2. [AWS] GIPに相当するCGW(Customer Gateway)を作成する。
  3. [AWS] VGWを作成し、VPCに紐づける。
    • このとき、VPCに紐づいているRouteTableにおいて、VGWの「Route Propagation」を「Yes」にしておくと、「AWS→gcp」のルートがAWS側に自動設定される。
  4. [AWS] SecurityGroupを調整する。
    • gcp側のプライベートNWからの通信を受け付けるべく開ける(テスト用ICMPとか)。
  5. [AWS] 上記のCGWとVGWをツナぐVPN Connection(VPNC)を作成する。
    • 「Routing Options」:まずは敷居の低い「static」で...
    • 「Static IP Prefixes」:gcp側のNWアドレス(CIDR)を指定。
  6. [AWS] VPNCのConfigurationをDownloadする。
    • AWS側グローバルIPアドレス/Pre-Shared-Key(2つずつ)は、AWSが自動割り当てする(=Uncontrollable)。
  7. [gcp] VPN接続を作成する。

    • gcp側のIPアドレスとして「GIP」を設定。 20170607_VPN接続の設定① - コピー.jpg
    • AWS側がVPNトンネルを2つ用意しているので、トンネル設定は2本分設定。
    • 「IKEバージョン」:「IKEv1」を指定(「IKEv2」だと疎通しない。AWSが未対応?)。
    • 「事前共有シークレット」:AWSが自動割り当てしたPre-Shared-Key値を設定。
    • 「ルーティングオプション」:まずは敷居の低い「静的」で...
    • 「リモートネットワークIPの範囲」:AWS VPCのCIDRを指定。
    • トンネル1本目用の設定 20170607_VPN接続の設定② - コピー.jpg
    • トンネル2本目用の設定 20170607_VPN接続の設定③ - コピー.jpg
  8. 「作成」ボタンを押し、下記の画面になればOK!!
    20170607_VPN接続の設定RES.jpg

  9. ICMPで疎通確認のためには、下記を確認:

    • AWS側のRouteTable(Propageted指定なら追加作業なし)
    • AWS側のSecurityGroup
    • gcp側のルート(VPN接続作成時に自動作成されているはずなので、追加作業なし)
    • gcp側のファイアウォールルール(サブNW作っているとハマりがちなので注意)

エピローグ

gcpとAWSのNW観点の差異

  • gcpでは、ひとつのインスタンスは複数のNICを持つことはできない?(ひとつのNW/サブNWにしか収容できない?)
    ⇒複数NIC持つことできます。訂正。
    ⇒複数NICを持たせたうえで、Windows-VPNに再挑戦★

  • gcpインスタンス上でipconfig/ifconfigを実行すると下記の結果が出てプチ衝撃:

ipconfig
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:\>
ifconfig
$ 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通信」よりもシンプル・早・易だと思いました♪

12
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13