プログラマブル深海魚

目立たないけど華やかに

AWSで2つのVPC間をピアリング接続する

AWSで、2つのVPC間をピアリング接続して通信できるようにしてみました。

目次

作業の概要

VPC間で通信できるようにするため、以下のような流れで作業をします。

  1. VPC間のピアリング接続を作成する
  2. VPC(サブネット)のルートテーブルに相手側へのルートを追加する
  3. セキュリティグループに接続を許可するルールを追加する

事前準備

VPCを作成する

ピアリング接続を試すために、VPCを2つ作成します。
今回はピアリング接続を試すだけなので、プライベートサブネット1つ・AZ1つで作成します。

VPCを2つ作成した

VPCにEC2インスタンスを作成する

通信するWebサーバ(EC2インスタンス)を各VPC上に作成する。

EC2インスタンスを作成した

VPCのピアリング接続を作成する

VPCのメニューの[仮想プライベートクラウド]>[ピアリング接続]から、「ピアリング接続を作成」をクリックしてピアリング接続を作成します。

リクエスタ、アクセプタに事前準備で作成したVPCを設定し、「ピアリング接続を作成」をクリックします。

ピアリング接続の設定

ピアリング接続を作成すると「承諾の保留中」となるため、[アクション]>[リクエストの承諾]をクリックして、ポップアップの[リクエストを承諾]をクリックして承諾します。

以上で、2つのVPC間にピアリング接続が作成されました。

ルートテーブルを編集する

ピアリング接続を作成しただけではVPC間の通信がルーティングされないため、ルートテーブルを編集します。
VPCのサブネットが関連付けられているルートテーブルに、もう一方のVPCへのルートを追加します。

まず、VPC1のサブネットに関連付けられているルートテーブルを編集します。

VPC1のサブネットを表示して関連付けられているルートテーブルを確認する

ルートテーブルにチェックを入れて詳細を表示して、[ルート]>[ルートを編集]からルートを追加します。

ルートテーブルを表示する

送信先がVPC2のCIDRブロック、ターゲットが作成済みのピアリング接続のルートを追加します。[変更を保存]をクリックして、ルートテーブルを更新します。

VPC1にルートを追加する

VPC2のサブネットに関連付けられているルートテーブルも、同様に編集します。

VPC2にルートを追加する

以上で、2つのVPC間のルートがルートテーブルに追加されました。

セキュリティグループを編集する

ルーティングまでは実施されるようになりましたが、このままだとファイアウォール(セキュリティグループ)で通信が拒否されてしまうため、セキュリティグループを編集します。
今回は、VPC1のEC2→VPC2のEC2 のpingが通るように設定してみます。

VPC2にあるEC2に設定されているセキュリティグループを編集します。

VPC2にあるEC2を表示して設定されているセキュリティグループを確認する

[インバウンドルール]>[インバウンドのルールを編集]からインバウンドルールを追加します。

セキュリティグループを表示する

VPC1からの「すべてのICMP - IPv4」を許可するルールを追加します。[ルールを保存]をクリックして、セキュリティグループを更新します。

インバウンドルールを追加する

以上で、VPC1のEC2→VPC2のEC2 のpingが許可されるようになりました。

動作確認

VPC1のEC2に接続して、実際にVPC2のEC2にpingをしてみます。
EC2 Instance Connectで接続しました。

pingを実行する

pingが通りました!

参考文献

VPC ピア機能とは - Amazon Virtual Private Cloud
https://docs.aws.amazon.com/ja_jp/vpc/latest/peering/what-is-vpc-peering.html

AWSVPCVPCピアリング接続で相互に通信できるようにする
https://zenn.dev/rescuenow/articles/8e21a751c828c6

【神アプデ】え!? プライベートなEC2にもAWSマネコンから簡単SSHできるように?? #ハンズオン - Qiita
https://qiita.com/minorun365/items/696ba8bf683a403550d0