モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

AWS VPC と GCP VPC を VPN 接続するための設定例

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2021/06/13
最終更新最終更新
2024/02/18
記事区分記事区分
一般公開

目次

    インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め

    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 は、以下の二つから選択して作成します。

    本ページでは 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 (東京リージョン) です。

    Cloud Router は無料です。

    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.

    Using IAP for TCP forwarding

    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事