【AWS】用語を整理しながら学ぶAWS - part4 VPC構築編-1

# はじめに

この記事では AWS Cloud Tech を通して VPC を学習して実践していく記事です。
主な内容としては実践したときのメモを中心に書きます。（忘れやすいことなど）
誤りなどがあれば書き直していく予定です。

## AmazonVPC とは

Amazon が提供するクラウドサービスの一つ
Amazon Virtual Private Cloud の略

Amazon Web Services の中でネットワークを構築できるサービスである。
ネットワークだけでなくセキュリティグループの作成やネットワーク ACL を作成して
セキュリティを構築することができる。

## どのようなときに用いるか

AWS 内にネットワークを構築する際に利用します。
利用する方法としては  
パブリックサブネットとプライベートサブネットの二つに分けて使うのがベーシックな使い方です。

## 学習するときに必要な知識

- IPv4 アドレスの計算
- サブネットの計算
- ルーティングの構築
- ファイアウォールの知識
- OSI 参照モデル(L2 から L7)

おおむね、基本情報処理技術者試験の内容が理解できるのであればおおむねイケます。

## ネットワークの基礎(IP アドレスとサブネット)

IP アドレスの計算で用いられるのは主に 2 進数によるビット計算
オクテッド毎に 8 ビットあります。

※オクテッドというのは IP アドレスそれぞれの桁の名前を指します。

例）192.168.0.0 /24 のとき

第一オクテッドは 192
第二オクテッドは 168
第三オクテッドは 0
第四オクテッドは 0

となります。
この時のアドレスの範囲は
192.168.0.1 ～ 192.168.0.255 となりますが

実際にホストアドレスとして利用できるアドレスは 2^8 -2 個となる。

```dotnet
192.168.0.2 ～ 192.168.0.254
```

第 4 オクテッドが 1 のアドレスはネットワークアドレス
第 4 オクテッドが 255 のアドレスはブロードキャストアドレス
となります。※

※ブロードキャストアドレスは範囲の中でも一番終端にあるアドレスがそう呼ばれる為
必ずしも 255 になるとは限りません。

## IP アドレスの計算 実践問題

実際に問題を解いて考えてみよう。

---

問題 1）10.0.0.0/21 の範囲を計算してください。

答え) 10.0.0.1 ～ 10.0.7.255

解き方）
まずは CIDER 表記に着目

/21 はサブネットマスクに直すといくつになるかといえば

/24 が以下のように表せるので
11111111.11111111.11111111.00000000

/21 はサブネットに直すと
11111111.11111111.11111000.00000000
となります。

そうするとネットワークを分割するサブネットマスクは以下のようになります。

```dotnet
255.255.248.0
```

ここの第 3 オクテッドの計算はいろんな方法がありますが
255 のビット列を覚えている人が直感的にわかりやすい方法としてはビットの引き算を利用することです。

計算式：

11111111 － 00000111 ＝ 11111000
255 － 7 = 248

サブネット表記に表すと問題の IP アドレスの範囲は
10.0.0.0 255.255.248.0

アドレスの範囲を計算すると
10.0.0.1 ～ 10.0.7.255 となります。

ここで忘れやすいのがネットワークアドレスとブロードキャストアドレスの存在
実際に利用できる IP アドレスはサブネットで切られた全体の IP アドレスの個数 -2 で考えましょう。

---

問題 2）10.0.0.0/21 の範囲を利用して実際にホストアドレスとして利用できる IP アドレスの個数はいくつか

答え ) さらにサブネットとして分割しなかった場合は 2046 個の IP アドレスが利用できる。

解き方）

第 4 オクテッドの数は 256 個となるのが確定なので今回は第 3 オクテッドに注目
第 3 オクテッドで利用できる数値の個数は 0 から 7 までの数値である為、8 個となります。

あとは組み合わせの計算で 256 × 8 = 2048
ネットワークアドレスとブロードキャストアドレスを除くと 2046 個となります。

## VPC を構築しよう

VPC を構築する場合はサービスから VPC を検索する。  
コンソール画面の左側からVPCを選択する。
![console_menu.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/ad4955c4-b367-7351-5b22-cc172cad4272.jpeg)


Name タグ：構築する VPC の前を指定
IPv4 CIDER ブロック：プレフィックス表記(短縮表記)で記載
IPv6 CIDER ブロック：IPV6 のアドレスを使うかどうか基本はなしでダイジョブ
Name タグ：ここを設定すると VPC に識別子をつけることができる。たくさん VPC を作る予定ならばしっかりつけておく。

![vpc1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/e99e1311-e304-d977-aaa6-2ee963280226.jpeg)

最後に VPC を作成をクリック

## サブネットを切ろう

VPC 領域と名付けた VPC をサブネットで切ろう。
実際のネットワークエンジニアリングではサブネットを切る時
そのネットワークでいくつのサブネットを切るつもりかを先に検討する。

今回はパブリックネットワークに 2 つ、プライベートネットワークに 2 つという合計 4 つになる想定であり  
今後の拡張に備えて 8 つにサブネットが切れるようにする。

![subnet1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/663b46f8-326c-b2ee-a6ec-130557712a7c.jpeg)

VPCID は先ほど作成した VPC を指定
![subnet2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/32200815-0db3-42b9-e761-17261186a24e.jpeg)


サブネット名：パブリックサブネット 1a
アベイラビリティゾーン：リージョンを分割して距離をおいたファシリティを使うゾーンのこと
IPv4 CIDR ブロック：サブネットのネットワークをプレフィックス表記で指定

※ファシリティやアベイラビリティゾーンの説明は[ここに書きました](https://qiita.com/ymd65536/items/506a0aa34f5fbc87c2c3)

※サブネットは VPC の範囲内で作成すること。

## インターネットゲートウェイの構築

シンプルにネットワークを構築することができました。
とはいえ、この状態のネットワークだとインターネットに接続されていない
クラウド内におけるプライベートネットワークに過ぎないのでインターネットの出入り口である。
インターネットゲートウェイをつなぐ必要があります。

インターネットゲートウェイから「インターネットゲートウェイを選択」

![intgw1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/906857d7-7c9e-e17c-504f-42b90147242a.jpeg)

インターネットゲートウェイの設定：ゲートウェイの名前(任意の名前)を入力 
タグ：たくさん インターネットゲートウェイ を作る予定ならばしっかりつけておく。

## VPC にインターネットゲートウェイをアタッチ

VPC のここを操作します。
![vpc4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/3f41ab9a-eeb0-018f-0356-86ae5181b751.jpeg)

ざっくりいえば、VPC をインターネットゲート上に公開する作業です。
この作業を忘れるとルートテーブル作成時にインターネット向けの通信を定義できません。

![vpc2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/d7750ed7-56a0-d506-d40f-832c60e3eff4.jpeg)

テキストボックスをクリックして先ほど作成した VPC を選択します。

![vpc3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/c6344ff3-b587-8fca-5b06-d364a56fd81e.jpeg)


## インターネットゲートウェイをデフォルトゲートウェイに登録

インターネットゲートウェイ向けのルーティングを持つルートテーブルを作成する。
サブネットを作成するとルートテーブルも自動で作成される為
自動で作成されたルートテーブルを編集してインターネットゲートウェイを設定します。

![route1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/55afb796-658b-e045-c34e-a9db459971d2.jpeg)

上記のような状態になれば、設定できています。
意味としては向かってきた全てのアドレスをインターネット側に向けるという意味です。

![route2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/22ebf923-a9ba-bdb2-1c71-da8eb882158f.jpeg)

実際に登録する為には送信先に「0.0.0.0/0」のアドレスを入力して
先ほど作成したインターネットゲートウェイを指定します。

ここまででインターネットにつながるパブリックネットワークの構築は以上です。

## おわり

VPC は他のサービスを触るうえでとても重要な技術になります。
今回記載した内容ではパブリックネットワークの作成までですので
せいぜい、Web サーバの配置くらいでしか用途がありません。
※画像などのメディアは S3 に格納することが一般的

**ですので、くれぐれも重要な DB を配置しないようにしましょう。**

---