AWSで基本的なネットワークを構築してみた

AWSでのネットワーク構築ですが実務でもやったことがあります。

先日、改めてAWSの学習をしていて「そういえばどうやってネットワークの構築ってどうだっけ？」と思う節があったので

自宅PCで基本的なネットワークを構築してみました。

VPCやAWSでネットワーク構築で行う基本的な知識をアウトプットしながら、ネットワークを構築していきたいと思います。

## まずそもそもVPCとは？
AWSのネットワーク構築では、よく使われるVPC。実は最近までよく理解していませんでした。
VPCとは巨大なAWSのネットワークの中からユーザ専用の領域を切り出すことのできる仮想ネットワークのサービスのことを言います。

イメージでいうと広大な土地があって、そこでそれぞれに自分達が使う領地を決めているといったイメージです。

## VPCには上限がある

VPCはリージョンあたりの上限が５つまでと決まっており、VPCは６つ以上必要になる場合は上限緩和申請といって上限を増やすことができます。でも今回は特に作る予定はありません。

## 一つ設定すると自動で他の設定をやってくれる
実際に構築をやっているときは頭が追いついていなかったのですが、VPCって一つ作ると付随してくれる他の設定も一緒にやってくれます。

[VPC]-[お使いのVPC]-[VPCを作成]-[作成するリソース]

「VPCなど」を選択するとマルチAZ構成にしたり


プライベートサブネット、パブリックサブネットからルートテーブルまで自動で作成してくれます。
こんなふうに。
![スクリーンショット 2022-09-07 22.31.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/27af5b67-0d35-739d-b5d1-e37ba19c4821.png)

また、サブネットもCIDRブロックを指定することで使用できるIPアドレスの数を表示させることができます。

![スクリーンショット 2022-09-10 21.52.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/b32aa74b-2ce7-8bd5-6456-34dd7d92d37a.png)
CIDRを変えれば横のIPアドレスも変動します。

このようにして「VPCなど」を選択することで必要な設定を自動で行ってくれます。

「VPCのみ」だとこの画面から作成することができます。

![スクリーンショット 2022-09-10 22.05.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/87b572c6-6496-a9c7-b1e7-5d67ca702a21.png)

少々、順番は前後しますが、VPCだけを設定したあとでサブネットを作成することもできます。ベインメニューから

[VPC]-[サブネット]-[サブネットを作成]
この画面で先ほど作成したVPCを選択します。

![スクリーンショット 2022-09-10 22.09.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/72bffb94-fd6f-aef7-4a98-c7afee389f3d.png)

VPCを選択するとサブネットを設置するAZとCIDRブロックが選択できます。

![スクリーンショット 2022-09-10 22.07.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/b3ac1903-4a1a-a199-29bb-618023e5bf4f.png)


「VPCのみ」で設定するなら二つのAZにそれぞれプライベートサブネット、パブリックサブネット合計４つを作成します。

また余談ですがサブネットはAZをまたいで設定することはできるがリージョンをまたぐことはできません。

## パブリック/プライベートってどうやって決めているの？
サブネット作成の画面を見てもらえればわかると思いますが、パブリックサブネット、プライベートサブネットを選択する項目がありません。

一般的な決め方はインターネットゲートウェイとアタッチしているサブネットがパブリックサブネットになるようです。なので手順としてはこのような流れ。

①インターネットゲートウェイの作成（以下igw）
②igwをVPCにアタッチ
③ルートテーブルにigwを追加
④サブネットにルートテーブルを関連づける

## インターネットゲートウェイの設定
[VPC]-[インターネットゲートウェイ]-[インターネットゲートウェイの作成]

パパッと作成し、チェックを入れて［アクション］-[VPCにアタッチ]

![スクリーンショット 2022-09-10 22.37.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/823c7f37-e4e7-9c56-b401-420b68ad62e1.png)

ここで先ほど作成したVPCを選択してアタッチします。そして次はルートテーブルに追加します。

[VPC]-[ルートテーブル]-[ルート]-[ルートの編集]

![スクリーンショット 2022-09-10 8.07.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/d81d20f2-cfc1-85b4-2705-5b109233e635.png)

送信先は0.0.0.0/0、ターゲットはインターネットゲートウェイを選択します。

0.0.0.0/0はデフォルトルート。「未知の宛先に転送するためのルート」といったらいいでしょうか。

VPCという領域の外に出て外部のインターネットて転送する際に使われます。

複数のルートテーブルがある場合は［サブネットの関連付け］のタブから利用可能なサブネットを選択し関連付けを保存します。

## プライベートからグローバルへトラフィックを転送する

プライベートサブネットは外部に晒されたくないDBなどを利用することが目的とされています。

プライベートIPアドレスでインターネットを利用することができず、
そもそも論、それができてしまうと同じIPアドレスを使う利用者がいるので重複してしまいます。

そのためにインターネットにアクセスするためにはグローバルIPアドレスに変換する必要があります。

その変換をする仕組みがNATゲートウェイです。

[VPC]-［NATゲートウェイ］-[NATゲートウェイを作成]

![スクリーンショット 2022-09-11 0.18.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/d02ae81f-284a-c9dd-60a1-cf5e775f471f.png)


![スクリーンショット 2022-09-11 0.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/5646ced0-6f59-9383-3871-9a7a2277a820.png)

ElasticIPは割り当てのボタンを押すことで自動的に生成されます。動的なIPアドレスだと困るのでIPアドレスは固定します。

プライベートサブネットのトラフィックがNATゲートウェイにルーティングされるように先ほど同様、ルートテーブルでルートの関連付けを行います。

補足：一つのプライベートIPをグローバルIPに変換するのがNATだが、複数のプライベートIPアドレスを一つのグローバルIPに変換・共有するのがIPマスカレードといいます。

ネットワークの構成としてはこのようなものでしょうか。

・二つのAZそれぞれにプライベートサブネットとパブリックサブネットを作成する。
・インターネットゲートウェイの作成とVPCのアタッチ
・NATゲートウェイの設定。

セキュリティグループやACLのことについても書きたかったのですがまた別の機会に書きたいと思います。

## 参考記事
https://hirotanoblog.com/aws-route-igw-natgw/6807/#toc2



そのほかにもこんな記事書いていますのでぜひ読んでみてください。

https://qiita.com/mmurm/items/1d42ab3d47dd85e4efbd

https://qiita.com/mmurm/items/de7b641e376685fad71e