クラウド初心者のAWS入門(第4回)

# 第4回　パブリックサブネット構築(2／2)
前回の続きです。作成したパブリックサブネットに、インターネットへ接続するための設定を行っていきたいと思います。

今回構築する箇所は下図の通りとなります。

|![システム構成図_第4回目-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/dccaf650-48f1-b6a4-ebc0-b1ab632307f2.png)
|:-:|

項目も多いため、図中の番号順に進めていきたいと思います。

* 1a. インターネットゲートウェイの作成
* 1b. VPCと関連付け
* 2a. ルートテーブルの作成
* 2b. パブリックサブネットと関連付け
* 2c. デフォルトルートの設定

## 1a. インターネットゲートウェイの作成
まずは、インターネットゲートウェイの作成を行っていきます。
(サブネットをインターネットゲートウェイへ通信できるようにすることで、そのサブネット上のインスタンスはインターネットへ接続できるようになります)

現実世界に例えると、NATゲートウェイを買ってくるイメージかと思います。

「VPCダッシュボード」の左ペイン、から「インターネットゲートウェイ」を選択し、「インターネットゲートウェイの作成」を選択します。

|![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/078f5b62-b8d2-4e70-bdd2-9ed8784b249a.png)
|:-:|

必須入力項目はないので、デフォルトのまま作成を行います。

|![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/c70df417-8045-a876-54ff-d7c175e2afff.png)
|:-:|

**なお、「名前タグ」は、複数ゲートウェイを持たせる際に、識別用として用いるようです。今回は使用しません。**

## 1b. VPCと関連付け
作成したインターネットゲートウェイとVPCの関連付け作業を行います。
現実世界に例えると、買ってきたNATゲートウェイとVPC（スイッチ）を物理的にケーブルで接続するイメージかと思います。

作成したインターネットゲートウェイを選択し(チェックボックスにチェック)、「アクション」、「VPCにアタッチ」の順に選択します。

|![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/84d6be4f-f187-ec04-01c9-9bd3b44b51ee.png)
|:-:|

その後、ドロップダウンリストから、前回作成したVPCを選んで「アタッチ」を選択します。

|![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/3cfd7971-fff1-8ad4-4572-bc225604392d.png)
|:-:|

まだインターネットには接続できないので、続いて実際にルータに設定を入れていきます。

## 2a. ルートテーブルの作成
ルートテーブルは、x.x.x.xからきた通信はy.y.y.yに送信しますよ、というネットワークの設定です。

今回は、パブリックサブネットから、インターネットゲートウェイへ通信を行いますので、ルートテーブルの現状を確認し、必要な設定を実施していきます。

現実世界のルーティングテーブルと同様かと思います。

***
### ルートテーブルの確認
***

VPCを作成した際、デフォルトでルートテーブルが割り当てられます。
そのルートテーブルが、インターネットゲートウェイ向け通信のルートを持っているかを確認していきます。

まず、作成したVPCに、どのルートテーブルが割り当てられたかを確認するために、「VPCダッシュボード」の左ペインから「ルートテーブル」を選択します。

画面上で「VPC ID」という項目を確認できるかと思います。
この「VPC ID」を知ることで、ルートテーブルに割り当てられているVPCを特定します。

<details>
<summary>**「VPC ID」は以下にて確認**</summary>
<img width="960" alt="６＿２.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/0063e3f7-c2f1-4a51-c6c2-4f18cc93b4fa.png">
</details>

続いて、この「VPC ID」をもとに対象のルートテーブルにチェックを入れ、「ルート」タブを選択することでルートテーブルの情報を確認します。

|![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/35d05556-893f-0093-b36f-253f167cad02.png)
|:-:|

初期状態なので、送信先「10.0.0.0/16」を「local」に送信する設定しかないかと思います。
そのため、その他の通信はすべて破棄されてしまいます。

例えば、Googleに接続しようとした場合は、通信先「172.217.26.3」となるのですが、該当のアドレスはルートテーブルに登録されていないため、通信は破棄されてしまいます。

そこで、内部通信以外(10.0.0.0/16)のすべての通信(0.0.0.0/0)を、インターネットゲートウェイに送信するルートテーブルに追加をしてあげます。(俗にいうデフォルトゲートウェイの設定)

***
### ルートテーブルの作成
***

前項で、デフォルトで作成されるルートテーブルには、インターネットゲートウェイ向けの通信が登録されていないことがわかりました。

そこで「ルートテーブルの作成」を選択し、新規にルートテーブルを作成していきます。

|![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/f85ad299-9817-7f65-59ab-c04eb6e90e5e.png)
|:-:|

「名前タグ」の入力（任意）と「VPC」を選択します。（VPCは前回作成したもの)

|![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/b4323b7b-39dd-fa19-a961-d7eacad61484.png)
|:-:|

また、既存のルートテーブルを削除すると内部通信ができなくなるので、理由がなければ残置推奨です。

## 2b. パブリックサブネットとの関連付け
前項までで、ルートテーブルの枠だけを作成しました。

作成したルートテーブルはどこにも割り当てられていないため、パブリックサブネットに割り当ててあげます。
その後に、前述のデフォルトゲートウェイをルートテーブルに記載してあげます。

まずは、ルートテーブルをパブリックサブネットへ割り当てます。
先ほど作成したルートテーブルにチェックを入れ、「サブネットの関連付け」タブより設定を行います。

|![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/5d2927ef-cd91-1832-1166-da9716b215f4.png)
|:-:|

設定画面からサブネットにチェックを入れ、「保存」を選択します。

|![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/eaf657de-62f4-ca9c-0e7d-3b1b99eb4e14.png)
|:-:|

## 2c.デフォルトゲートウェイの設定
最後に、作成したルートテーブルに、デフォルトゲートウェイを設定して完了となります。

「ルートテーブル」より、作成したルートテーブルにチェックを入れ、「ルートの編集」を行います。

|![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/f1e301ff-3018-8466-810d-3aca2531ddfe.png)
|:-:|

すべての通信(0.0.0.0/0)を、とりあえずインターネットゲートウェイに飛ばしてあげる設定をします。

|<img width="1279" alt="12_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/278cf7ae-0b6b-bc71-2926-3b465f9284f0.png">
|:-:|

サブネットに対して、ルートテーブルが設定されました。

|![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/8d640ae4-46a9-4b66-951f-cdc242420737.png)
|:-:|

長く、複雑になってしまいましたので以下補足です。
(余計ややこしくなるかも知れませんのでお気をつけください)

<details>
  <summary>補足　実機で考える</summary>
![Untitled Diagram-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/8de9ed56-329c-b688-df63-196ae8571539.png)

</details>

誤っている点がございましたら、コメントをいただけると幸いです。

# 参考文献
[Amazon Web Services 基礎からのネットワーク&サーバー構築](https://shop.nikkeibp.co.jp/front/commodity/0000/231260/)

# 後書き
2020年6月14日に記載内容を修正しております。