AWSのVPCをVPCピアリング接続で相互に通信できるようにする
こんにちは。
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 BVPC C間での通信はできません

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

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

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

-
他の制限事項、詳細については下記のリンクを参照してください。
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