ルーティング、接続方法いろいろ | AWS SAA 受験に向けたメモ⑥

# はじめに
SAA試験勉強のうちルーティング、接続方法などに関して、個人的に何度も忘れてしまうものや分かりにくいものをまとめていきます！
試験範囲を網羅しているわけでは全くありませんのでご注意を！
その他の範囲まとめはこちら↓

https://qiita.com/hoshi_/items/b3c101a3e92a73728789

# ルーティング関連
## Route 53
### DDoS攻撃が発生した場合の可用性維持機能
+ シャッフルシャーディング
    Route53が提供するDNSの可用性を高めるための技術
    + ホストゾーンへの複数のIPアドレス割り当て: 各ホストゾーンに対して4つのIPアドレスが割り当てられる
    + 各IPアドレスの役割: 異なるロケーションのDNSサーバー群に対応できる
    + クエリの分散: DNSクエリはこれらの異なるIPアドレスに分散して送信される
    + 障害時の影響軽減: あるIPアドレスに対応するDNSサーバー群に障害が発生した場合、他のIPアドレスに振り分けることで、サービスへの影響を最小限に抑えられる。
　
+ エニーキャストルーティング
    複数のネットワークインターフェースに同じIPアドレスを割り当てるルーティング方式
    + グローバルなエッジロケーション: 多数のエッジロケーションが世界中にある
    + クエリの最寄りのロケーションへの誘導
    + ネットワーク輻輳の緩和: エッジロケーションに負荷が集中することを防ぎ、ネットワークの輻輳を緩和する

### Route53ネームサーバーにALBのDNS名を指定するには…
AliasのAレコードまたはAAAAレコードを利用する。Aliasレコードは、Route53レコードにAWSリソースのエイリアスを登録できる。

### フェールオーバー構成
 + フェールオーバー（アクティブ/パッシブ）
     + フェールオーバーポリシーを使用して設定する
 + フェールオーバー（アクティブ/アクティブ）
     + フェールオーバー以外のポリシー（レイテンシールーティングポリシーなど）を使用して設定する

### パブリックホストゾーンとプライベートホストゾーン
| - | パブリックホストゾーン | プライベートホストゾーン |
|:-:|:-:|:-:|
| 概要  |  インターネット全体からアクセス可能なDNSレコードを管理する | 特定のVPC内からしかアクセスできないDNSレコードを管理する  |
|  アクセス範囲 | インターネット全体  | 特定のVPC内  |
|  用途 | ウェブサイト、メールなどインターネットに公開するサービス  | VPC内のリソースへのアクセス、オンプレとの連携  |

### 複雑なルーティングの実現方法
トラフィックフローのビジュアルエディターを使ってルーティング順序を設定することで、複雑なルーティングを実現できる。

## カスタマーマネージドプレフィックスリスト
AWSのVPCの機能の一つ。
IPアドレスの範囲（プレフィックス）をリストとしてまとめるための機能。
複数のセキュリティグループやルートテーブルで同じIPアドレス範囲を指定するときに、何度も同じ内容を入力する必要がなくなりミスを防げて効率的。

:::note
Resorce Access Manager（RAM）と連携することで、他のAWSアカウントとも共有でき、組織全体で一貫して適用できる。
:::

AWSマネージドプレフィックスリストも存在する。

:::note warn
+ 1つのプレフィックスリストにはIPv4またはIPv6のいずれかのみを含めることができる
+ プレフィックスリストは作成されたリージョン内でのみ利用できる
:::

# AWS接続方法いろいろ
## Site-to-Site VPN
オンプレミスとVPC間でIPsec VPNトンネルを確立し、ネットワーク層での暗号化を提供する。

## Direct Connect
オンプレからAWSへ専用回線を敷設して使用する、安定してセキュアなネットワーク接続を実現できるサービス。
### Direct Connect ゲートウェイ
Direct ConnectはDirect Connectエンドポイントと仮想プライベートゲートウェイを1:1で接続するため、通常は1つのVPCにしか接続できない。
Direct Connectエンドポイントから複数のVPCに接続したい場合には、Direct Connectゲートウェイを使用する。
Direct Connectゲートウェイは、Direct Connectエンドポイントと仮想プライベートゲートウェイの間に配置され、世界中の各リージョンにある複数のVPCに接続できるようになる。
他のAWSアカウントのVPCであっても接続できる。

## VPCピアリング
VPC間のルーティングを可能にする機能。
他のAWSアカウントのVPCや異なるリージョンのVPCなどでも同一のプライベートネットワーク内に存在しているかのように通信できる。
別リージョンのVPCのセキュリティグループをインバウンドルール内で指定することはできないので、VPCのCIDRブロックを指定する必要がある。

::: note alert
VPC間のCIDRブロックが重複している場合には使えない。そのような場合には**PrivateLink**を使う。
PrivateLinkは、異なるVPCやアカウント間の通信をインターネットを介さずに行うためのサービス。CIDRブロックが重複している場合や、セキュリティの高さが求められる場合に使う。
ただし、PrivateLinkは基本的に1方向の通信となる。
:::

### VPCピアリングはエッジ間ルーティングをサポートしていない

> エッジ：外部ネットワークとの接点。
> ex. VPCとオンプレとの境界、VPCとインターネットとの境界。

VPCピアリングはあくまで2つのVPC間を直接接続する機能で、プライベートIPアドレスを使ってVPC間で通信できるようになるもの。
**それ以外のネットワークへの経路を提供するものではない**


```text:例えば...
・ VPC AとVPC BはVPCピアリング接続されている
・ VPC Bはインターネットゲートウェイを持っている
・ VPC CはオンプレとVPN接続している
```
上記のようなケースでは、
+ VPC Aからインターネットに接続したい場合、VPC Bのインターネットゲートウェイを経由することはできない。
    この場合、VPC A自身がインターネットゲートウェイを持つか、NATゲートウェイなどを経由する必要がある。
+ VPC Aからオンプレに接続したい場合、VPC CのVPN接続を経由することはできない。
    この場合、VPC A自身がVPN接続を持つか、別の方法でオンプレに接続する必要がある。

## VPCエンドポイント
VPCエンドポイントを使用すると、インターネットを介さずにVPC内のサービスからVPC外へのAWSサービスに接続できる。同一リージョン内の通信であれば無料。
| ー | インターフェースエンドポイント | ゲートウェイエンドポイント |
|:-:|:-:|:-:|
| 接続方法  | 直接接続（通常プライベートサブネットに配置）  |  ルートテーブルにエントリを追加 |
| 利用可能なサービス  |  ほとんどのAWSサービス | S3, DynamoDB  |
| 特徴  |  ー | 基本使用料は無料。同一リージョン内ならデータ転送も無料  |

## Transit Gateway
複数のVPC、オンプレミスネットワーク、AWS Direct Connectゲートウェイなどを接続するためのハブとして機能する。
| - | Transit Gateway | Lattice |
|:-:|:-:|:-:|
| 目的  |  複数のVPCを接続する |  サービスメッシュの実現 |
| 機能  |  ルーティング、NAT、VPN接続など | サービスディスカバリー、ロードバランシング、セキュリティなど  |
| ネットワークモデル  |  ハブアンドスポーク | サービスメッシュ  |
| レイヤー | レイヤー3（ネットワーク層） | レイヤー7（アプリケーション層） |
|  複雑さ | 比較的複雑  |  比較的シンプル |
|  利用シーン |  大規模なネットワーク構築、オンプレミスとの接続 |  マイクロサービスアーキテクチャ、サービス間の通信 |

## Global Accelerator
グローバルなアプリケーションのパフォーマンスと可用性を向上、ユーザーからアプリケーションエンドポイントへのトラフィックを最適化する。

:::note
CloudFrontはキャッシュによる高速化がメインだが、Global Acceleratorはネットワーク経路の最適化がメイン。
ALBは単一リージョン内での負荷分散を担うが、Global Acceleratorは複数リージョンにもまたがるグローバルなトラフィック分散を行う。
GlobalAcceleratorは複数リージョンの他、TCP/UDP通信を利用するリアルタイム通信やゲームアプリケーションにも適している。
:::

### アクセラレーターの種類
Global Acceleratorには大きく分けて**標準アクセラレーター**と**カスタムルーティングアクセラレーター**の2種類がある。

+ **標準アクセラレーター**
    世界中のユーザーに最も近い正常なエンドポイントへ自動的にルーティングする。
    ALB、NLB、EC2インスタンス、Elastic IPをエンドポイントとしてサポートしている。
    TCP/UDPを選択できる。
+ **カスタムルーティングアクセラレーター**
    ユーザーのトラフィックを特定の宛先EC2インスタンスのIPアドレスとポートにルーティングできる。
    1人以上のユーザーを特定の宛先にマッピングできるので、
    例えばゲームのマッチングなどで、特定のユーザーを特定のゲームサーバーに割り当てるような場合に適している。
    エンドポイントにはVPCサブネットのみをサポートしており、トラフィックはサブネット内のEC2インスタンスにのみルーティングされる。
    TCP/UDPまたはその両方を選択できる。
    
## Egress-Onlyインターネットゲートウェイ
**IPv6**に特化したゲートウェイ。
EC2インスタンスから外部への通信は許可し、外部からインスタンスへの通信はブロックする。

:::note alert
NATゲートウェイはIPv6環境には対応していない。
IPv6環境で外部への接続のみをしたい場合にはEgress-Onlyインターネットゲートウェイを利用する。
:::