1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

実践!AWSネットワーク構築・運用30日チャレンジ: Day 10

Posted at

Day 10: VPC Peering:VPC間接続で広がる可能性

皆さん、こんにちは!「実践!AWSネットワーク構築・運用30日チャレンジ」のDay 10へようこそ!

この1週間と2日で、あなたはAWSネットワークの基礎をしっかりと築き、単一のVPC内でセキュアな多層アーキテクチャを構築する方法を学んできました。しかし、実際のエンタープライズ環境では、システムが単一のVPCに収まらないケースが頻繁に発生します。

例えば、以下のようなシナリオです。

  • 本番環境と開発環境の分離: セキュリティや管理上の理由から、本番環境と開発環境を別々のVPCに分離したい。
  • 子会社や部門ごとのVPC: 組織内の異なる部署や子会社がそれぞれ独自のVPCを管理している。
  • SaaS提供者のVPCと連携: 外部のSaaSベンダーがAWS上で提供するサービスと、自社のVPC内のアプリケーションを安全に連携させたい。
  • データ連携: 異なるVPCに分散されたデータ(例: データレイクVPCと分析VPC)間で、高速かつセキュアにデータをやり取りしたい。

このような場合に登場するのが、今日のテーマである「VPC Peering (VPCピアリング)」です。VPCピアリングは、異なるVPC間をプライベートに接続し、まるで一つのVPC内にあるかのように通信を可能にする強力な機能です。

1. VPC Peeringとは?その重要性

VPC Peering は、2つのVPC間で、それらのプライベートIPアドレスを使用してトラフィックをルーティングできるようにするネットワーク接続です。これにより、異なるVPC内のインスタンスが、インターネットゲートウェイやVPN接続を経由することなく、直接プライベートに通信できるようになります。

VPC Peeringのメリット

  • プライベート通信: トラフィックがインターネットを経由しないため、セキュリティが向上し、データ漏洩のリスクが低減します。
  • 低レイテンシ・高スループット: AWSの内部ネットワーク上で直接通信が行われるため、インターネット経由よりも低レイテンシで高いスループットを実現できます。
  • シンプルさ: 複雑なVPN設定や外部ネットワーク機器の管理が不要で、比較的簡単に設定できます。
  • コスト効率: インターネットデータ転送に伴うコストを削減できます。

VPC Peeringの制約事項

VPCピアリングは非常に便利ですが、いくつかの重要な制約があります。

  • 重複するCIDRブロック: ピアリングする2つのVPCのCIDRブロックが重複していると、ピアリング接続は確立できません。 これは非常に重要な点です。VPC設計の初期段階でIPアドレス計画を慎重に行う必要があります。
  • 推移的ルーティングの非サポート: VPCピアリングは推移的ルーティングをサポートしません。つまり、VPC-A と VPC-B がピアリングされ、VPC-B と VPC-C がピアリングされていても、VPC-A と VPC-C は直接通信できません。VPC-AとVPC-Cを通信させるには、別途ピアリング接続が必要です。多くのVPCを接続する場合は、Transit Gateway(今後のDayで解説予定)のような別のサービスを検討します。
  • リージョンをまたいだピアリング: 現在、同じAWSアカウント内であれば、異なるリージョン間のVPCピアリングも可能です(リージョン間VPCピアリング)。ただし、レイテンシやコストに影響がある場合があります。
  • 異なるAWSアカウント間のピアリング: 異なるAWSアカウントが所有するVPC間でもピアリング接続は可能です。

2. VPC Peeringの仕組みと設定の流れ

VPCピアリングは、以下の3つのステップで設定されます。

  1. ピアリング接続のリクエスト: 一方のVPCからもう一方のVPCに対してピアリング接続のリクエストを送信します。
  2. ピアリング接続の承諾: リクエストを受け取ったVPCの所有者が、そのリクエストを承諾します。
  3. ルートテーブルの更新: ピアリング接続がアクティブになった後、それぞれのVPCのルートテーブルに、相手のVPCのCIDRブロックへのルート(ターゲットはピアリング接続ID)を追加します。このステップが最も重要で、忘れられがちです。

3. VPC Peeringの実践:2つのVPCを接続してみよう!

それでは、実際に2つのVPCを作成し、それらをVPCピアリングで接続してみましょう。今回はシンプルにするため、新しいVPCを一つ追加し、既存のVPC(Day 3-4で作成済み)とピアリングします。

事前準備:もう一つのVPCの作成

既存のVPCのCIDRブロック(例: 10.0.0.0/16)と重複しない、新しいCIDRブロックを持つVPCを作成します。

  1. AWSマネジメントコンソールで「VPC」サービスを開きます。
  2. 左側ナビゲーションペインから「VPC」をクリックし、「VPCを作成」ボタンをクリックします。
  3. VPCのみ」を選択します。
    • 名前タグ: my-second-vpc
    • IPv4 CIDR ブロック: 10.1.0.0/16 (既存のVPCが10.0.0.0/16の場合)
  4. VPCを作成」をクリックします。

作成した my-second-vpc の中に、適当なサブネットを一つ作成しておきましょう(例: my-second-vpc-subnet-a、CIDR: 10.1.1.0/24、AZ: ap-northeast-1a)。このサブネットに後ほどEC2インスタンスをデプロイします。

3.1. ピアリング接続の作成

  1. VPCサービスの左側ナビゲーションペインから「ピアリング接続」をクリックします。
  2. ピアリング接続を作成」ボタンをクリックします。
  3. 以下の情報を入力します。
    • 名前タグ: main-to-second-vpc-peering
    • VPC リクエスター:
      • VPC (リクエスター): Day 3で作成したあなたのメインVPC (my-vpc など) を選択します。
    • VPC アセプター:
      • VPC (アセプター): 先ほど作成した my-second-vpc を選択します。
      • アカウント: 「マイアカウント」を選択(同じアカウントの場合)。
      • リージョン: 「このリージョン」を選択(同じリージョンの場合)。
  4. ピアリング接続を作成」をクリックします。

これでピアリング接続のリクエストが送信され、ステータスが「保留中の承諾」になります。

3.2. ピアリング接続の承諾

同じAWSアカウント内なので、すぐに承諾できます。

  1. ピアリング接続」リストで、作成したピアリング接続 (main-to-second-vpc-peering) を選択します。
  2. アクション」ドロップダウンから「リクエストを承諾」をクリックします。
  3. 確認ダイアログで「リクエストを承諾」をクリックします。

ステータスが「アクティブ」になれば、ピアリング接続が確立されました。

3.3. ルートテーブルの更新(最重要!)

ピアリング接続が「アクティブ」になっただけでは、まだVPC間の通信はできません。それぞれのVPCのルートテーブルに、相手のVPCへのルートを追加する必要があります。

3.3.1. メインVPCのルートテーブルを更新

メインVPC (例: my-vpc) のルートテーブルを更新します。パブリックサブネットとプライベートサブネットの両方のルートテーブルを更新することを推奨します。

  1. VPCサービスの左側ナビゲーションペインから「ルートテーブル」をクリックします。
  2. あなたのメインVPC (my-vpc) に関連付けられているルートテーブル(例: my-vpc-public-rtbmy-private-rtb-a など)を選択します。
  3. ルート」タブをクリックし、「ルートを編集」ボタンをクリックします。
  4. ルートを追加」をクリックします。
    • 宛先: 10.1.0.0/16 (相手の my-second-vpc のCIDRブロック)
    • ターゲット: 「Peering Connection」を選択し、プルダウンから作成したピアリング接続 (pcx-xxxxxxxx) を選択します。
  5. 変更を保存」をクリックします。
  6. メインVPC内の他のルートテーブル(例: プライベートサブネット用)も同様に更新します。

3.3.2. セカンドVPCのルートテーブルを更新

my-second-vpc のデフォルトルートテーブルを更新します。

  1. VPCサービスの左側ナビゲーションペインから「ルートテーブル」をクリックします。
  2. my-second-vpc に関連付けられているルートテーブルを選択します(通常、VPC作成時に自動生成されるデフォルトのルートテーブルです)。
  3. ルート」タブをクリックし、「ルートを編集」ボタンをクリックします。
  4. ルートを追加」をクリックします。
    • 宛先: 10.0.0.0/16 (相手の my-vpc のCIDRブロック)
    • ターゲット: 「Peering Connection」を選択し、プルダウンから作成したピアリング接続 (pcx-xxxxxxxx) を選択します。
  5. 変更を保存」をクリックします。

これで、両方のVPCのルートテーブルに、相手のVPCへのルーティングルールが追加され、VPC間の通信が可能になります。

4. VPC Peeringの動作確認

実際にEC2インスタンスをデプロイし、ピアリング接続が機能しているか確認しましょう。

4.1. 各VPCにEC2インスタンスを起動

  1. メインVPCのプライベートサブネットにEC2インスタンスを起動
    • 名前: EC2-in-MainVPC
    • サブネット: my-vpc-private-subnet-a
    • 自動割り当てパブリック IP: 「無効化
    • セキュリティグループ: Day 6で作成した app-server-sg など(SSHが許可されているもの)。このSGには、後ほど相手のVPCのEC2インスタンスのSGからのSSHも許可するルールを追加します。
  2. セカンドVPCのサブネットにEC2インスタンスを起動
    • 名前: EC2-in-SecondVPC
    • サブネット: my-second-vpc-subnet-a
    • 自動割り当てパブリック IP: 「無効化
    • セキュリティグループ: 新しくSGを作成(例: second-vpc-instance-sg、SSHを許可)。このSGには、メインVPCのEC2インスタンスのSGからのSSHも許可するルールを追加します。

4.2. セキュリティグループの更新(相互通信の許可)

それぞれのEC2インスタンスのセキュリティグループが、相手のEC2インスタンスからのSSH(またはPingなどテストしたいプロトコル)を許可するように設定します。

  1. EC2-in-MainVPC に適用されているSG (例: app-server-sg) のインバウンドルールに、以下を追加します。
    • タイプ: SSH (ポート 22)
    • ソース: second-vpc-instance-sg (相手のEC2インスタンスのSGを選択)
  2. EC2-in-SecondVPC に適用されているSG (例: second-vpc-instance-sg) のインバウンドルールに、以下を追加します。
    • タイプ: SSH (ポート 22)
    • ソース: app-server-sg (メインVPCのEC2インスタンスのSGを選択)

4.3. Bastion Host経由で通信テスト

Day 9で作成したBastion Hostを経由して、メインVPCの EC2-in-MainVPC にSSH接続します。
その後、EC2-in-MainVPC から EC2-in-SecondVPCプライベートIPアドレスに対してSSH接続またはPingを試行します。

# Bastion HostからEC2-in-MainVPCへ接続後、EC2-in-MainVPCのターミナルで実行
ping <EC2-in-SecondVPC_Private_IP_Address>

# もしSSH接続を試す場合(秘密鍵が必要)
ssh -i /path/to/keypair.pem ec2-user@<EC2-in-SecondVPC_Private_IP_Address>

Pingが通る、またはSSH接続が成功すれば、VPCピアリングが正しく機能していることになります。おめでとうございます!

5. AI時代におけるVPC Peeringの活用シナリオ

AI/MLワークロードでは、VPCピアリングは特に重要な役割を果たします。

  • データレイクVPCと分析VPC: 大規模な学習データが保存されているデータレイク用のVPCと、データサイエンティストがモデル開発や分析を行うための分析VPCを分離し、VPCピアリングで接続することで、セキュリティを保ちつつ高速なデータアクセスを実現します。
  • 本番推論VPCと管理VPC: モデルの推論を行う本番環境のVPCと、監視・ログ収集・管理を行うためのVPCを分離し、ピアリングで接続することで、セキュリティと運用管理の分離を図ります。
  • データプライバシーとコンプライアンス: 特定の規制要件(例: GDPR, HIPAA)があるデータを扱う場合、そのデータと関連するアプリケーションを専用のVPCに隔離し、必要なVPCとのみピアリング接続することで、データプライバシーとコンプライアンスを強化できます。
  • マイクロサービスアーキテクチャ: 複数のマイクロサービスが異なるVPCにデプロイされている場合、VPCピアリングはサービス間のセキュアで効率的な通信を可能にします。

本日のまとめと次へのステップ

今日は、AWSネットワークにおける複数のVPC間をプライベートに接続するための強力な機能である「VPC Peering (VPCピアリング)」について学び、実践しました。

  • VPCピアリングは、異なるVPCのインスタンスがプライベートIPアドレスで直接通信できるようにする機能。
  • セキュリティ向上、低レイテンシ、高スループットといったメリットがある。
  • CIDRブロックの重複不可推移的ルーティング非サポートという重要な制約がある。
  • 設定は、リクエスト、承諾、そして両方のVPCのルートテーブル更新という3ステップで行う。

VPCピアリングは、多くのVPCが存在する複雑なエンタープライズ環境で、ネットワークを効率的かつセキュアに設計するための基本的なスキルです。

明日のDay 11では、「Transit Gateway:複雑なネットワークを一元管理する」と題して、VPCピアリングの制約(推移的ルーティングの非サポート)を克服し、多数のVPCやオンプレミスネットワークを効率的かつスケーラブルに接続・管理するための「Transit Gateway」という、より高度なサービスについて学びます。これは、エンタープライズレベルのネットワークを設計する上で非常に重要な概念です。


今日のVPCピアリングのハンズオン、無事に完了しましたか?2つのVPCがプライベートに通信できたことに感動したなら、ぜひ「いいね」👍で教えてください!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?