AWS上のネットワーク構築メモ

# AWSのネットワーク設定

について、最近[VPC1つあたりSecurity Groupの設定が500まで上限](http://aws.typepad.com/aws_japan/2015/12/now-create-up-to-500-security-groups-in-amazon-vpc.html)が開放されたのでこうやったほうがいいかな、というのを書いとく。

かなり長くなってしまった。

# VPCを作る

数多あるAWSサービスからVPCを選択してVPCを作る。これがないと始まらない。

![Screen Shot 2016-01-01 at 19.07.08.png](https://qiita-image-store.s3.amazonaws.com/0/3985/2df8e793-0e61-fdb2-fbe7-62992e3ec2fb.png)

![Screen Shot 2016-01-01 at 19.13.35.png](https://qiita-image-store.s3.amazonaws.com/0/3985/945361c9-bab5-81d0-4c3e-fc81d9a131b3.png)

## PrivateDNSでホストを引けるようにしとく

PrivateDNSでホスト名を引けるようにするため、
VPCの**Edit DNS Hostnames**でEnableに設定する。

![Screen Shot 2016-01-02 at 18.32.01.png](https://qiita-image-store.s3.amazonaws.com/0/3985/1dcc08e2-4343-8e7c-a280-c1c3d1e7582d.png)

![Screen Shot 2016-01-02 at 18.32.09.png](https://qiita-image-store.s3.amazonaws.com/0/3985/dd0a3842-9b9d-ef71-2167-459afe102b9c.png)


# Managed NAT gateway用のsubnetを切る

Managed NAT gatewayが先日発表されたので、それを使いたい。
そのためにSubnetを切る。

![vpc.png](https://qiita-image-store.s3.amazonaws.com/0/3985/c7e58c2a-7c85-407c-af79-d53ad8edb09d.png)

Availability Zoneは**ap-northeast-1a**を選ぶ。
CIDR blockは10.0.0.0/27としてわけとく。

# EC2,ELB,RDS,ElastiCache作成

以下のインスタンスを作成・利用するという体で作っていく。

- ELBを利用する
- EC2インスタンスを利用する
- RDSを利用する
- Redisを利用する

RegionはTokyoを選ぶ。AZはAとCを使う。

## 各サービス向けのSubnetを作成

以下の様な感じ。

|Subnet|役割|AZ|
|:-----|:--|:--|
|10.0.5.0/27|EC2(踏み台)|A|
|10.0.10.0/27|ELB|A|
|10.0.10.32/27|ELB|C|
|10.0.11.0/24|EC2|A|
|10.0.12.0/24|EC2|C|
|10.0.15.0/27|RDS|A|
|10.0.15.32/27|RDS|C|
|10.0.16.0/27|ElastiCache|A|
|10.0.16.32/27|ElastiCache|C|

図にすると...

![sample.png](https://qiita-image-store.s3.amazonaws.com/0/3985/faf8779a-c9af-5d4b-8abd-3407a38be0e7.png)


こんな感じ。基本的な感じ。
ELBについては/27の広さがないと作れない状態だったりする。それでも狭いけど...。

## Subnetを作成

こつこつ作成する...絵を起こすのはアレなのでできた結果のスクショ。

![subnet.png](https://qiita-image-store.s3.amazonaws.com/0/3985/07ba88a0-f90a-4c3a-e283-757d762bc403.png)

# 作成したSubnetをRoute Tableと結びつけ、public/privateなネットワークを構築

## Internet Gatewayを作る

Internet Gatewayを作成し、先ほど作成したVPCにattachする。

![internet-gateway.png](https://qiita-image-store.s3.amazonaws.com/0/3985/52a6db44-eb29-2224-ad5b-2c36397bf35f.png)

## Route Tableを作成する

### public用

インターネッツと通信するためのもの。

#### Routesの設定

作成したInternetGatewayをDestination 0.0.0.0/0に対してくっつける。
これでインターネットから通信を抜け出せるようになる。

![public-01.png](https://qiita-image-store.s3.amazonaws.com/0/3985/f8e6a527-2b3c-af1f-8f16-e91b1e276219.png)

#### Subnet Associationsの設定

インターネッツとふれあうであろうSubnetを設定する。

![public-02.png](https://qiita-image-store.s3.amazonaws.com/0/3985/dc210157-27f7-f48b-aeb2-83dea1695de6.png)

## private用

内部で通信すれば良いもの。RDSやEC2インスタンス、ElastiCacheなど。

#### Routesの設定

作成したNatInstanceをDestination 0.0.0.0/0に対してくっつける。
ELBやJump hostからの通信はこのNATを使って名前解決を行う。

![subnet01.png](https://qiita-image-store.s3.amazonaws.com/0/3985/5232ab1e-f023-0edd-5179-9d0b3d0eacec.png)

#### Subnet Associationsの設定

インターネッツと触れ合わないであろうSubnetを設定する。

![subnet02.png](https://qiita-image-store.s3.amazonaws.com/0/3985/03133d3d-e75f-1ac1-0749-34c2cb332b8a.png)

## Managed NAT gatewayを立てる

NAT GatewaysからCreate NAT Gatewayボタンを押す。
Subnetはさっき作ったやつを選択。

![Screen Shot 2016-01-01 at 20.55.49.png](https://qiita-image-store.s3.amazonaws.com/0/3985/559ce38a-0b7c-e19f-024c-6900e9db8b20.png)

EIPも作成してしまおう。Managed NAT Gatewayができた。
作成時に自動的に割り当てられた！楽だ。

![1.png](https://qiita-image-store.s3.amazonaws.com/0/3985/342bf914-ad3c-351b-1add-e5134532ea13.png)


# ELBやらEC2など構築

していく。

## Keypairの登録

を予めしておく。

**NETROWK & SECURITY** > **Key Pairs**
から作成しとく。

![Screen Shot 2016-01-02 at 18.14.45.png](https://qiita-image-store.s3.amazonaws.com/0/3985/ac98cd0e-96e6-9708-0bf2-7db3326ff6cc.png)

## EC2インスタンスの作成

AZ AとCにそれぞれ1台ずつ作る。
利用するAMIはUbuntu 64bit。

![Screen Shot 2016-01-02 at 11.18.17.png](https://qiita-image-store.s3.amazonaws.com/0/3985/e718ad8b-642e-9130-44df-5092c744e2e7.png)

お金が勿体無いので[最近使えるようになったt2.nanoインスタンス](http://aws.typepad.com/aws_japan/2015/12/ec2-update-t2-nano-instances-now-available.html)で構築していく。

![Screen Shot 2016-01-02 at 11.21.58.png](https://qiita-image-store.s3.amazonaws.com/0/3985/11bb2d2b-c19a-945e-39a4-07981c23cf82.png)

![Screen_Shot_2016-01-02_at_11_47_43.png](https://qiita-image-store.s3.amazonaws.com/0/3985/a7a38eee-dac1-a547-f2cd-7e25b9ecf1b0.png)

### インスタンス作成時にEC2インスタンスに対するIAM Roleを設定する

今勤めてる会社の若手からそうしたほうがいいっすよ、と教えられたのでしておく。
IAMは作るけど、特に何も設定しない。何かが起きた時にアクセスできる権限を絞れるようにする。

![Screen Shot 2016-01-02 at 11.50.11.png](https://qiita-image-store.s3.amazonaws.com/0/3985/3ace22b0-7097-ff80-3f2e-f981f9cebad5.png)

![Screen Shot 2016-01-02 at 11.52.15.png](https://qiita-image-store.s3.amazonaws.com/0/3985/7fdb5f6f-b539-85b6-256d-782f68b3da2c.png)

![Screen Shot 2016-01-02 at 11.52.46.png](https://qiita-image-store.s3.amazonaws.com/0/3985/e068aac1-1aae-df49-87be-933dc8f5adcd.png)

何も設定しない。

![Screen_Shot_2016-01-02_at_11_53_17.png](https://qiita-image-store.s3.amazonaws.com/0/3985/e0b7bde3-cb79-fd2f-1d5a-cfb4f8aca5c7.png)

...ここまで書いてわかったけどEC2インスタンスを作る前にIAM Role作らないと
Viewに値が反映されないんだった... orz

リロードして設定する。

![Screen_Shot_2016-01-02_at_11_55_21.png](https://qiita-image-store.s3.amazonaws.com/0/3985/2667fc31-1243-f146-5cde-2fe4fc50efa7.png)

## サービス用のSecurity Groupを作っておく

あとで全体で利用できるSecurity Groupを作成するが、いまんところ
サービス用のSecurity Groupを作っとく。

![sg.png](https://qiita-image-store.s3.amazonaws.com/0/3985/8a91e7c1-6cdb-2cf8-5cd6-ea6b542d9e10.png)

そしてそのままEC2インスタンスを立ち上げる。
(Key PairをIAM Roleからアップロードしておくことを忘れずに...)

## EC2インスタンス作成時に作成したSecurity Groupのルールを変更する

basic-service としておく。そしてbasic-service Security Groupが設定されていたら
inbound/outboundかかわらずすべてのパケットを通す、というようにしてしまう。

![sg2.png](https://qiita-image-store.s3.amazonaws.com/0/3985/39584b03-7866-f0dd-4049-50a2203576d8.png)

## 普遍的に利用できるSecurity Groupを作成する

### EC2用

apt-get updateなど実行したい場合、outboundをゆるめてやらないといけない。
ということで**basic-public**というSecurity Groupを作成する

### ELB用

インターネッツとぶつかり合いを行うELBインスタンス用のSecurity Groupを作成する
**basic-elb**という名前で作成する。

# 踏み台用のインスタンスを作成する

インターネッツにて、直接サービス提供用のインスタンスにアクセスするのは問題がある、
ということで踏み台用インスタンス(jump host)を設定する。

## Security Groupを作成する

basic-ec2-jump-hosts というEC2 Security Groupを作成する。
ルールは以下とする。

- inbound

SSHのportはインスタンス起動初回時にインスタンスにアクセスできないとまずいので22番を開けておく。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|Custom TCP Rule|TCP|22|0.0.0.0/0|

- outbound

すべて許可。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|0.0.0.0/0|

VPNを[VyOS](http://vyos.net/wiki/Main_Page)を利用するなどして構築していればSourceのルールを変えるべきではあるが...、今回は踏み台サーバを利用して直接サービス用のインスタンスに入ってしまおう。

## EC2インスタンスを作成する

先ほど書いたセクションに書かれている通りの内容にそって、インスタンスを作成する。
但し、先ほどとは若干条件が異なる

- Security Groupに先ほど作った**basic-ec2-jump-hosts**を付ける
- Security Group basic-serviceについて、**basic-ec2-jump-hosts**からのパケット疎通について、inboundは22(SSH用)として設定し、疎通可能にする

![sg4.png](https://qiita-image-store.s3.amazonaws.com/0/3985/7282fa21-ae92-b47e-54b1-7336609e2549.png)

- IAM Roleにて、**ec2-jump-hosts**を作成し、EC2インスタンスに適用する。

![Screen Shot 2016-01-02 at 13.32.16.png](https://qiita-image-store.s3.amazonaws.com/0/3985/985c07a4-3ce1-5857-a251-d818f6ed3c37.png)

![jump-hosts.png](https://qiita-image-store.s3.amazonaws.com/0/3985/60e9498b-63dc-0a91-1dba-36e3b51a9adb.png)

## EIPを付ける

EIPを付けないとインターネッツ外からアクセスできないので、EIPを払い出し、
作成したEC2インスタンスに結びつけておく。

![associate.png](https://qiita-image-store.s3.amazonaws.com/0/3985/4aac0c23-a4d4-7140-e284-dad214d8b237.png)

## SSHでホストにログインできるか確認

家から踏み台サーバにアクセスしてみる。
Ubuntu 14.04 のAMIからインスタンスを作成したので、
ubuntuユーザでアクセス。

```
> ssh ubuntu@{割り当てたEIP} -l ubuntu
```

アクセスできることを確認。で、Jump hostからサービスを提供する予定のEC2インスタンスにアクセスしてみる

```
> ssh ip-10-0-11-233.ap-northeast-1.compute.internal
```

OK。

## Mac Bookから踏み台経由でサービス用インスタンスにアクセスしたい！

Jump host経由でログインできるように
Mac Book Proの**~/.ssh/config**を以下のように設定する

```
Host jump
  Hostname {踏み台用サーバのEIP}
  User ubuntu

Host *.internal
  User ubuntu
  ProxyCommand ssh jump nc %h %p
```

こうするとMac Book ProのTerminalから

```
> ssh ip-10-0-11-233.ap-northeast-1.compute.internal
```

とするとログインできる。

# RDSインスタンス立ち上げ

## Subnet Groupを作る

まずは作らないと始まらない。作る。

![db-security-group.png](https://qiita-image-store.s3.amazonaws.com/0/3985/eabcd72c-8d4f-a92c-679a-fa0c39836453.png)

## Security Groupを作る

**basic-rds**という名前で作る

- inbound

3306のみサービス向けの接続を許可。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|Custom TCP Rule|TCP|3306|basic-service|

- outbound

すべて許可。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|0.0.0.0/0|

## instance立ち上げ

Multi AZ有効という形でインスタンスを作っておく。

![rds.png](https://qiita-image-store.s3.amazonaws.com/0/3985/b661e33c-fff5-ceb6-f1ac-7811b21cd4dd.png)

## Route 53にてinternal DNSを設定する

**basic-rds.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com**と割り当てられているRDS向けのENDPointをRoute 53にて**basic-rds.service**と設定する。

![r53-1.png](https://qiita-image-store.s3.amazonaws.com/0/3985/11ad091f-6d30-e544-26e5-f22d8084e3c5.png)

![r53-2.png](https://qiita-image-store.s3.amazonaws.com/0/3985/081ed819-858e-d9f7-589c-4fac636ac6fb.png)

## Security Groupのルール更新

basic-rdsとの疎通が行えるよう、設定を追加する

### basic-service

- inbound

basic-rdsからのinboundについてすべてのトラフィックを許可

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|basic-rds|

- outbound

basic-rdsへのoutboundについてすべてのトラフィックを許可

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|basic-rds|

### basic-rds

- inbound

basic-serviceからの3306ポート(TCP)に対するトラフィックについて制限しない。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|MYSQL/Aurora|TCP|3306|basic-service|

- outbound

変更なし

## 疎通確認

- internal DNSとして設定した後のアクセス確認

アクセス確認をサービス向けEC2インスタンス、basic-public-oneからRDSの3306番ポートにアクセスできるか確認する

```
> ssh ip-10-0-11-233.ap-northeast-1.compute.internal
> telnet basic-rds.service 3306
Trying 10.0.15.52...
Connected to ec2-**************.ap-northeast-1.compute.amazonaws.com.
Escape character is '^]'.
N
5.6.23-log'gM)&~n.5?ajon\_K:~1spmysql_native_password
```

疎通はできる。ログインできるかな？mysql-clientをインストールして、確認する。

```
> sudo apt-get update
> sudo apt-get install mysql-client-5.6
> mysql -h basic-rds.service -u root -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.6.23-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| basic_service      |
| innodb             |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
```

問題ないようだ :+1:


# ElastiCacheインスタンス立ち上げ

## CacheSubnetGroupを作る

CacheSubnetGroupを作る。
設定するのは、elasticache用に割り当てたSubnet 2つ。

![cache-subnet-group.png](https://qiita-image-store.s3.amazonaws.com/0/3985/4cebda8b-93d9-c1a7-111c-38fa9e6c0d49.png)

## Security Groupを作成する

**basic-redis**というSecurity Groupを作成する

- inbound

basic-service側のinboundについて、6379ポート(TCP)を許可する

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|basic-redis|
|Custom TCP Rule|TCP|6379|basic-service|


- outbound

basic-service側へのoutboundは、すべてのトラフィックを許可する

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|basic-redis|
|All traffic|All|All|basic-service|

### basic-service Security Groupの設定追加

**basic-redis**に対する疎通が行えるように設定を追加する。

- inbound

basic-redisからのtrafficについてすべてのプロトコルを許可する。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|basic-redis|

- outbound

basic-redisに対して、6379ポート(TCP)のみ出ることを許可する

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|Custom TCP Rule|TCP|6379|basic-redis|


## Cache Clusterを作成する

Redis用として作成する。先ほど作ったSecurity Groupを指定。

![cache-cluster-1.png](https://qiita-image-store.s3.amazonaws.com/0/3985/8dfd3c03-8509-2f04-e946-e870ea730d6b.png)

こんな感じの設定で作成。

![cache-cluster-2.png](https://qiita-image-store.s3.amazonaws.com/0/3985/97a1959e-38cc-d2ae-fcbd-1b0d236e7f3c.png)

## Route 53にReplication GroupのEndpointを登録

登録する。

![elasticache-1.png](https://qiita-image-store.s3.amazonaws.com/0/3985/8ffefe59-621b-97fe-1593-eb3d2b12fa98.png)

![elasticache-2.png](https://qiita-image-store.s3.amazonaws.com/0/3985/001147a6-ab0d-b392-c048-f789ca1e6e21.png)



## 疎通確認

**basic-public-one**から疎通できるか確認

```
> ssh ip-10-0-11-233.ap-northeast-1.compute.internal
> telnet basic-redis.service 6379
Trying 10.0.16.17...
Connected to basic-redis-001.*****.0001.apne1.cache.amazonaws.com.
Escape character is '^]'.
INFO

INFO
$1931
# Server
redis_version:2.8.23
redis_git_sha1:0
redis_git_dirty:0
redis_build_id:0
redis_mode:standalone
os:Amazon ElastiCache
arch_bits:64
multiplexing_api:epoll
gcc_version:0.0.0
process_id:1
...
```

疎通ok :+1:

# ELBを作る

ELBを作る。くっつけるEC2は予め作っておいた
**basic-public-one(AZはA)**と**basic-public-two(AZはC)**を選択する。

![elb-1.png](https://qiita-image-store.s3.amazonaws.com/0/3985/1508b2ae-af02-3908-3b1e-b1c8ec1b932a.png)

## Security Groupの設定を更新

### basic-elb

ELB用のSecurity Groupの設定を以下の状態に更新する。

- inbound

basic-serviceからのinboundはすべて許可。
80ポート(TCP)についてはすべてのホストからの疎通を許可。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|HTTP|TCP|80|0.0.0.0/0|
|All traffic|All|All|basic-service|

- outbound

outboundはすべてのプロトコルを許可。

|Type|Protocol|Portrange|Source|
|:---|:-------|:--------|:-----|
|All traffic|All|All|0.0.0.0/0|

### basic-service

- inbound

basic-elbからの80ポート(TCP)inboundを許可する



## インスタンスのHealthCheckが通るようにする

nginxをインストールし、ELB側がEC2インスタンス(2つ)と疎通が取れるようにしなければいけない。

- basic-public-one

```
> ssh ip-10-0-11-233.ap-northeast-1.compute.internal
> sudo apt-get update
> sudo apt-get install nginx
```

- basic-public-two

```
> ssh ip-10-0-12-64.ap-northeast-1.compute.internal
> sudo apt-get update
> sudo apt-get install nginx
```

## ELB側がEC2インスタンスと疎通が取れてるか確認

- ECインスタンスのaccess.logを見る。

```
10.0.0.55 - - [03/Jan/2016:03:24:24 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "ELB-HealthChecker/1.0"
10.0.10.6 - - [03/Jan/2016:03:24:25 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "ELB-HealthChecker/1.0"
```

- ELBのステータスを確認する

![elb-3.png](https://qiita-image-store.s3.amazonaws.com/0/3985/b5e8ceba-7c9a-1210-356c-5304c80cc6b8.png)

問題なし :+1:

## 実際にアクセスできるか確認

ELBのエンドポイントに対し、ブラウザからアクセスをする。

![web.png](https://qiita-image-store.s3.amazonaws.com/0/3985/c92c0d7a-b19e-1c96-1c4a-6b16bec34f2f.png)

出てきた！

※ここで本当はELBのエンドポイントをRoute 53に対して登録し、
ドメインと結びつける作業が必要だが、今回は割愛。

# NetworkACLを作る

NetworkACLを各Subnet用、目的別につくる。
特定IPアドレスからのアクセス拒否などに対応するため。

## inbound/outboundについて

すべてのNetwork ACLについて以下の形にする。
3306ポートで絞るなどはSecurity Group頼み。

- inbound

|Rule|Type|Protocol|PortRange|Source|Allow/Deny|
|:----|:---|:-------|:--------|:-----|:---------|
|30000|ALL Traffic|ALL|ALL|0.0.0.0/0|ALLOW|
|*|ALL Traffic|ALL|ALL|0.0.0.0/0|DENY|

- outbound

|Rule|Type|Protocol|PortRange|Source|Allow/Deny|
|:----|:---|:-------|:--------|:-----|:---------|
|30000|ALL Traffic|ALL|ALL|0.0.0.0/0|ALLOW|
|*|ALL Traffic|ALL|ALL|0.0.0.0/0|DENY|

## 作成したNetwork ACLのSubnet Associations

作成したNetwork ACLと、Subnet Associations(関連)について。

- nat-gateway

|Subnet|CIDR|
|:-----|:---|
|managed-nat-gateway-a|10.0.0.0/27|

- jump-hosts

|Subnet|CIDR|
|:-----|:---|
|basic-ec2-jump-hosts|10.0.5.0/27|

- basic-rds

|Subnet|CIDR|
|:-----|:---|
|basic-rds-a|10.0.15.0/27|
|basic-rds-c|10.0.15.32/27|

- basic-elb

|Subnet|CIDR|
|:-----|:---|
|basic-elb-a|10.0.10.0/27|
|basic-elb-c|10.0.10.32/27|

- basic-elasticache

|Subnet|CIDR|
|:-----|:---|
|basic-elb-c|10.0.16.0/27|
|basic-elb-a|10.0.16.32/27|

- basic-ec2


|Subnet|CIDR|
|:-----|:---|
|basic-elb-c|10.0.11.0/24|
|basic-elb-a|10.0.12.0/24|

こんな感じ。

# 注意点

## Subnetのサイズ設定について

Subnetについてケチケチ/27で切っているけど、本当に伸びるサービス、永遠に続けるつもりがあるようなサービスに対してはやめたほうが良い。AWSの場合、Subnetについて　5つのアドレスを予約アドレスとして確保されるため。32個のアドレスのうち、5つが予約済みとなるため/27で切ると27個のアドレスしか利用できない。

以下を参考のこと。

[サブネットのサイズ設定](http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Subnets.html#SubnetSize)

```text:サブネットのサイズ設定より引用
各サブネット CIDR ブロックの最初の 4 つの IP アドレスと最後の IP アドレスは使用できず、
インスタンスに割り当てることができません。
たとえば、CIDR ブロック 10.0.0.0/24 を持つサブネットの場合、
次の 5 つの IP アドレスが予約されます。

10.0.0.0: ネットワークアドレスです。
10.0.0.1: VPC ルーター用に AWS で予約されています。
10.0.0.2: Amazon が提供する DNS へのマッピング用に AWS で予約されています。
10.0.0.3: 将来の利用のために AWS で予約されています。
10.0.0.255: ネットワークブロードキャストアドレスです。VPC ではブロードキャストがサポートされないため、このアドレスを予約します。
```

ここでのネットワーク構築はあくまで例。m(_ _)m