試験対策: AWS Certified Advanced Networking - SpecialtyのDesign and Implement Hybrid IT Network Architects at Sacleまとめ

試験対策: AWS Certified Advanced Networking - Specialtyの無料トレーニングをまとめました。

- 私個人の学習メモのため、記載粒度は私の理解に合わせて省略していることご了承ください。
- 原文が全て英語のため、誤訳、誤解釈はご了承ください。

# Design and Implement Hybrid IT Network Architects at Sacle

## Conectivity Options

![スクリーンショット 2021-11-03 22.08.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/abf1aab6-bc2f-c050-6b2e-b256cd32f24b.png)

大きく以下3つの接続オプションが存在することをおさえる。

### Public Internet
パブリックIP、Elastic IP、インターネットのoutgoingの料金。

### VPN
インターネットのoutgoing料金はVPNにも適用される。
IPSecの認証と暗号化。
AWSのマネージドVPNとEC2を利用したユーザー管理型のVPN。

### AWS Direct Connect
AWSパートナーとなるネットワークキャリアが提供するダイレクトコネクト。
インターネットとのプライベート通信の分離、一貫性のあるネットワーク提供、グローバルな多拠点との接続。
※Sub-1Gbpsは、100Mbpsや500Mbpsといった帯域を指す。

プライベートな通信を実現するのに、料金の観点でVPNを選択するべきか、Sub-1GbpsのDirect Connectを選択するべきか、他の観点でも考慮した時に何を選択するべきなのか、について言及。

## Types of VPN

![スクリーンショット 2021-11-03 22.18.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7ed14680-832c-5f0e-59e9-b6a6410e70af.png)

VPNにはSite-to-site VPNとClient-to-site VPNが存在する。

### Site-to-Site VPNのアーキテクチャパターン

![スクリーンショット 2021-11-03 22.23.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/d4eb70a3-b00c-ddac-1ff2-a8a20f8532db.png)

アーキテクチャパターンとして二つ存在。

1. Virtual Private Gateway (VGW)がカスタマーとのVPN接続の終端となるケース。VGWはAWSが提供するマネージドサービス。
2. EC2上にVPNを終端するソフトウェアを準備し、それがカスタマーとのVPN接続を終端するケース。

VGWはIPsecのみをサポートしているため、GREやDM-VPNなど別プトロコルを利用してカスタマー拠点側と接続したい場合は2つ目のアーキテクチャパターンを選択する必要がある。

## VGW

VGWに関する説明。

![スクリーンショット 2021-11-03 22.29.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/728e50b5-7ab3-eee9-79c9-e066e91926d6.png)

- マルチAZで構成。
- 1VPCにつき、1VGWをアタッチ。
- VPNとダイレクトコネクトに利用。
- VPCに対してアタッチもデタッチも可能。アタッチは同一アカウントであり、かつ同一リージョンの必要あり。
- プライベートAS番号を選択可能。(BGP利用時)

![スクリーンショット 2021-11-03 22.34.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7fd19a89-ea9f-fe1e-ca10-d93ee1eff9e3.png)

ルーティングテーブルのターゲットとしてVGWが選択されている場合、図のようにデータセンターの192.168.1.0/24のセグメントへのルートとなる。
またデータセンター側へのルートの準備は2パターン存在する。

1. BGPによりデータセンターからルーティングを受け取るパターン。この場合、PropagatedはYesとなる。
2. 手動でルーティングテーブルを設定するパターン。この場合、　PropagatedはNoとなる。

![スクリーンショット 2021-11-03 22.39.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7653fda3-6bf5-5140-dd9a-192a43357d16.png)

VGWには2つのパブリックIPが準備されており、IPsec接続の冗長性を確保できるようになっている。

### BGPによるルーティング制御

![スクリーンショット 2021-11-03 22.41.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/8bf8ba1c-2ae7-744b-8ea4-016055e14239.png)

非対称ルーティングとならないようにBGPを設定する。
カスタマー拠点とAWS間はeBGPによる接続のため、ASパス長による優先度制御またはMEDを利用した優先度制御を使って冗長化を実現しながら非対称ルーティングとならないようにする。
※これはAWSサービスというよりネットワークのルーティング設計の話。

### VGWによるcloudhub機能
![スクリーンショット 2021-11-03 22.47.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/d4e52ebe-edd4-e04e-9a3b-2b3d6d8fc61f.png)

一つのVGWに複数のカスタマー拠点がVPN接続されている場合、VGWをハブとし、カスタマー拠点をスポークのような形でカスタマー拠点間の通信が可能。

### VGWの大事なことまとめ

![スクリーンショット 2021-11-04 0.09.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/c6949c7e-17a8-6a3e-452a-62b5b3d349ff.png)

- VGWのIPsecは初期ネゴシエーションでイニシエーターにならない。そのため、VGWとVGW間でIPsecを張ることはできない。カスタマー拠点のIPsecを張るルーターから接続を開始する。
- VGWが発したDPDの確認メッセージにカスタマー拠点側が3回続けて応答がない場合は、IPsecトンネルをクローズする。→カスタマー拠点側はDPDの設定は有効にする必要あり。
- ルートベースもポリシーベースも対応しているが、ポリシーベースではトンネル一つにつきSAが一つしか作れない。→ポリシーで指定した1つのネットワーク空間だけ通信可能となることを考慮して設計。

### VGWを使ったVPNでアクセスできるAWSリソースとそうでないもの

![スクリーンショット 2021-11-04 0.13.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/b1c0aad9-4517-1a88-7925-9eb7ae5ce6a6.png)

画像の通り。

※NLBとPrivateLinkは現在アクセスできるようだ。EFSについてもPrivateLinkに対応しているため、現在アクセスできないのはVPC DNP IPとAWS public IP rangeくらい？
https://aws.amazon.com/jp/about-aws/whats-new/2018/09/network-load-balancer-now-supports-aws-vpn/
https://aws.amazon.com/jp/about-aws/whats-new/2018/09/aws-privatelink-now-supports-access-over-aws-vpn/

### モニタリングとコスト

![スクリーンショット 2021-11-04 0.36.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/3ec6d8df-b9a9-445a-1250-818718ec2bdc.png)

- モニタリング対象はトンネルの状態、トンネルのデータのin/out。
- スループットは1.25Gbpsまで。
- トンネル一つあたり0.05ドル/1時間。

## EC2を利用したSite-to-site-VPN

![スクリーンショット 2021-11-04 0.40.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/a9a9a198-71a3-8815-c50b-c97880320741.png)

VGWじゃ足りないという人はEC2で好きにやってくれという話。

![スクリーンショット 2021-11-04 0.51.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/4634e1fa-d447-3a59-b031-406747cdfeeb.png)

EC2を用いたSite-to-site VPNのアーキテクチャ例。
カスタマー拠点側と通信したいEC2インスタンスがあるサブネットのルーティングには、VPNを終端するEC2のENIをネクストホップに指定する設定になる。
またこの場合、スループットは2〜2.5Gbpsが期待できるため、VGWより優位。
※プレイスメントグループの通信フローの設定次第で最大10Gbps, IGWでは最大5Gbps出るはずなのに、なぜ2〜2.5Gbpsなのかについて言及されており、これはEC2のソフトウェア処理がボトルネックとなっていると説明されている。

### EC2を用いたVPNの注意点

![スクリーンショット 2021-11-04 1.05.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/5e4c4d67-dec0-85ce-50f4-c41fd6dd7351.png)

- EC2のヘルスチェックをすること。
- BFDで高速なルートの切り替えを行うこと。
- pingによるモニタリングを行うこと。
- VPNコネクションは第二の代替経路を準備すること。
- AWS側のルーティングテーブルの書き換えも必要なため、それも考慮すること。
※AWS MarketPlaceに上記一式をやってくれるやつがあるから探すとよい。

![スクリーンショット 2021-11-04 1.12.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/f27127e2-38af-db66-a782-1a30a3042750.png)

EC2を用いたVPNのまとめ。

### EC2を用いたVPNにしかないメリット (VGWとの比較)

![スクリーンショット 2021-11-04 1.15.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/c563d15a-e48c-fc5b-d309-c96cafed201f.png)

VPNを終端するEC2でNATも行えば、VGWではアクセスできないAWSサービスにカスタマー拠点側からアクセスできるという話。
※上記で触れたように現在、VGWでもほとんどのAWSサービスにアクセスできるため、あまりメリットとならない予感がしている。

### 水平スケーリング例A

![スクリーンショット 2021-11-04 22.53.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/0140f427-3253-2dc7-6377-0aadf6f0a485.png)

垂直スケーリングはEC2インスタンスのスペックアップだが、水平スケーリングはEC2を横に並べる。垂直スケーリングを行っても、2-2.5Gbpsの上限は突破できないため、それを突破する例として図のようなスケーリング例が紹介される。

カスタマー拠点の通信先セグメントを2つに分けて、ルーティングによって通信経路を分散させる方法。ただし、特定のサーバに通信が偏ってしまった場合の管理は大変だよね、と投げかける。

### 水平スケーリング例B

![スクリーンショット 2021-11-04 22.57.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/a51b85b4-35c4-d123-1cd3-524987c9d144.png)

例Aではカスタマー拠点側を分割していたが、例BではAWS側のインスタンスのサブネットを分割して通信を分散させる。ただし、例Aと同様に特定のインスタンスに通信が偏ったらどうするのと投げかけ。

### 水平スケーリングと終端例A

![スクリーンショット 2021-11-04 23.03.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/de610244-2d94-1b30-3a0d-a167294018ad.png)

IPsecを終端するEC2インスタンスの手前に通信を分散させるEC2インスタンスを挟む例。
このEC2インスタンスが2-2.5Gbpsの壁にひっかからないか触れており、あくまで2-2.5GbpsはIPsecの暗号化と復号化を行うIPsecを終端させるインスタンスの話であって、この分散処理を行うEC2はその壁に引っかからないと説明している。
そのため、この終端例Aはあり。

### 水平スケーリングと終端例B

![スクリーンショット 2021-11-04 23.38.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/d440b37b-4fc4-0255-30b2-b662bfde04f3.png)

GREトンネルを張る例Bは、本来AWS内で利用できないマルチキャスト通信をカスタマー拠点に届けることが可能になる。

## Client-to-site VPN

![スクリーンショット 2021-11-04 23.41.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7fc5d0c7-2092-25c3-a95c-03cc610b841f.png)

VGWは対応していない。EC2インスタンスを利用して実現する必要がある。

![スクリーンショット 2021-11-04 23.43.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/e2c94efa-1a63-3554-cfcd-c270b048ea20.png)

図ではシングルサブネットに収容しているがマルチAZを利用して可用性を高める。VPNソフトの機能やDNSを利用して負荷分散を実現することが大事。

## VPNユースケースまとめ

![スクリーンショット 2021-11-04 23.48.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/0222f734-0c04-a626-c8c3-c1ba12666d43.png)

- IPsecならVGWを利用したマネージドVPN
- IPsec以外ならEC2ベースのVPN
- IDSやIPSといった手法でセキュリティを確保したいならEC2ベースのVPN ※マネージドVPNの間にコンポーネントを挟んでもいいのでは・・・
- EC2間でL3で暗号化した通信をしたい場合はホスト間VPNを導入する。※ここまであまり話に出てない
- ダイレクトコネクトはTLSを提供しないため、ダイレクトコネクト上でマネージドVPNを利用するケースもある
- マルチキャストに対応したい場合はGREトンネルを終端同士で張る。


## ダイレクトコネクト概要

![スクリーンショット 2021-11-05 0.03.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/4c5fa983-73c7-a0be-f746-8d3ff684a0ea.png)



- カスタマー拠点との通信とインターネット通信を完全に分離できる
- インターネットのアウトバウンドの料金よりDXの料金の方が安い。※とても強調している
- インターネットは国をまたいだり、距離が長くなる場合に通信品質を保証できないがダイレクトコネクトは保証される
- 一つのダイレクトコネクト接続拠点からグローバル(あらゆるリージョン)のAWSインフラに接続できる

![スクリーンショット 2021-11-05 0.10.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/c4fdd418-4abd-f190-ebaa-8ce2e1228b64.png)


- ダイレクトコネクトロケーション(DX location)は、AWSが所有しておらず、例としてEquinixのようなデータセンターサービスを提供する事業者によって準備されている。AWSとしてはダイレクトコネクトルータ(Direct Connect Router)を準備しているだけ。
- Direct Connectを経由してVPCへの接続はもちろん、各リージョンのVPCには配置されないサービス(パブリックサービス)にも接続ができる。
- ダイレクトコネクトロケーション内にカスタマー用のオンプレミスサーバを設置(Coloation)してもいいし、そこからネットワークを伸ばした自身のデータセンターにつないでもいい。

![スクリーンショット 2021-11-05 0.15.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/831251b2-6a1e-acfb-9ab2-60e1255bda25.png)

1) ダイレクトコネクトロケーション内にオンプレミスサーバを設置するパターン
2) AWSと事業パートナーを結ぶ通信キャリアがキャリアサービス内でダイレクトコネクト接続を提供するパターン
3) ダイレクトコネクトロケーションと自身のデータセンター間をVPNサービスで自身やサードパーティの提供者によって接続するパターン

AWSとしてはリクエストから72時間でダイレクトコネクトルータのポートと接続を提供するが、あくまで提供範囲はダイレクトコネクトルータまでであることを強調。

### ダイレクトコネクトの始め方

![スクリーンショット 2021-11-06 1.00.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/1c9040a3-a362-0796-72a7-469f808847dc.png)

- 1Gまたは10Gの専用ポートの利用。
    - ポートの帯域を全て自身で利用できる。
    - 複数のバーチャルインタフェースに対応。（パブリックとプライベート）
    - 準備手続きはAWSマネジメントコンソールで承認の手紙をダウンロードするだけ。
- sub-1G (50Mbps-500Mbps)のホストされた接続の利用。
    - AWSパートナーネットワークによる提供。AWSパートナーがホストし、それをユーザーに分割して提供する。
    - 各接続は帯域とVLANが決定されている。
    - 各接続は一つのバーチャルインタフェースに対応(パブリックまたはプライベート）

### ダイレクトコネクトの物理的接続仕様
![スクリーンショット 2021-11-06 1.08.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/bf07fba7-01d1-a363-ef48-47cd12c24dda.png)

- 1Gまたは10Gの専用線ポートを利用する場合はDX location内にてCross Connect (構内接続)を完了させる必要あり。
- 光ファイバーの接続 1000Base-LX (1G) または10GBase-LR (10GB) のどちらか。
- 接続機器はVLANは802.1qに対応、ルーティングはBGPに対応する必要あり。
- BFDに対応していると望ましい。

BFDは必須ではないが障害時のフェールオーバーまで時間が大きくなってしまうことから推奨。

### 物理接続後のダイレクトコネクトの設定の始め方

![スクリーンショット 2021-11-08 0.21.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/dde6be7b-f32d-c481-e584-2fe88dac6dd5.png)


- VIFからはじめる。VIFにはプライベートとパブリックの2種類が存在。
- プライベートVIFはVPCと接続する。VPCにVGWを準備しVIFを接続する。この場合、前述のVPNで話した1.25Gbpsの上限はない。
- パブリックVIFはDynamoDBやKinesisといったパブリックサービスにネットワークの揺らぎなしにアクセスできる。
- 準備するASNは、プライベートでもパブリックでも利用可能だが、もちろんパブリックの場合は自身が所有している必要あり。
- VIFが3つあるということは、VLANが3つ存在しているということ。


### Direct Connect Gateway

![スクリーンショット 2021-11-08 0.28.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/70773ce4-cbf1-64a4-d2a3-da5b63a62cd2.png)


- Direct Connect Gatewayは任意のリージョンに接続することが可能。
- ただしVPCへの接続のみに限定。パブリックVIFは利用不可。
- 前スライドではDirect Connectの一つのVIFがあるVPCのVGWへ直接接続をしていたが、図の通りDirect Connectの一つのVIFがDirect Connect Gatewayに接続される。それが各VPCのVGWがDirect Connect Gateway接続する。
- VGWからDirect Connect Gatewayの接続は、Amazonのバックボーンを経由する。そのため、あるDirect Connect Gatewayに全く異なるリージョンのVPCが複数接続されていても気にする必要はない。※もちろん、オンプレミス拠点とリージョンが異なる場合は、一定の遅延などはある理解。

### パブリックVIF

![スクリーンショット 2021-11-08 0.43.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/57b57237-c883-7e46-2299-8fdfcafbe294.png)

- パブリックVIFにはパブリックIPアドレスが必要。
- パブリックASNが必要。プライベートASNでもいい。ただしAS-PATH prependが利用できないため、経路の優先制御をしたい場合は注意。
- パブリックVIFを通じて、BGPでAWSサービスのパブリックIPレンジが送られてくる。適切にルーティング情報をフィルタリングしよう。
- SNSトピックで広報されるルーティング情報の変化をサブスクライブできるらしい。
- BGPコミュニティ属性を使ってDirect Connect経由とするかインターネット経由とするか区別できる。

![スクリーンショット 2021-11-08 0.55.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/0ed0e223-5b60-d0f1-6f02-943dae681b7e.png)

- コミュニティ属性(タグ)により、AWSサービスのパブリックIPをどこまでDirect Connect経由にするか制御できる。
    - Local AWS Region： 自リージョン (Direct Connect Locationの？　）
    - Local Continent: 自身の大陸のリージョン
    - Global: 全て
    
### VPC接続の通信の暗号化

![スクリーンショット 2021-11-30 22.48.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7e483f44-004f-741d-5efd-eb19660eb3b0.png)

プライベートVIFでは通信が暗号化できない。
通信を暗号化した接続は以下が必要。
- AWSマネージドVPN(VGW)を利用する場合はパブリックVIFを選択することで実現できる。
- EC2によるVPNアプライアンスを利用すれば、プライベートVIFでもパブリックVIFでもどちらでも実現できる。

#### DX＋VGWを利用した暗号化通信の実現

![スクリーンショット 2021-11-30 22.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/d1f507a1-4dbd-6df8-e845-2eeb39d34394.png)

プライベートVIFによるDX接続は暗号化できないが、図のようにパブリックVIF接続によりDX＋暗号化の通信が可能になる。
VGWの接続エンドポイントのグローバルIPアドレスはDynamoDBやS3などその他サービスと同様にパブリックVIFによって拠点側に広報されるため、そのグローバルIPアドレスにたいしてカスタマー拠点のルーターがVPNを張ることでDX上に暗号化通信を実現できる。

#### DX+EC2を用いたVPNによる暗号化通信の実現

![スクリーンショット 2021-11-30 23.06.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/8577ad27-62ed-7128-2ce1-637518a8a34f.png)

プライベートVIFを経由してVPC上のEC2インスタンスとカスタマー拠点のルーター間でVPNを張ればよい。
ただしVPNを張っても張らなくてもVPCのセグメント情報を経路情報としてカスタマー拠点に広報すれば通信できてしまい、VPNトンネルを経由する通信としない通信の二つの経路が存在することになる。これは問題を引き起こす原因になりかねないため、望ましくない。

![スクリーンショット 2021-11-30 23.22.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7f24da07-31ef-70b1-0f79-32caa9fd73a9.png)

パブリックVIFであれば、上記のVGWと同様にElastic IPアドレスが広報されるためEC2を用いたVPN接続をグローバルIPアドレスを使って確立できる。これは上記のプライベートVIFのような懸念を引き起こさない。

## 複数AWSアカウントをまたいだVPC接続

![スクリーンショット 2021-11-30 23.27.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/2074a484-0504-0fbc-5dd1-fe533fb15f47.png)

一つのDirectConnect Gatewayでアカウント跨ぎの接続は不可。

![スクリーンショット 2021-11-30 23.29.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/94613335-df7e-909e-4750-6afa33b01ad0.png)

上記のように異なるDirectConnect Gatewayをもう一つ準備する必要がある。
ダイレクトコネクトは追加する必要はなく、プライベートVIFを追加し、もう一つのDirectConnect Gatewayと接続をすればよい。

## VPCピアリングとDirectConnect

![スクリーンショット 2021-11-30 23.36.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/fe3b2c73-7181-b60a-1871-6fb01aab3ab7.png)

上図のようにVPC1とVPC2がVPCピアリングで接続しており、VPC1はDirectConnect Gatewayで接続している。この場合にVPC2のサーバにカスタマーのオンプレミス拠点からは接続できない。

![スクリーンショット 2021-11-30 23.39.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/cb2b32a8-b1bf-41ea-c7dd-5ebace9d4a55.png)

実現するにはVPC2にもDirectConnect Gatewayで接続させる必要がある。
DirectConnect Gatewayを経由したVPC間の通信はできない。ただし、カスタマー拠点を折り返しポイントとしたVPC1とVPC2間の通信は実現しようと思えば可能。

### LAG

![スクリーンショット 2021-12-01 23.13.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/d6b4311e-a6f2-892d-6dcf-b4729416db7f.png)

- LACPを使えば複数の物理リンクを論理的に一本の回線にまとめることが可能。
- 1Gbpsと10Gbpsに対応。まとめる物理リンクは全て同じ帯域である必要がある。
- 最大4つの接続をLAGにまとめることが可能。
- LAGを構成する接続は必ず同じダイレクトコネクトのロケーションでかつ同じエンドポイントとなるデバイスに全て終端する必要がある。

![スクリーンショット 2021-12-01 23.26.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/0d7572f6-1333-be3c-7492-87e111e59c8c.png)

- BGPの最大マルチパス数を2以上に設定し、Active/Activeの等コストロードバランスを構成する必要あり。
- ポートは同一シャーシに存在する必要あり。
- LAGを維持するのに必要な有効な接続数は最小に設定する。（例：4本でLAGを組んだ場合に2本ダウンしたら、残りの2本でLAGを維持するか、維持せずLAGを解散し、4本の別接続とするか)
- LAGに追加費用なし。

### ネットワークの柔軟性
![スクリーンショット 2021-12-02 0.00.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/2b57b0c4-2779-b540-ac60-2d8ce904e5ad.png)

上記のような構成を考えた際に、ルーティングの優先順序はどのように制御されるのかを考える。

![スクリーンショット 2021-12-02 0.04.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/968d8034-7d51-5a71-4ed2-2e4d09d69340.png)

上図の例で言うと、DirectConenct Gateway (またはVGW) -カスタマールータ間のルーティング情報の制御にあたる(はず)
VGWが受けるルーティング情報は、

- プレフィクスのロンゲストマッチで優先順位が決められる
- BGPのAPパス長、そしてLocal Preferenceで優先順位が決められる。(iBGP区間の動作)
- ※BGPのmultipathによるロードバランシングは同一のDX Loationである必要があるため、上の図では当てはまらない。

![スクリーンショット 2021-12-02 0.11.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/97db0036-2538-e465-fcd0-f4ea4edca2b2.png)

VPC内のルーティングの優先制御の話。以下は優先順。

- VPC内ローカルのアドレス宛のルート
- ロンゲストマッチによるルート
- 静的ルート
- 動的ルート
    - DXのBGPルート
    - VPN(IPsec等)の静的ルート
    - VPN(IPsec等)の動的なルート

VPN(IPsec等)の静的ルートとは、おそらく以下。site-to-site-VPNの編集画面でVPN接続先のセグメント情報を入力すると、それをVPCのルーティングテーブルに広報してくれるもの。
https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/vpn-edit-static-routes.html

BGP内のルーティングの優先順位は画像の通り。

## 請求
![スクリーンショット 2021-12-02 0.18.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/09fd962e-6d14-2f4e-7af1-b58ca587a7ca.png)

### DX
- ポート/時間単位の課金。スタンバイとしていてもかかる。
- AWSからのアウトバウンドのデータ転送のみに課金。
- DX上にVPNを張ったデータ転送もインターネット経由のVPNに比べて課金に割引が効く。
- データ転送料はVGWまたはDirectConnect Gatewayを所有するアカウントに課金する。※DirectConnectがセットアップされているアカウントとそれらが異なる場合にはこの区分けに注意が必要。

### Public VIF
- 上記のDX同様に割引された転送料が適用される。
- 自身のリソースへのアクセスの転送料は、自身への支払い。
- 請求が統合されたアカウント内のリソースへのアクセスの転送料は、自身への支払い。
- 他人へのリソースへの転送料は、他人の支払い。

※上記の割引とは、インターネットと比べて？と思われる。


## VPC Peering

![スクリーンショット 2021-12-02 22.58.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/4b2afd58-7d29-9959-ffc0-c60a75f15816.png)

VPC Bから図への各リソースへのアクセスを考えた際に、VPC A以外へはどこへもアクセスできない。
これはVPC Peeringの仕様上そのようになっている。

「VPCにパケットが流れるときに、宛先または送信元どちらかはそのVPCのセグメント内のアドレスとなっていなければ通信は成立しない仕様」

![スクリーンショット 2021-12-02 23.05.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/7d89fac4-48df-82de-8bf9-6aab3dfe0d57.png)

この仕様により、上図の構成ではAWS Managed VPN経由のデータセンター拠点はVPC A以外とは通信不可。

![スクリーンショット 2021-12-02 23.06.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/0166288a-ec43-b114-24d7-729a87d421f6.png)

ただし、AWS Managed VPNではなくDXの場合は少し状況が変わる。DXが接続するInterface VPC endpointと通信が可能。


### Proxyを用いた解決策

![スクリーンショット 2021-12-02 23.12.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/06c352bb-5d3c-efc1-5504-ce5c0db2ad62.png)

図のようにProxyをセットしたVPCを挟めば、カスタマー拠点からピアリングしたVPCやAWSサービスにアクセスは可能。
Proxyを挟むことで通信がProxyのVPCで一旦終端するため。

※動画では2例Practiceが紹介されたが省略。

### VPNを用いた解決策
![スクリーンショット 2021-12-02 23.51.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/576999c5-6494-e017-810a-ec2afacbb2ec.png)

VPC A,B,CがVPC Peeringで繋がっており、VPC BにVPN接続用EC2インスタンスをたて、それぞれのVGWとIPsecで繋げば、VPC AからVPC Cへ通信が可能になる。

※VPN区間はトンネル用のIPヘッダでカプセリングされるため？
VPC AからVPC Cへ通信する際に・・・
VPC AからVPC Bへ渡ってきたカプセリングされたパケットはEC2インスタンス内でカプセリングが解除され、それがAWSのサブネットにさらされることなく、EC2内で再度VPC BからVPC Cへ渡すためのカプセリングがされてVPC Cへ渡るためと思われる。

## Transit VPC

### 顧客の心配事

![スクリーンショット 2021-12-05 16.58.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/59ff0454-ee86-1ead-7676-4cdfac0e6106.png)

レイヤー4レベルではSecurityGroup等によってAWSのサービス内で実現できるが、IDSやIPS、アプリケーションファイアウォールのようなレイヤー7のセキュリティ検査を入れたい場合はどうするべきか。
上図のようにVPCが増えるごとに検査インスタンスを導入するのは得策ではない。そこで・・・

![スクリーンショット 2021-12-05 17.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/163ccd43-b500-6c55-4454-da711fc75c6b.png)

上図みたいにできると理想に近づけるよね、という話。

![スクリーンショット 2021-12-05 17.06.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/1942cc2c-01a0-4357-98e8-3ded78176f6d.png)

ただし、上述のVPC Peeringで触れたようにトランジットなルーティングはAWSではサポートされていないし
VPCとリモート拠点のIPアドレスの重複も気になるし
トランジットなVPCをつなげつようと思ったらケースによっては大量のVPNが必要になるし

気になることが多いよねという話。

### Transit VPC

![スクリーンショット 2021-12-05 18.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/96cb57a1-9a69-c453-5088-d08aad4d73ef.png)

Transit VPCは、複数VPCやカスタマーのオンプレミス拠点を接続するためのハブVPCを準備すること。
VPNを張るEC2インスタンスはペアで準備し冗長性を確保する。

### Transit VPCのケース例

![スクリーンショット 2021-12-05 19.01.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/1793e3f1-5d53-3eca-557a-cb9e43092ee0.png)

- カスタマーのオンプレミス拠点から複数のVPCに対してVPNを張る際に、必要なVPN数を削減する。
    - DirectConnect Gatewayを使えば削減可能、ただし複数AWSアカウントへ接続が必要な場合・・・は、アカウント数分だけDirectConnect Gatewayが必要になる。
- Transit VPCにセキュリティポイントを設ける。
- カスタマーのオンプレミス拠点とVPCとのIPアドレスの重複はTransit VPCでNATを利用して調整する。

### Transit VPCのアーキテクチャ例

![スクリーンショット 2021-12-05 19.09.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/b228e9ce-2b96-c54b-6aa4-c20add6aaabf.png)

中央にあるのがTransit VPCとなり、各拠点、VPC、サービスと繋がりハブとなっている。

その中でも右下のDirectConnect接続しているDetached VGWが少し特殊。
VGWは本来、VPCに接続して利用するが、VPCに属せず、DirectConnectのVIFを受けつつVPNを張る受け口になることが可能。
そのため、Transit VPCのEC2とのVPNとDirectConnectをつなぐ役割となることができている。

### Transit VPCの大事な点
![スクリーンショット 2021-12-05 19.17.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/1ecc0151-02e3-b086-30bc-e1f2cb1276ba.png)

- VPNを張るEC2インスタンスはペアで用意し冗長性を確保する。
- BGPをVGWとEC2インスタンス間で利用し、フェールオーバー時のルーティングの切り替えを行う。
- BFD,DPD,BGPタイマーを利用してフェールオーバーのリカパリ時間を短縮する。
- CloudFormationやLambdaを用いて、スポークとなるVPCが追加された場合は自動でVPNが張られてTransit VPCに参加するように設定する。
- オープンソースやサードパーティベンダーのVPNソフトをTransit VPCに利用する。

### Transit VPCアーキテクチャ検討例1

![スクリーンショット 2021-12-05 19.29.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/73b407ad-42c1-d7ac-0d1d-999fdb514d94.png)

Transit VPCとスポークVPCを繋ぐ手段として、VGWを用いるべきか、EC2インスタンスを用いるべきかの検討について考える。

VGWを利用する場合、
マネージドのため冗長性の確保を意識しなくていいのがメリット。ただし、インターネット経由となる点を許容できるかどうか。(IPsecで暗号化されているとはいえ)
EC2インスタンスを用いれば、VPC Peeringを経路として接続できるが、冗長性の確保は自身で考える必要がある。あとIPsec以外のトンネルも利用できることになる。

### Transit VPCアーキテクチャ検討例2

![スクリーンショット 2021-12-05 19.34.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/57650901-7824-c30f-ba9f-12945ab87ec4.png)

二つのVPCを接続するとき、Transit VPCを使ってつなぐべきか、VPC Peeringを使ってつなぐべきかの検討について考える。

- 二つのVPCがTrustedの扱いであれば、その間にセキュリティの検査やフィルタは不要なのでVPC peeringでつなげばよい。
- 片方のVPCがUntrustedの場合は、Transit VPCでセキュリティ検査をする機能を挟んでTransit VPC経由で通信をさせる。

- Transit VPCとVPC peeringが同居する場合、2つのルートが存在することになるが、VPC peeringは静的ルートのため、こちらがルーティングで優先される。

### Transit VPCアーキテクチャ検討例3

![スクリーンショット 2021-12-05 23.01.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/6dcfbb05-b441-be68-befe-6e3162f12518.png)

カスタマーのオンプレミス拠点とVPCを接続するとき、Transit VPCを使って繋ぐべきか、DirectConnect Gatewayを使って繋ぐべきかの検討について考える。

検討例2と同様で、互いにTrustedか片方がUntrustedで選択する。

- 互いにTrsutedであれば、DirectConnect Gatewayを選択する。

- Transit VPCとDirectConnect Gatewayが同居する場合、2つのルートが存在することになるが、DirectConnect Gatewayの方がBGPのASパス長が短いため、こちらのルートが優先される。

### Transit VPCアーキテクチャ検討例4
![スクリーンショット 2021-12-05 23.07.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/3021ba9f-6034-ce9d-5e84-0f5c6cb588b1.png)

DirectConnectで接続されたカスタマーのオンプレミス拠点とTransit VPCを接続するとき、detached VGWを使うべきか、使わない(カスタマー拠点のVPN装置でTransit VPCのEC2インスタンスにVPNをはる)べきかの検討について考える。

detached VGWを使う場合、
- 完全マネージド。
- 1.25Gbpsが上限。※VGWのVPN接続の仕様

detached VGWを使わない場合、
※図では、DirectConnect Gatewayを利用した一般的なDirectConnect構成でPrivate VIFを経由してカスタマー拠点の装置からVPNを張る。
- オンプレミス拠点側に負荷がかかる。
- スループットに構成上の制約がないため、1.25Gbps以上の契約帯域分使える。
- IPsec以外のプロトコルでトンネルを作成できる。

### Transit VPCアーキテクチャ検討例5

![スクリーンショット 2021-12-05 23.18.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/0ae892f3-e30e-415c-673f-0f0b0e9ff121.png)

Transit VPCとスポークVPC間のルーティングは、BGPによる動的ルートと静的ルートどちらを利用するべきか。

BGPによる動的ルート一択。

理由として、
- ルーティングの全体設計を容易に管理できる。
- フェールオーバーを自動でリカバリしてくれる。
- BGPメトリクスで主ルートと副ルートを選択できる。

### Transit VPCのハブ構成

![スクリーンショット 2021-12-05 23.24.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/4b3ef113-ddc6-06f6-792a-bbdc3d89ccf9.png)

上図のようなTransit VPC構成があった場合に、インドとヨーロッパの接続(赤線)でアメリカまで迂回するのは望ましくない。

![スクリーンショット 2021-12-05 23.26.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2247080/5a894c66-65a6-473c-ba75-4067de169018.png)

インドとヨーロッパの間に二つ目のTransit VPCを接続。二つのTransit VPCをVPN接続してハブ要素1つの構成を維持する。