AWSのVPCデフォルト設定について

# 概要
AWS上でVPCネットワークを作る際、そもそもデフォルトで何が決まってるんだっけ？ってわからなくなるのでまとめておく。
[要するにこれです](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/default-vpc.html)
設定画面貼って確認したいがための記事です。

# 最初から存在するVPCネットワーク
AWSアカウント作成時に、自動で作成されているVPCネットワークが存在する。**デフォルトVPCと呼ばれる。**
各リージョンごとにデフォルトVPCが作成されている。

![vpc_default_region.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/636fe1fb-eb99-52e9-468f-0d99c9f83f51.jpeg)

# デフォルトVPCに設定されている各デフォルト設定
デフォルトがゲシュタルト崩壊しそうですが一個ずつ見ていきます。

## デフォルトVPCそのもの
![vpc_default_vpc.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/6575e7d5-b091-1463-8c0a-16607fd9801e.jpeg)

VPCネットワークそのものに設定される値は以下の通り  

 - IPv4 CIDR 172.31.0.0/16
 - DNSホスト名(enableDnsHostName): true
 - DNS解決(enableDnsSupport): true


[AWSのDNSドキュメント](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-dns.html)
かいつまんで言うと以下の設定になっている。

### DNSホスト名の値がtrue
プライベートIPv4アドレスに対応するプライベートDNSホスト名が割り当てられるということ。
(プライベートDNSホスト名自体はDNS解決の値がfalseでも割り当てられる)
パブリックDNSホスト名が割り当てられるかどうかは、以下の2つの属性が有効になっているかどうかで決まる。

1. VPCに紐づいたサブネットの「パブリック IPv4 アドレスの自動割り当て」属性 
2. サブネット内のインスタンス作成時に「自動割り当てパブリック IP」の属性(未設定時は 1. のサブネットの属性が継承される)

### DNS解決の値がtrue
VPCに対し、プライベートDNSホスト名・パブリックDNSホスト名での名前解決がサポートされる。


## サブネット
リージョンの各アベイラビリティゾーンにそれぞれひとつづつサブネットが登録されている。
**デフォルトサブネットと呼ばれる。**
![vpc_default_subnet.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/ca567e0d-5221-b53b-b8d0-2cc715b4860e.jpeg)
![vpc_default_subnet_region.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/96918434-ad49-f3a2-0fbc-de287a508774.jpeg)

「パブリックIPv4アドレスの自動割り当て」がtrueになっているので、デフォルトVPC(DNS解決、DNSホスト名ともにtrue)のデフォルトサブネットにインスタンスを作成すると、以下の4つが付与されることがわかる。

- パブリックIPv4アドレス
- パブリックDNSホスト名
- プライベートIPv4アドレス
- プライベートDNSホスト名

このデフォルトサブネットに最初から関連付けられている項目は以下の2つ。

- ルートテーブル
- ネットワークACL


## ルートテーブル
デフォルトの設定は以下。**メインルートテーブル(VPC内のサブネットに自動で関連付けられるルートテーブル)**として設定されている。
VPC単位で紐づいているが、最小の設定単位はサブネット。つまり、「ルートテーブルAはVPC 1に属しており、VPC 1 内の サブネット Z に設定されている」ということ。
「メインルートテーブル」として設定すると、↑で書いたようにVPC内のサブネットに自動で設定される(新規作成するサブネットに、他のルートテーブルを明示的に設定しなかった場合)

- 172.31.0.0/16 local (VPC内のローカル通信)
- 0.0.0.0/0 インターネットゲートウェイ

![vpc_default_route_table.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/0bb37764-3190-8be6-37de-593dfb017491.jpeg)![vpc_default_route_table_route.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/c5b9b5b7-e9dd-9272-9bd0-8b6c820b2d9f.jpeg)
![vpc_default_route_table_subnet.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/514efb55-b99f-8a97-1931-f9008a6cad9e.jpeg)

各アベイラビリティゾーンのサブネットに自動で関連付けられているのが見てとれる。
インターネットゲートウェイに紐づいているので、デフォルトVPCのデフォルトサブネットはパブリックサブネットになる。


## インターネットゲートウェイ
最初からデフォルトVPCにアタッチされている。
VPC単位で紐づいており、最小設定単位もVPC
![vpc_default_internet_gateway.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/6943a830-6038-6345-a78d-c7546eec77c8.jpeg)


## DHCPオプションセット
[AWSのDNSホスト名について](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_DHCP_Options.html#AmazonDNS)
domain-name: デフォルトVPCが存在するリージョンの名前
domain-name-servers: Amazon DNS サーバー。各VPCに設置される
VPCのプライベートホスト名、パブリックホスト名を解決できるようになっている。
![vpc_default_dhcp.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/2e8a056f-9651-ecb5-f23c-9826e3956fcf.jpeg)


## ネットワークACL
[デフォルトネットワークACL](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide//vpc-network-acls.html)
VPC内にサブネットを作成するとき、ネットワークACLを指定しない場合、このネットワークACLが自動的に適用される。

### VPCに紐づいている
最小設定単位はサブネット
![vpc_default_network_acl.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/405665dc-a696-4277-fb36-118c2b957ba6.jpeg)

### インバウンド・アウトバウンド全許可
![vpc_default_network_acl_inbound.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/d36628fa-8665-4d81-7284-19aa55af4f25.jpeg)
![vpc_default_network_acl_outbound.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/498453ee-8286-c350-06ed-0a61d22b4828.jpeg)

### 各デフォルトサブネットに自動的に関連づいている
![vpc_default_network_acl_subnet.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/e368d75e-dcc0-84b0-8a76-55b1b0c60bb5.jpeg)


## セキュリティグループ
[デフォルトセキュリティグループ](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide//VPC_SecurityGroups.html#DefaultSecurityGroup)
デフォルトVPCに紐づくセキュリティグループが自動的に作成されている。
このVPC内に作成したインスタンスは、他のセキュリティグループを指定しない場合、このセキュリティグループが自動的に適用される。
セキュリティグループはVPCに紐づいており、最小設定単位はインスタンス(サブネット単位でも設定できる)。
![vpc_default_security_group.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/35fb78c5-2142-e1a3-e56a-36e1745abc60.jpeg)

### inbound
内部への通信は同一セキュリティーグループからのみ許可。つまり、デフォルトでは内部への通信は通さない。
![vpc_default_security_group_inbound.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/189b9c9d-2692-918e-5eb6-e7ae243461f1.jpeg)

### outbound
外部への通信は全許可
![vpc_default_security_group_outbound.JPG](https://qiita-image-store.s3.amazonaws.com/0/275553/b9cde0a1-3030-dcc0-a26c-1c39a289db73.jpeg)