AWS VPC Subnet CIDR 設定ルール 参考


毎度、 VPC を作成して Subnet を切る際に **「IP アドレス 第 3 オクテット」** の設定に関して悩むのでメモ。

個人的なルールなので、あくまで参考程度に。



- - -

## AWS VPC Subnet IP アドレス 第 3 オクテット 設定 ルール

下記に示す `用途` の組み合わせで `値` を論理積で掛けあわせた結果を使用する。

| 2 進数    | 値    | 用途              | 補足                          |
|-----------|-------|-------------------|-------------------------------|
| 10000000  |   128 | private           | 0: public / 1: private        |
| 01000000  |    64 |                   | 予備                          |
| 00100000  |    32 | production        | 1: 本番用 ( staging を含む )  |
| 00010000  |    16 | develop           | 1: 開発用                     |
| 00001000  |     8 | compute           | 1: EC2 / etc.                 |
| 00000100  |     4 | database          | 1: RDS / ElastiCache / etc.   |
| 00000010  |     2 |                   | 予備                          |
| 00000001  |     1 | Availability Zone | 0: a / 1: c                   |



### 補足

* compute とは `AWS > Services > Compute` に属する service
* database とは `AWS > Services > Database` に属する service



- - -

## AWS VPC Subnet IP アドレス 第 3 オクテット 設定 例

上記の組み合わせで IP アドレス 第 3 オクテット を決定させる。

例えば、private 領域に設置する本番用 DB の場合だと、

```
    10000000 : private
    00100000 : production
 +  00000100 : database
--------------------------------------------
    10100100 : private-production-database
```

を、 AZ-a に、

```
    10100100 : private-production-database
 +  00000000 : (Availability Zone) a
--------------------------------------------
    10100100 : private-production-database-a (=164)
```

と、 AZ-c に、

```
    10100100 : private-production-database
 +  00000001 : (Availability Zone) c
--------------------------------------------
    10100101 : private-production-database-c (=165)
```

で、 10 進数に変換し、それぞれ、

* x.x.164.0/24 : private-production-database-a
* x.x.165.0/24 : private-production-database-c

という具合になる。



- - -

## AWS VPC Subnet CIDR 設定 例

下記は `VPC 10.0.0.0/16` に Subnet を設定する際の例。

こちらも参考程度に。

| 2 進数    | 値    | CIDR              | Name                          | 補足                                              |
|-----------|-------|-------------------|-------------------------------|---------------------------------------------------|
| 00000000  |     0 | 10.0.0.0/24       | public-a                      | ELB など                                          |
| 00000001  |     1 | 10.0.1.0/24       | public-c                      |                                                   |
| 00001000  |     8 | 10.0.8.0/24       | public-compute-a              | 踏み台 EC2 など                                   |
| 00001001  |     9 | 10.0.9.0/24       | public-compute-c              |                                                   |
| 00111000  |    56 | 10.0.56.0/24      | public-common-compute-a       |                                                   |
| 00111001  |    57 | 10.0.57.0/24      | public-common-compute-c       |                                                   |
| 00010100  |    20 | 10.0.20.0/24      | public-develop-database-a     | 開発用 DB など (local からも接続したい場合)       |
| 00010101  |    21 | 10.0.21.0/24      | public-develop-database-c     |                                                   |
| 10000000  |   128 | 10.0.128.0/24     | private-a                     | NAT Gateway など                                  |
| 10000001  |   129 | 10.0.129.0/24     | private-c                     |                                                   |
| 10001000  |   136 | 10.0.136.0/24     | private-compute-a             |                                                   |
| 10001001  |   137 | 10.0.137.0/24     | private-compute-c             |                                                   |
| 10011000  |   152 | 10.0.152.0/24     | private-develop-compute-a     | 開発用 EC2 など                                   |
| 10011001  |   153 | 10.0.153.0/24     | private-develop-compute-c     |                                                   |
| 10100100  |   164 | 10.0.164.0/24     | private-production-database-a | 本番用 DB など                                    |
| 10100101  |   165 | 10.0.165.0/24     | private-production-database-c |                                                   |
| 10101000  |   168 | 10.0.168.0/24     | private-production-compute-a  | 本番用 EC2 など                                   |
| 10101001  |   169 | 10.0.169.0/24     | private-production-compute-c  |                                                   |
| 10110100  |   180 | 10.0.180.0/24     | private-common-database-a     | 共用 DB など ( **NOTE.1** )                       |
| 10110101  |   181 | 10.0.181.0/24     | private-common-database-c     |                                                   |

* **NOTE.1** : 本番と開発で共用することを明示したい場合、00100000 (=production) と 00010000 (=develop) の bit を立てて 00011000 (=common) として設定する、など。（これも個人的なルール）