2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CyberAgent Group SREAdvent Calendar 2023

Day 19

GCP-AWS間のIPSecVPNの活用と設定ポイント

Last updated at Posted at 2023-12-19

この記事は、CyberAgent Group SRE Advent Calendar 2023の19日目の記事です。

はじめに

メディア組織でSREを担当している @niwattittiです。

この記事について

ハイブリッドクラウドは、企業がデータとリソースを効率的に管理し、ビジネス価値を最大化するための重要な戦略となっています。
この記事では、2つの大手クラウドプロバイダ間でのデータとリソースのやり取りを安全に行うためのIPsec VPNの設定のポイントについて解説します。

IPsec VPNについて / 基本的な役割と仕組み

IPsec VPNとは、インターネットプロトコルセキュリティ(IPsec)を使用して、仮想プライベートネットワーク(VPN)接続を確立する技術です。
IPsecは、データの機密性、データの完全性、およびデータのオリジン認証を提供するためのプロトコルスイートです。これにより、ネットワーク間の通信が安全に行われます。

IPsec VPNの主な役割は次のとおりです:

  1. データの機密性:IPsec VPNは、データを暗号化して、第三者によるデータの傍受を防ぎます。これは、データがインターネット上で安全に転送されることを保証します。
  2. データの完全性:IPsec VPNは、データが送信元から送信先までの間に改ざんされないことを確認します。これは、送信元と送信先の間でデータが一貫していることを保証します。
  3. 認証:IPsec VPNは、送信元と送信先の間でデータの送受信を行うエンティティの認証を提供します。これにより、データを送受信するエンティティの信頼性が確認されます。

また、IPsec VPNの仕組みは次のとおりです:

  1. トンネルモード:IPsec VPNは、オリジナルのIPパケットを新しいIPパケットでカプセル化します。これにより、オリジナルのIPパケットは、新しいIPパケットのペイロードとなります。この新しいIPパケットは、VPNゲートウェイ間で転送されます。
  2. トランスポートモード:このモードでは、IPsecはオリジナルのIPパケットのペイロード部分(つまり、トランスポート層のデータ)のみを暗号化します。このモードは、エンドツーエンドの通信に最適です。

今回は、トンネルモードの設定のポイントについて後述していきます。

AWS/GCPでのIPsec VPNの設定のポイント

アーキテクチャ図は、Google Cloudの公式ドキュメントを御覧ください

AWSとGCPでのIPsec VPNの設定は、いくつかのステップがあります。

  1. AWSとGCPの両方で仮想プライベートクラウド(VPC)を作成します。
  2. GCP側でCLOUD VPN GATEWAYを作成します。
  3. AWS側でVPN接続を作成
  4. GCP側でPEER VPN GATEWAYSとCLOUD VPN TUNNELの設定とRouterの設定を実施します。

設定のポイント

※動的にルーティングされた VPN 接続を構築する場合です。
Cloud Interconnectの利用の場合異なります。

  • MTUについてAWSとGCPで合わせることが望ましいです。
    • AWS
    • GCP
      • Cloud VPN ゲートウェイの MTU は 1,460 バイトです。
      • トンネル MTUの場合、パス MTU 検出(PMTUD)とMSS クランプが有効になっています。
      • 参考:
  • IKE 暗号設定
    VPN接続では、パケットに追加のヘッダ情報が付加されるため、IKEの設定値を限定することが望ましいです。
    • バージョン
      • IKEv2
    • アルゴリズム
      • 暗号化アルゴリズム : AES256-GCM-16
      • 整合性アルゴリズム : SHA2-256
    • ディフィー・ヘルマン(DH) Group 14,15,16 などから選ぶと良いでしょう。
      • AWS側のフェーズ2には、Group5がないので注意が必要です。
    • IKEv2のライフタイムの値
      • より短いAWS側のライフタイムが切れる少し前になると、AWS側からキーの更新要求が送信され、キーが更新されます。
        一部のルーターは、相手側からキーの更新を受け取らない機種があるそうで、そういった機種との接続では接続が切断される可能性がありました。Cloud VPNは更新要求を受け取り、キーを更新するのでAWSとGCPのライフタイムが異なる場合でも問題ありません。[参考:GCPサポート からの回答]
    • 参考:
  • 自律システム番号 (ASN)
    • 64512 ~ 65534 の範囲のプライベート ASN を使用できます。
    • たとえば、下記ように同じアカウント内/プロジェクト内で設定が被らないように設定してください。
      • GCP : 64512
      • AWS : 65000

参考:

Infrastructure as Code(IaC)化について

HA-VPNの構築するため、それぞれのGATEWAYに
GCPではIPが2つ、AWSではIPが4つ割り振られます。

前述したように、
AWSとGCPでのIPsec VPNの設定は下記のようになっています。

  1. AWSとGCPの両方で仮想プライベートクラウド(VPC)を作成します。
  2. GCP側でCLOUD VPN GATEWAYを作成します。
  3. AWS側でVPN接続を作成
  4. GCP側でPEER VPN GATEWAYSとCLOUD VPN TUNNELの設定とRouterの設定を実施します。
  • GCP
    • terraformで実装できます。
    • moduleが利用できます。
    • gewawayをのみ作成しGCP側のIPを確認します。
    • その後に、AWS側のGATEWAYのインターフェースのIPを4つ確認した上でトンネル情報を追記し再度実行します。
    • 合計2回流す必要があります。(良い方法があればご教授ください。)
    • 事前共有キーは
      • Secret Managerやsopsを利用して管理するのが良いかと思います。
  • AWS
    • CloudFormationで構築する場合は下記をご覧ください
    • ただし、トランザクションオプションの設定はCloudFormationで設定できないので、後ほど修正する必要があります。
    • GCP側のCLOUD VPN GATEWAYの2つのIPを確認し、設定を行います。
    • トランザクションオプションの設定は、IKE 暗号設定を確認し、GCPと一致するように設定してください。

VPN接続のテストとトラブルシューティング

まとめ

IPsec VPNをGCPとAWS間で、動的にルーティングで設定する際のポイントについて紹介しました。
GCPとAWS両方のクラウドのドキュメントの内容を確認し、最適な設定をする必要があります。
読んでいただい方の参考になれば幸いです。

さいごに

CyberAgent Group SRE Advent Calendar 2023の20日目は、@kikai_fat47さんです!!

2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?