📘

AWSのVPCをVPCピアリング接続で相互に通信できるようにする

2022/11/18に公開

こんにちは。
AWSで環境を構築していると、異なるアカウント、違うリージョン間のVPCでインターネットを通さずに通信を行いたい場面が出てくると思います。その時に簡単に設定できるVPCピアリング接続について解説したいと思います。

VPCピアリング接続とは

VPC ピアリング接続は、2 つの VPC 間でプライベートなトラフィックのルーティングを可能にするネットワーキング接続です。どちらの VPC のインスタンスも、同じネットワーク内に存在しているかのように、相互に通信できます。VPC ピアリング接続は、自分の VPC 間、別の AWS アカウントの VPC との間、または別の AWS リージョンの VPC との間に作成できます。

上記はAWSドキュメントからの引用となりますが、

  • 同じルートアカウントのVPC間
  • 異なるルートのアカウントのVPC間
  • 異なるリージョンのVPC間
    で接続できます。

VPCピアリング接続の制限

VPCピアリング接続には制限がありまして、大きなものだと以下のようなものがあります。

  • CIDRブロックが一致・重複するVPC間のピアリング
  • ピアリング先のVPCを経由する通信
    • VPC Aを経由してVPC B VPC C間での通信はできません

      VPC B VPC Cで通信したい場合は以下の図のようにVPC B VPC C間でVPCピアリング接続をする必要があります。

    • ピアリング先のVPCSite to Site VPNDirect Connect VPNを使用してオンプレミスの環境にアクセスすることはできません

    • ピアリング先のVPCInternet GatewayおよびNatGatewayを利用してインターネットとの通信はできません

他の制限事項、詳細については下記のリンクを参照してください。
https://docs.aws.amazon.com/ja_jp/vpc/latest/peering/vpc-peering-basics.html

VPCピアリング接続の設定

VPCピアリング接続を下記の条件で設定してみます。

  • 異なるルートアカウント
  • 異なるリージョン
  • ルートアカウント A の VPC AにあるEC2インスタンスからルートアカウントBのVPC Bにある
    EC2インスタンスへSSHログインできるようにする

VPC A

アカウントID リージョン CIDR VPC ID
xxxxxx アジアパシフィック(東京) ap-northeast-1 172.22.51.0/24 vpc-xxxxxx

VPC B

アカウントID リージョン CIDR VPC ID
yyyyyy アジアパシフィック(大阪) ap-northeast-3 172.31.0.0/16 vpc-yyyyyy

またピアリング接続先のアカウントIDとVPC IDが必要になりますので用意しておいてください。

リクエストする側の設定(リクエスタ)

AWSマネージメントコンソールから仮想プライベートクラウドピアリング接続にあるピアリング接続を作成をクリックし、以下の内容をフォームに入力します。

設定

項目 説明
名前 - オプション リソースを識別する為のNameタグ(任意)
VPC(リクエスタ) 接続元のVPC IDを選択する
アカウント 別のアカウントを選択する
アカウント ID 接続先のVPC IDを入力する
リージョン 接続先VPCのリージョンを選択する
VPC(アクセプタ) 接続先のVPC IDを入力する

入力が終わったらピアリング接続を作成ボタンをクリックしてください。
相手先にリクエストが届き、ピアリング接続の一覧には下記の画像のように承認の保留中というステータスで表示されます。

リクエストを受ける側の設定(アクセプタ)

次にリクエストを受ける側でAWSマネージメントコンソールから仮想プライベートクラウドピアリング接続で一覧を表示するとリクエストされたピアリング接続が承諾の保留中というステータスで表示されるので、ラジオボタンで選択しアクションからリクエストの承諾を選び、表示されたダイアログでリクエストの承諾をクリックしてください。
ステータスがアクティブになっていればピアリング接続は成功です。


ルートテーブルの追加

VPCピアリング接続の設定を行った後は、リクエスタ、アクセプタ両方にピアリングした相手側へのルーティングを追加します。
設定方法は通常のルートテーブルと同じで、相手先のCIDRを入力します。ターゲットはピアリング接続を選択し、設定したピアリング接続のIDを選択します。

セキュリティグループの追加

最後にVPC AからVPC BへSSH接続できるようにセキュリティグループを追加します。
設定内容については本筋ではないので省略します。

sshの接続確認

動作確認にはそれぞれのVPCでEC2インスタンスを立ち上げ、VPC A側のインスタンスからVPC Bのインスタンスへsshログインします。
sshの設定回りは本筋ではないので省略します。

インスタンスのIPアドレス

VPC プライベートIPアドレス
VPC A 172.22.51.33
VPC B 172.31.45.244
[ec2-user@ip-172-22-51-33 ~]$ ssh 172.31.45.244 -i .ssh/test.pem 
The authenticity of host '172.31.45.244 (172.31.45.244)' can't be established.
ECDSA key fingerprint is SHA256:EDV54PMowRA4A3jesAe3K/QQcO+NgT1661iqtosAlaM.
ECDSA key fingerprint is MD5:f8:5a:54:83:87:5b:cf:be:4f:2c:5a:7e:b8:b9:09:ea.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.31.45.244' (ECDSA) to the list of known hosts.
Last login: Fri Nov 18 03:56:09 2022 from ip-172-22-51-33.ap-northeast-3.compute.internal

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
1 package(s) needed for security, out of 1 available
Run "sudo yum update" to apply all updates.

まとめ

以上がAWSでVPC間を繋げるVPCピアリング接続の紹介となります。ピアリング接続は制限事項に注意すれば簡単に異なるリージョン、アカウント間の通信ができるように設定できます。
リージョンをまたぐバックアップ環境との通信とかに使えると思います。
このドキュメントが設定の際の一助になれば幸いです。

レスキューナウテックブログ

Discussion