Amazon Virtual Private Cloud Connectivity Options（VPCからVPCへの接続）を整理してみた

# 背景・目的
先日、[Amazon Virtual Private Cloud Connectivity Options（Customer NetworkからVPCへ）を整理してみた](https://qiita.com/zumax/items/f95729145d371f087cf0)で、Customer NetworkとVPC間の接続パターンを整理しました。

今回は、VPC間の接続パターンを整理します。

# まとめ
下記に接続オプションをまとめます。※1

※1 [Amazon VPC から Amazon VPC への接続オプション](https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/amazon-vpc-to-amazon-vpc-connectivity-options.html)をコピーしています。最新の情報はドキュメントをご確認ください。

| オプション | ユースケース|利点|制限事項|
|:--|:--|:--|:--|
|VPC ピアリング|2 つの VPCs 間の AWS が提供するネットワーク接続。|AWS マネージドスケーラブルネットワークインフラストラクチャを活用|VPC ピアリングは推移的なピアリング関係をサポートしていない<BR><BR>大規模な管理が困難|
|AWS Transit Gateway|VPCs 用の AWS 提供のリージョンルーター接続|AWS マネージド高可用性およびスケーラビリティサービス<BR><BR>最大 5,000 個のアタッチメント用のリージョンネットワークハブ|Transit Gateway ピアリングは静的ルートのみをサポート|
|AWS PrivateLink|インターフェイスエンドポイントを使用した 2 つの VPCs 間の AWS 提供のネットワーク接続|AWS マネージドスケーラブルネットワークインフラストラクチャを活用|VPC エンドポイントサービスは、作成先の AWS リージョンでのみ使用可能|
|ソフトウェアVPN|VPCs 間のソフトウェアアプライアンスベースの VPN 接続|さまざまな VPN ベンダー、製品、プロトコルをサポート<BR><BR>ユーザーが完全に管理する|すべての VPN エンドポイントの HA ソリューションを実装する責任は利用者にある<BR><BR>VPN インスタンスがネットワークのボトルネックになる可能性がある|
|ソフトウェアVPNからAWS Site-to-Site VPN|VPCs 間のソフトウェアアプライアンスから VPN 接続|AWS マネージド高可用性 VPC VPN 接続|ソフトウェアアプライアンス VPN エンドポイントの HA ソリューションを実装する責任は利用者にある|

## 特徴
下記に特徴をまとめます

|特徴 |説明|
|:--|:--|
|VPCピアリング|VPCs、VPCルーティングテーブル、セキュリティグループ、ネットワークアクセスコントロールリストを活用して、VPCピアリング接続を利用できる<BR><BR>VPCs間の推移定期なピアリングはサポートしてない<BR><BR>1:1でピアリング接続を作成する必要がある|
|AWS Transit Gateway|Hub-and-Spokeアーキテクチャを備えたリージョンのVPCルーティング設定を統合するための可用性が高くスケーラブルなサービス<BR><BR>IPv4トラフィック、IPv6の両方がサポートされている<BR><BR>複数のTransit Gatewayルートドメイン、関連付け、伝搬を利用して、同じTransit Gateway内トラフィックをセグメント化できる<BR><BR>トラフィック検査、インターフェイスVPCエンドポイントアクセス、NATGW、NATインスタンスを介したトラフィックの出力などの共有サービスへのアクセスを一元化できる<BR><BR>同一AWSリージョン内、または異なるAWSリージョン間で相互にピアリング接続できる<BR><BR>AWS Transit Gatewayトラフィックは常にAWSグローバルバックボーンにとどまり、パブリックインターネットを経由しない<BR><BR>IPトラフィックを一元的に可視化するには、Transit Gateway Flow LogsをCWLとS3に出力できる|
|AWS PrivateLink|一部のAWSのサービス、他のAWSアカウントによってホストされるサービス、MarketplaceパートナーサービスにVPC内のプライベートIPアドレス経由で接続できる<BR><BR>インターフェイスエンドポイントは、VPCのサブネット内のENIとIPアドレスを使用して、VPC内で直接作成される<BR><BR>VPCセキュリティグループを使用して、エンドポイントへのアクセスを管理できる<BR><BR>プライベートIPアドレスを使用して、AWSネットワーク内で別のVPCにより提供されるサービスを安全に使用する場合に推奨<BR><BR>VPCsのIPアドレスが重複している場合に適している|
|ソフトウェアVPN|VPNソフトウェアプロバイダーを使用してVPN接続の両方の終端を管理する場合に推奨<BR><BR>各VPCにアタッチされたIGWを使用して、ソフトウェアVPNアプライアンス間の通信を容易にする<BR><BR>EC2で実行されるソフトウェアVPNアプライアンスを生成した複数パートナーとOSSコミュニティエコシステムから選択できる<BR><BR>設定、パッチ、アップグレードなどのソフトウェアアプライアンスを管理する責任は利用者<BR><BR>EC2がSPOFになる可能性あり|
|ソフトウェア VPN から AWS Site-to-Site VPN|VPCは、マネージドVPNオプションとソフトウェアVPNオプションを組み合わせて、複数のVPCs接続を提供<BR><BR>VPNアプライアンスと仮想プライベートGW間の安全なVPNトンネルを作成する|

### Software VPN to AWS Site-to-Site VPN VPC-to-VPC Routing
> この設計では、ネットワーク設計に単一障害点が生じる可能性があることに注意してください。詳細については、「付録 A: ソフトウェア VPN インスタンスの高レベル HA アーキテクチャ」を参照してください。


- ネットワーク設計にSPOFが生じる可能性あり

# 概要
> 複数の Amazon VPCs をより大きな仮想ネットワークに統合する場合は、これらの設計パターンを使用します。これは、セキュリティ、請求、複数のリージョンでのプレゼンス、または内部のチャージバック要件のために複数の VPCs を必要とする場合に便利です。これにより、Amazon VPCs。これらのパターンを Network-to-Amazon VPC 接続オプションと組み合わせて、リモートネットワークおよび複数の VPCs にまたがる企業ネットワークを作成することもできます。

> VPC VPCs 接続は、接続されている各 VPC で重複しない IP 範囲を使用する場合に最適です。例えば、複数の VPCsを接続する場合は、各 VPC が一意のクラスレスドメイン間ルーティング (CIDR) 範囲で構成されていることを確認してください。そのため、重複しない 1 つの CIDR ブロックを、連続して割り当て、各 VPC で使用することをお勧めします。Amazon VPC のルーティングと制約の詳細については、「Amazon VPC に関するよくある質問」を参照してください。

## VPC ピアリング
> VPC ピア接続は、同じネットワーク内にあるかのように各 VPC のプライベート IP アドレスを使用してルーティングできるようにする、2 つの VPC 間のネットワーキング接続です。VPC ピアリング接続は、独自の VPCs間、または別の AWS アカウントの VPC との間で作成できます。VPC ピアリングは、リージョン間ピアリングもサポートしています。
> リージョン間 VPC ピアリングを使用するトラフィックは、常にグローバル AWS バックボーンにとどまり、パブリックインターネットを経由しないため、一般的なエクスプロイトや DDoS 攻撃などの脅威ベクトルが減少します。


- VPCピア接続は、同一NWとのように各VPCのプライベートIPアドレスを使用して、ルーティングできるようにする2つのVPC間のNW接続
- 下記で接続が可能
    - 独自のVPCs間
    - 別のAWSアカウントのVPCとの間
    - リージョン間
- リージョン間VPCピアリング
    - 常にグローバルAWSバックボーンにとどまる
    - パブリックインターネットを経由しない
### VPC-to-VPC Peering
> AWS は VPC の既存のインフラストラクチャを使用して VPC ピアリング接続を作成し、個別の物理ハードウェアに依存しません。したがって、VPC 間で単一障害点やネットワーク帯域幅のボトルネックが発生する可能性はありません VPCs 。さらに、VPC ルーティングテーブル、セキュリティグループ、およびネットワークアクセスコントロールリストを活用して、VPC ピアリング接続を利用できるサブネットまたはインスタンスを制御できます。

- VPCs、VPCルーティングテーブル、セキュリティグループ、ネットワークアクセスコントロールリストを活用して、VPCピアリング接続を利用できる、サブネット、インスタンスを制御できる

> Amazon VPCs推移的なピアリングをサポートしていません。つまり、3 番目の VPCsを転送として使用して直接ピアリングされていない 2 つの VPC と通信することはできません。すべての VPCs が VPC ピアリングを使用して相互に通信できるようにする場合は、各 VPC 間に 1:1 の VPC ピアリング接続を作成する必要があります。または、 AWS Transit Gatewayまたは AWS Cloud WAN を使用して、ネットワークトランジットハブとして機能することもできます。

- VPCs間の推移定期なピアリングはサポートしてない
- 1:1でピアリング接続を作成する必要がある

> IPv4 トラフィックと IPv6 トラフィックはどちらも VPC ピアリング接続でサポートされています。ただし、使用されているセカンダリ IPv4 または IPv6 CIDR ブロックに関係なく、プライマリ IPv4 CIDR ブロックが重複している場合、2 つの VPCs をピアリングすることはできません。VPCs ピアリングを使用する場合は、プライマリ CIDR ブロックを VPC に割り当てるときに、この点を考慮してください。

- IPv4、IPv6のどちらもサポートされている
- IPv4のCIDRブロックが重複している場合、2つのVPCsをピアリングできない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/9d2cb77e-d43e-418f-4298-7a75f118214e.png)

## AWS Transit Gateway
> AWS Transit Gateway は、 hub-and-spoke アーキテクチャを備えたリージョンの AWS VPC ルーティング設定を統合するための、可用性が高くスケーラブルなサービスです。各スポーク VPC は、接続されている他の VPCs。では、IPv4 トラフィックと IPv6 トラフィックの両方がサポートされていますAWS Transit Gateway。

- Hub-and-Spokeアーキテクチャを備えたリージョンのVPCルーティング設定を統合するための可用性が高くスケーラブルなサービス
- IPv4トラフィック、IPv6の両方がサポートされている

> 複数の Transit Gateway ルートテーブル、関連付け、伝達を利用して、同じ Transit Gateway 内でトラフィックをセグメント化できます。異なるルーティングドメイン (本番稼働用トラフィックと非本番稼働用トラフィックなど) を 1 つの管理ポイントから管理できるため、これらのルーティングドメインは相互に通信できません。

- 複数のTransit Gatewayルートドメイン、関連付け、伝搬を利用して、同じTransit Gateway内トラフィックをセグメント化できる

> Transit Gateway によって作成された hub-and-spoke アーキテクチャを活用して、トラフィック検査、インターフェイス VPC エンドポイントアクセス、NAT ゲートウェイまたは NAT インスタンスを介したトラフィックの出力などの共有サービスへのアクセスを一元化することもできます。この一元化により、複数の VPCsでのこれらのリソースの管理の複雑さが軽減され、AWS のフットプリントを拡張する際の制御が向上します。

- トラフィック検査、インターフェイスVPCエンドポイントアクセス、NATGW、NATインスタンスを介したトラフィックの出力などの共有サービスへのアクセスを一元化できる

> Transit Gateway は、同じ AWS リージョン内または異なる AWS リージョン間で相互にピアリング接続できます。 AWS Transit Gatewayトラフィックは常にグローバル AWS バックボーンに留まり、パブリックインターネットを経由することがないため、一般的なエクスプロイトや DDoS 攻撃などの脅威ベクトルが減少します。

- 同一AWSリージョン内、または異なるAWSリージョン間で相互にピアリング接続できる
- AWS Transit Gatewayトラフィックは常にAWSグローバルバックボーンにとどまり、パブリックインターネットを経由しない

> Transit Gateway との間で送受信される IP トラフィックを一元的に可視化するには、Transit Gateway Flow Logs を Amazon CloudWatch Logs と Amazon S3 に発行できます。フローログデータはネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しません。

- IPトラフィックを一元的に可視化するには、Transit Gateway Flow LogsをCWLとS3に出力できる

### AWS Transit Gateway
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/ededb387-449c-5e87-8a90-24c3d09e2c5b.png)

## AWS PrivateLink
> AWS PrivateLink では、一部の AWS のサービス、他の AWS アカウントによってホストされるサービス (エンドポイントサービスと呼ばれます）、およびサポートされているAWS Marketplaceパートナーサービスに、VPC 内のプライベート IP アドレス経由で接続できます。インターフェイスエンドポイントは、VPC のサブネット内の Elastic Network Interface と IP アドレスを使用して、VPC 内で直接作成されます。つまり、VPC セキュリティグループを使用してエンドポイントへのアクセスを管理できます。

- 一部のAWSのサービス、他のAWSアカウントによってホストされるサービス、MarketplaceパートナーサービスにVPC内のプライベートIPアドレス経由で接続できる
- インターフェイスエンドポイントは、VPCのサブネット内のENIとIPアドレスを使用して、VPC内で直接作成される
- VPCセキュリティグループを使用して、エンドポイントへのアクセスを管理できる

### AWS PrivateLink
> プライベート IP アドレスを使用して、AWS ネットワーク内で別の VPC によって提供されるサービスを安全に使用する場合は、このアプローチをお勧めします。または、 AWS PrivateLinkは VPCs の IP アドレスが重複している場合に適しています。

- 　プライベートIPアドレスを使用して、AWSネットワーク内で別のVPCにより提供されるサービスを安全に使用する場合に推奨
- VPCsのIPアドレスが重複している場合に適している

> AWS PrivateLink は IPv6 を完全にサポートしますが、デュアルスタックを使用するには、送信先 VPCs 、VPC サブネット、Network Load Balancer、および DNS 名の両方を有効または変更する必要があります。これらの前提条件が満たされると、エンドポイントのサービス設定で IPv6 を有効にできます。

- IPv6を完全にサポートしている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/b2178a6d-43e6-c3c5-8509-e464de52cfec.png)

## ソフトウェア VPN
> Amazon VPC は、ネットワークルーティングの柔軟性を提供します。これには、2 つ以上のソフトウェア VPN アプライアンス間に安全な VPN トンネルを作成して、複数の VPCsをより大きな仮想プライベートネットワークに接続し、各 VPC 内のインスタンスがプライベート IP アドレスを使用してシームレスに相互に接続する機能が含まれます。このオプションは、優先 VPN ソフトウェアプロバイダーを使用して VPN 接続の両方の終端を管理する場合に推奨されます。このオプションは、各 VPC にアタッチされたインターネットゲートウェイを使用して、ソフトウェア VPN アプライアンス間の通信を容易にします。

- VPNソフトウェアプロバイダーを使用してVPN接続の両方の終端を管理する場合に推奨
- 各VPCにアタッチされたIGWを使用して、ソフトウェアVPNアプライアンス間の通信を容易にする

### Software Site-to-Site VPN VPC-to-VPC Routing
> Amazon EC2 で実行されるソフトウェア VPN アプライアンスを生成した複数のパートナーとオープンソースコミュニティのエコシステムから選択できます。この選択に加えて、設定、パッチ、アップグレードなどのソフトウェアアプライアンスを管理する責任もお客様にあります。

- EC2で実行されるソフトウェアVPNアプライアンスを生成した複数パートナーとOSSコミュニティエコシステムから選択できる
- 設定、パッチ、アップグレードなどのソフトウェアアプライアンスを管理する責任は利用者

> この設計では、ソフトウェア VPN アプライアンスが単一の Amazon EC2 インスタンスで実行されるため、ネットワーク設計に単一障害点が生じる可能性があることに注意してください。詳細については、「付録 A: ソフトウェア VPN インスタンスの高レベル HA アーキテクチャ」を参照してください。

- EC2がSPOFになる可能性あり


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/eb2c1204-b439-5c40-a602-cd3695d4aaa2.png)

## ソフトウェア VPN から AWS Site-to-Site VPN
> Amazon VPC は、AWS マネージド VPN オプションとソフトウェア VPN オプションを組み合わせて、複数の VPCsを接続する柔軟性を提供します。この設計により、ソフトウェア VPN アプライアンスと仮想プライベートゲートウェイの間に安全な VPN トンネルを作成し、各 VPC のインスタンスがプライベート IP アドレスを使用してシームレスに相互に接続できるようになります。このオプションは、次の図に示すように、ある Amazon VPC で仮想プライベートゲートウェイを使用し、別の Amazon VPC でインターネットゲートウェイとソフトウェア VPN アプライアンスを組み合わせて使用します。

- VPCは、マネージドVPNオプションとソフトウェアVPNオプションを組み合わせて、複数のVPCs接続を提供
- VPNアプライアンスと仮想プライベートGW間の安全なVPNトンネルを作成する

### Software VPN to AWS Site-to-Site VPN VPC-to-VPC Routing
> この設計では、ネットワーク設計に単一障害点が生じる可能性があることに注意してください。詳細については、「付録 A: ソフトウェア VPN インスタンスの高レベル HA アーキテクチャ」を参照してください。


- ネットワーク設計にSPOFが生じる可能性あり


# 考察
今回は、VPC間の接続オプションをまとめました。VPNでVPC間を接続するパターンは、知らなかったので整理できてよかったです。

# 参考

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/amazon-vpc-to-amazon-vpc-connectivity-options.html