【AWS認定試験対策】VPC、Route53のポイントまとめ

# はじめに

AWSの認定試験を受験するにあたって、各AWSのサービスを幅広く理解する必要があったためサービスごとに抑えるべきポイント等をまとめてみました。
今回はVPC、Route53についてです。

※情報は2019年12月31日時点のものになります。ご了承ください。

ちなみにAWS認定試験での勉強方法についてはこちらの記事で紹介しています。

- [AWS 認定Developer Associateに合格するまで](https://qiita.com/yoshiyama_hana/items/8ea41e756036ca098c4b)

# VPC

Amazon VPC(Virtual Private Cloud)とは、AWS上での仮想ネットワーク環境になります。

以下が簡単な特徴になります。

- 料金は発生しない
- リージョンごとに作成可能
- 以下の制限がある
  - リージョンあたりのVPCは5まで（制限緩和で100まで引き上げ可能）
  - VPCあたりのサブネットの数は200まで
  - VPC 当たりの IPv4 CIDR ブロックは5まで（最大50まで引き上げ可能）
  - VPC 当たりの IPv6 CIDR ブロックは1まで
- IPアドレスの範囲を/16 〜 /28 のブロックサイズでCIDRブロック形式で指定する必要がある
  (例：10.0.0.0/16）
  - 10.0.0.0 〜 10.255.255.255
  - 172.16.0.0 〜 172.31.255.255
  - 192.168.0.0 〜 192.168.255.255

サブネットについての[参考](https://qiita.com/mogulla3/items/efb4c9328d82d24d98e6)

- VPCのIPアドレスの範囲でサブネットを作成する
- サブネットで使用できないホストアドレス
  - .0：ネットワークアドレス
  - .1：VPCの仮想ルーター
  - .2：DNSサービス
  - .3：AWSが予約済み（将来何かに使われる？）
  - .255：ブロードキャストアドレス
- サブネットはアベイラリティーゾーン単位で作成する



## ■インターネットゲートウェイ

VPC内のインスタンスとインターネット通信を可能にするもの

## ■ルートテーブル

VPC内でルーティング設定を行うもの
インターネットゲートウェイへのルーティング設定がされたルートテーブルをアタッチされたサブネットをパブリックサブネット（インターネット通信できるから）

そうでないサブネットをプライベートサブネットという（インターネット通信できないから）

## ■サブネット内のインスタンスがインターネットに接続するためのステップ

1. サブネットAを作成する
2. 作成したサブネットAでインスタンスを起動する
3. ルートテーブルBを作成する
   (転送先をインターネットゲートウェイに、宛先を0.0.0.0/0 にする。この設定だとすべてのIPアドレスの宛先がインターネットゲートウェイに転送される）
4. サブネットAとルートテーブルBを関連付けする。つまり、インターネットゲートウェイをアタッチする


## ■NACL（Network ACL）

サブネットのインバウンド、アウトバウンドの通信をコントロールをするもの
（セキュリティグループのサブネット版みたいなもの）

- インバウンドもしくはアウトバウンドの許可、禁止を設定できる
- デフォルトでは、インバウンドもアウトバウンドもすべて許可された状態


## ■NATゲートウェイ

プライベートサブネット内のインスタンスがインターネットにアクセスしたい場合、NATゲートウェイをプライベートサブネットに配置してNATゲートウェイ経由でインターネットへアクセスを行う。

具体的には、プライベートサブネットに関連づけられているルートテーブルに「転送先をNATゲートウェイに、宛先を0.0.0.0/0 」などとする。この設定だとすべてのIPアドレスの宛先がNATゲートウェイに転送されNATゲートウェイがその先のルーティングを引き受ける。

※NATゲートウェイはアベイラリティーゾーンごとに作成

## ■【頻出】VPCのプライベートサブネット内のインスタンスがインターネットへのアクセスを有効にする手順

10.0.1.0/24がパブリックサブネット、10.0.2.0/24がプライベートサブネットとする 
![え.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451269/ea24241c-1229-0b4d-e450-edff31f490f3.png)

1. VPCにインターネットゲートウェイをアタッチする
2. パブリックサブネットのルートテーブルにおいて、通信をインターネットゲートウェイへ接続するように設定する
3. パブリックサブネットNATゲートウェイ(またはNATインスタンス)を配置する
4. NATのインスタンスに、グローバルに一意なIPアドレス(IPv4アドレス、IPv6アドレス、Elastic IPアドレスのいずれか)が割り当てる
5. プライベートサブネットのルートテーブルにおいて「宛先を0.0.0.0/0(すべてのIP)、転送先をNATゲートウェイ」に設定する
6. ネットワークアクセスコントロール(NACL)とインスタンスのセキュリティグループルールをインスタンス間の通信を許可するように設定する


## ■VPCエンドポイント

プライベートサブネット内のインスタンスがAWSのAPI(S3など)にアクセスするときにはVPCエンドポイントを利用する。したがって、同一リージョンならばインターネットを経由せずに通信が完結する。

※VPCエンドポイントを追加するとルートテーブルにAWS APIへのルーティング設定が自動で追加される

VPCエンドポイントには２つの種類があり、すべてのAWSサービスをサポートしているわけではない

-  Gateway型
   S3、DynamoDB
-  Interface型
   EC2、SNS、Cloud Watchなど


## ■VPCピアリング

異なるVPC間で通信する仕組み

- 異なるアカウントのVPCでも通信できる
- 異なるリージョンのVPCでも通信できる


## ■VPC Flow Logs

VPC内の通信ログをCloudWatchに流す仕組み


## ■Direct Connect

オンプレ環境とAWSを接続する専用回線

仮想インターフェースと一緒に用いることが多い

- パブリック仮想インターフェース：S3などのパブリックサービスにアクセス
- プライベート仮想インターフェース：VPCへのアクセス


## ■VPNコネクション

オンプレ環境とAWSを接続する手法の一つ。

ハードウェアVPNを使われることが多いがDirect Connctほどは安定しない


## ■その他 覚えておくといいこと

- IPv4とIPv6が混在する場合はVPCのデュアルスタックモードを用いる
- プライベートサブネット内のインスタンスからインターネットへのアウトバウンド接続を行う場合、NAT インスタンス上の送信元/送信先チェック属性を無効にする必要性がある
- NATゲートウェイはIPv4のみ
- プライベートサブネットはNATに対してIPv4トラフィックルーティングしていたが、IPv6はルーティングできないので別途Egress-Only インターネットゲートウェイを作って、そこに対してルーティングをする必要がある

# Route 53

グローバルに配置されているAWSのDNSサービスになります。



## ■料金

以下で料金が発生します。

- ホストゾーンの管理：Route 53 で管理した各ホストゾーンに対する月額料金が発生
- DNS クエリへの応答：DNS クエリに対する Amazon Route 53 サービスからの応答に対して料金が発生
  ただし、クエリの対象がエイリアスAレコードかつ以下の場合は無料
  - Elastic Load Balancing インスタンス
  - CloudFront ディストリビューション
  - AWS Elastic Beanstalk 環境
  - API Gateway
  - VPC エンドポイント
  - Amazon S3 ウェブサイトバケットにマッピング
- ドメイン名の管理：Route 53 経由で登録された各ドメイン名または Route 53 に転送された各ドメイン名に対して年間料金が発生

## ■サポートしているDNSレコードタイプ

- A：アドレスレコード
  ドメインをIPアドレスにする

  ```
  inu-is-kawaii.jp. IN A 192.168.0.1
  www.neko-ha-kami.jp. IN A 192.168.0.1
  ```

- AAAA：IPv6アドレスコード

- CNAME：正規名レコード
  ドメインを異なるドメインにする

  ```
  inu-is-kawaii.jp.jp. IN A 192.168.0.1
  www.neko-ha-kami.jp. IN CNAME neko.jp.
  ```

- MX：メール交換レコード

- NS：ネームサーバーレコード

- PTR：ポインターレコード

- SOA：管理情報の始点レコード

- SPF：センダーポリシーフレームワーク

- SRV：サービスロケーター

- TXT：テキストレコード

- エイリアスレコード

## ■ルーティングポリシー

Route 53ではトラフィックルーティングのルーティングポリシーを定めることができます。

- シンプルルーティングポリシー
  通常のDNSサーバーと同じ挙動

- 加重ルーティングポリシー
  ルーティングする宛先の重み付けをすることができる

- レイテンシールーティングポリシー

  レイテンシーが最も低いリージョンのリソースにルーティングする

- フェイルオーバールーティングポリシー
  正常なリソースに対してトラフィックをルーティングする

- 複数値回答ルーティングポリシー

  DNS クエリに対する応答として複数の値 (ウェブサーバーの IP アドレスなど) を返すように設定できる。
  また、各リソースが正常であるかどうかも確認し、その結果を返却することもできる

- 地理的近接性ルーティングポリシー

  トラフィックを最も近いアベイラリティーゾーンのリソースにルーティングする(トラフィックフローのみ)

- 位置情報ルーティングポリシー
  ユーザーの位置に基づいてトラフィックをルーティングする

## ■その他 覚えておくといいこと

- Route53は、ELBやCloudFrontに対して、 ZoneApexレコードをAレコード で指定することができる