https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html
What is VPC peering?
A VPC peeringとは、2つのVPC間で、プライベートIPv4またはIPv6アドレスを使用して通信できるようにする接続
- 特徴
- 接続可能な範囲
- 同一アカウント内のVPC
- 別のAWSアカウントのVPC
- 異なるリージョン間のVPC(inter-Region VPC peering)
- 技術的な特性
- ゲートウェイ・VPN・ネットワークアプライアンス不要
- 物理ハードウェアに依存しない
- 単一障害点(Single Point of Failure)なし
- 帯域ボトルネックなし
- 通信のセキュリティと経路
- トラフィックは常にAWSのグローバルバックボーンネットワーク上を流れる
- インターネットを経由しない
- 通信はすべて暗号化されている
- DDoS攻撃や一般的な脅威から保護されやすい
- 接続可能な範囲
Pricing for a VPC peering connection
- 無料(Free)
- VPC peering connectionを作るだけなら無料
- 同一アベイラビリティゾーン (AZ) 内でのデータ転送
- たとえ異なるAWSアカウント間でも、同一AZ内なら通信コストは無料
- 課金されるケース
- 異なるアベイラビリティゾーン (AZ) 間の通信
- 例:東京リージョンの ap-northeast-1a と ap-northeast-1c 間
- 異なるリージョン 間の通信(Inter-Region VPC Peering)
- 東京リージョン ap-northeast-1 と大阪リージョン ap-northeast-3
- 異なるアベイラビリティゾーン (AZ) 間の通信
How VPC peering connections work
設定の流れは公式ドキュメントを参考にする
ドキュメントで重要そうなこと
- VPC A ↔ VPC B が ピアリング接続されていて、かつ同じリージョンにあるとき、
- VPC A のセキュリティグループの設定で、「通信を許可する相手」として、VPC B 内のセキュリティグループを直接指定できる。
- Public DNS ホスト名(例:ec2-xx-xx-xx-xx.compute.amazonaws.com)で相手を指定すると、その名前は Public IP アドレスに解決される
- よって、VPC ピアリング経由ではなく、インターネット経由になる可能性がある。
- DNS hostname resolutionを有効にすることで
- Public DNS ホスト名からPrivate IPアドレスに解決されVPC ピアリング経由になる。
手動で設定してみた感じ
前提として繋げたいVPC(VPC-A, VPC-B)はすでに存在するものとします。
- EC2 > Peering Connections に移動
- [Create Peering Connection]ボタンを押す
- 必要な項目(Requester、Accepter、VPC IDなど)を設定して作成
- Accepter VPC側は、Peering Connectionsページで該当リクエストの [Actions] → [Accept Request] を実行して承認
- Route Tablesの設定
- VPC-A 側のルートテーブルにレコード追加
- Destination: VPC-BのCIDR
- Target: 作成した Peering Connection(
pcx-xxxxxxx
)を選択
- VPC-B 側も同様に設定
- Destination: VPC-AのCIDR
- Target: Peering Connection
- VPC-A 側のルートテーブルにレコード追加
- 必要な設定は以上です。
- 通信できない場合は、各EC2のSecurity Groupが相手VPCのCIDRからのトラフィックを許可しているか確認してください。
VPC peering connection lifecycle
各ステータスはドキュメント読む
- Pending-acceptance
- 7日間アクション待ち(7日過ぎるとExpiredになる)
- Expired
- その後2日間表示され続ける
- Rejected
- 原則2日間(リクエスター)/2時間(アクセプター)表示される
- Failed
- 2時間(リクエスターに)表示される
- Deleted →
- 削除した側に2時間表示される
- 削除していない側に2日間表示される
Multiple VPC peering connections
- VPCピアリングは1対1の関係(2つのVPC間だけの接続)
- 1つのVPCに複数のピアリング接続は可能
- transit point(中継)な通信は不可
- 例えば:
- A ↔ B
- A ↔ C
- でも B ↔ C は通信できない
- BとCの通信をしたいなら、直接BとCの間にもピアリング接続を作る必要がある
- 例えば:
VPC peering limitations
Connections
- VPC peering connection には、1VPCあたりDefaultで 50 の上限があり、最大で 125 まで引き上げ可能です。
- VPC peering connectionは、VPCの組み合わせで1つしか作れません。
- 同じペア(VPC A ↔ VPC B)間には、1本まで。
- VPC peering connectionに付与したTagは自分にしか見えない
- peeringしているVPCのCIDRブロック(IP範囲)がRFC 1918で定義されたプライベートIPアドレスの範囲外だったら、そのVPCのプライベートDNSホスト名(例:ip-10-0-1-10.ec2.internal)を使っても、プライベートIPアドレスに変換(名前解決)できない
- Enable DNS resolution supportを有効にしていれば解決できる
- private internets
- 10.0.0.0 - 10.255.255.255 (10/8 prefix)
- 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
- 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
例えば、
- Elastic Load BalancingでInternet-facingに関しては、Peering越しにアクセスはできないけど、internalならアクセスできる。
Overlapping CIDR blocks
- CIDRが重複してるとpeering不可。
Edge to edge routing through a gateway or private connection
Peering越しに以下のサービスは使えない。
- Internet Gateway (IGW)
- NAT Gateway / NAT Instance
- VPN接続
- AWS Direct Connect
- Gateway Endpoint (例: Amazon S3)
Shared VPCs and subnets
VPC 所有者のみがピアリング接続を操作(説明、作成、承認、拒否、変更、削除)できます。参加者はピアリング接続を操作できません。