1
0

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 VPC】VPCピアリング接続でセキュアなVPC間通信

Posted at

目指すはコレ!

同一リージョン内の異なる2つのAmazon VPC間で、プライベートなネットワーク接続を確立すること。インターネットを介さずにVPC-AのEC2インスタンスからVPC-BのEC2インスタンスへセキュアに通信できる環境を構築し、ping コマンドで接続を確認します。さらに、片方のEC2インスタンスへはAWS Systems Manager (SSM) を介してセキュアに接続し、そこから通信テストを行います。

この構成のメリット

VPCピアリング接続は、複数のVPC間で安全かつ効率的なプライベートネットワーク通信を可能にします。

  • セキュアな通信経路
    VPCピアリング接続は、AWSのプライベートネットワーク内でルーティングされるため、インターネットを経由しません。これにより、データが外部に露出するリスクを低減し、高いセキュリティを保ちながらVPC間の通信を実現します。

  • シンプルなネットワーク管理
    AWSのマネージドサービスとして提供されるため、簡単に設定・管理でき、運用負荷を軽減します。

  • 高いパフォーマンスと低レイテンシー
    AWSのバックボーンネットワークを直接利用するため、低レイテンシーで高いネットワークパフォーマンスが期待できます。これにより、VPCを跨いだアプリケーション連携やデータ転送がスムーズに行えます。

アーキテクチャ図

【VPCピアリング接続によるVPC間通信アーキテクチャ】
image.png

VPCピアリング接続とは???

2つのVPC間を、あたかも同じネットワークに属しているかのように接続するための仕組み。 これにより、異なるVPC内のリソース(EC2インスタンスなど)が、プライベートIPアドレスを使って直接通信できるようになる。 インターネットゲートウェイやVPN接続を介さずに、AWSのプライベートネットワーク内でセキュアかつ効率的な通信を実現する。

VPCピアリング接続は、異なるアカウントのVPC間や、異なるリージョンのVPC間でも利用できますが、今回は同じアカウント、リージョン、AZ内での接続を行います。

手順

VPCの作成とプライベートサブネットの準備

本ハンズオンでは、2つのVPC (VPC-AVPC-B) を作成し、それぞれにインターネットに接続しないプライベートサブネットを準備します。

VPC-Aの作成

【設定情報】

  • 名前タグ
    VPC-A
  • IPv4 CIDR ブロック
    10.1.0.0/16
  • IPv6 CIDR ブロック
    なし
  • テナンシー
    デフォルト

VPC-Bの作成

【設定情報】

  • 名前タグ
    VPC-B
  • IPv4 CIDR ブロック
    10.2.0.0/16
  • IPv6 CIDR ブロック
    なし
  • テナンシー
    デフォルト

VPCを作成すると、自動的にルートテーブルとネットワークACLも作成されますが、これらはデフォルト設定のままでOK。

プライベートサブネットの作成

各VPC内に、インターネットゲートウェイへのルートを持たないプライベートサブネットを作成します。今回は同一AZ内に配置します。

【AZ間通信の利用料金】
ピアリング接続を介していても、送信元と送信先のEC2インスタンスなどが
同じAZに存在する場合のデータ転送は、無料
異なるAZに存在する場合のデータ転送は、有料
この料金は、通常「AZ間データ転送アウト(Data Transfer Out of AZ)」として課金され、データがVPCから出ていく側(送信側)のVPCに対して発生します。

【VPC-A内のプライベートサブネット】

  • サブネット名
    VPC-A-PrivateSubnet-AZ1a
  • VPC
    VPC-A を指定
  • アベイラビリティーゾーン
    任意のAZ (例: ap-northeast-1a)
  • IPv4 サブネット CIDR ブロック
    10.1.1.0/24

【VPC-B内のプライベートサブネット】

  • サブネット名
    VPC-B-PrivateSubnet-AZ1a
  • VPC
    VPC-B を指定
  • アベイラビリティーゾーン
    任意のAZ (例: ap-northeast-1a)
  • IPv4 サブネット CIDR ブロック
    10.2.1.0/24

VPCピアリング接続の確立

VPC-AとVPC-B間で通信を可能にするために、VPCピアリング接続を作成します。

【設定情報】

  • ピアリング接続の名前タグ
    任意(例: VPC-A-to-B-Peering)
  • VPC (リクエスタ)
    • VPC ID
      VPC-AのVPC IDを選択
  • VPC (アクセプタ)
    • VPC ID
      VPC-BのVPC IDを選択
    • アカウント
      自分のアカウント
    • リージョン
      このリージョン (ap-northeast-1)
      【ピアリング接続作成画面】
      image.png

ピアリング接続を作成すると、リクエスタ側(VPC-A)からアクセプタ側(VPC-B)へリクエストが送信されます。VPC-Bのオーナーがリクエストを承諾することで、ピアリング接続の状態が 承諾の保留中 から アクティブ に変わります。
【ピアリング接続リクエスト承諾画面】
image.png

ルーティング設定の追加

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

VPC-Aのルートテーブル設定

VPC-Aのプライベートサブネットに紐付いているルートテーブルに、VPC-Bへのルートを追加します。

【設定情報】

  • 送信先
    10.2.0.0/16 (VPC-BのCIDRブロック)
  • ターゲット
    作成したVPCピアリング接続 (例: pcx-xxxxxxxxxxxxxxxxx)

VPC-Bのルートテーブル設定

VPC-Bのプライベートサブネットに紐付いているルートテーブルに、VPC-Aへのルートを追加します。

【設定情報】

  • 送信先
    10.1.0.0/16 (VPC-AのCIDRブロック)
  • ターゲット
    作成したVPCピアリング接続 (例: pcx-xxxxxxxxxxxxxxxxx)

EC2インスタンスの準備

VPC-AとVPC-BのそれぞれのプライベートサブネットにEC2インスタンスを作成し、SSMからの接続と、ピアリング接続経由での通信を可能にします。

SSM接続に必要な準備

IFエンドポイント作成、IAMロール作成、セキュリティグループ設定などの準備が必要。
詳細は以下を参照。

EC2インスタンス用セキュリティグループの作成

EC2インスタンスがSSMと通信し、かつピアリング接続されたVPC内のEC2インスタンスと通信できるようにルールを設定します。EC2-AとEC2-Bそれぞれのセキュリティグループが必要になります。

【設定情報】

  • インバウンドルール
    タイプ:すべてのICMP - IPv4 (pingを許可するため)
    ソース:VPC-AのEC2インスタンス用のセキュリティグループID (VPC-BのEC2インスタンス用SGに設定)
    ソース:VPC-BのEC2インスタンス用のセキュリティグループID (VPC-AのEC2インスタンス用SGに設定)
  • アウトバウンドルール
    タイプ:HTTPS (ポート443)
    送信先:SSM接続に必要なVPCエンドポイントのセキュリティグループID (SSM経由でのアクセスを許可するため)

EC2インスタンスの作成

VPC-AとVPC-Bのプライベートサブネットに、それぞれEC2インスタンスを起動します。

【EC2-Aインスタンス】

  • 名前
    EC2-A
  • AMI
    Amazon Linux 2023 AMI
  • インスタンスタイプ
    t2.micro
  • VPC
    VPC-A を指定
  • サブネット
    VPC-A-PrivateSubnet-AZ1a を指定
  • パブリックIPの自動割り当て
    無効化
  • IAMインスタンスプロフィール
    作成したIAMロール(SSM接続用)をアタッチ
  • セキュリティグループ
    作成したEC2インスタンス用セキュリティグループをアタッチ

【EC2-Bインスタンス】

  • 名前
    EC2-B
  • AMI
    Amazon Linux 2023 AMI
  • インスタンスタイプ
    t2.micro など
  • VPC
    VPC-B を指定
  • サブネット
    VPC-B-PrivateSubnet-AZ1a を指定
  • パブリックIPの自動割り当て
    無効化
  • IAMインスタンスプロフィール
    作成したIAMロール(SSM接続用)をアタッチ
  • セキュリティグループ
    作成したEC2インスタンス用セキュリティグループをアタッチ

SSMによるEC2インスタンスへの接続と通信確認

VPC-AのEC2インスタンスへSSMを使って接続し、そこからVPC-BのEC2インスタンスへping疎通確認を行います。

SSM接続に必要なVPCエンドポイントの作成、接続

AWS CLIを利用してVPC-AのEC2インスタンスへSSM接続します。

aws ssm start-session --target <インスタンスID>

Ping疎通確認

SSMで接続した EC2-A インスタンスから、EC2-B インスタンスのプライベートIPアドレスに対して ping コマンドを実行し、通信を確認します。

  • EC2-B インスタンスのプライベートIPアドレスを確認 (例: 10.2.1.10)。
  • EC2-A インスタンスにSSM接続したプロンプト画面で以下のコマンドを実行。
ping 10.2.1.10

【Ping疎通確認結果画面】
image.png

ping が成功すれば、VPCピアリング接続を通じてVPC-AからVPC-Bへのプライベート通信が確立されていることが確認できます。

今回の学び

今回のハンズオンを通じて、特に以下の点で学びを深めることができました。

  • AZ間通信料金
    同一AZ間であれば通信料は無料だが、異なるAZ間の場合は通信料がかかる!
    各AZが物理的に独立したデータセンターであり、その間を結ぶ専用の高速ネットワークインフラの構築・運用コストが発生するため。
    AZを跨ぐ場合のレイテンシーやデータ転送コストについても、今後の設計で考慮すべき点だと考えることができた。
    (AZが異なると通信料が発生することは知っていたが、その理由を考えたことがなかった。。。)
  • pingコマンドで使用されるプロトコル
    ICMP (Internet Control Message Protocol)が使用されている!
    (単純に知識不足で知らなかった。。。)
  • セキュリティグループ設定
    ソース、送信先対象にてセキュリティグループを選択する場合、
    プルダウンの候補には、作成されたVPC内にあるSGしか表示されないが
    別のVPCで作成されたSGIDを入力するとちゃんと認識してくれる!
    (大した気づきではないが、別VPCのSGも候補として表示されると勝手に思っていたので、なにか設定が足りていない?など少し詰まった。。。)
1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?