40代おっさんVPCを勉強してみた

#40代おっさんVPCを勉強してみた

##はじめに
プログラミング初学者です。軽い自己紹介します。

・介護職にて17年以上働いてました。
・昨年よりプロブラミングに興味が出て勉強をしています。
・年齢のこともあり、就職活動うまくいっていません。


##目標
VPC作成し理解を深める。

##VPCとは
　AWS上で提供している機能の１つで、AWS内に構築できる仮想ネットワークのことです。
この仮想ネットワーク内にてAWSが提供しているサービス（例えば仮想サーバー「EC2」など）を起動することができる。

##VPC構築するための前提知識

###CIDRとは
　CIDRとは、「Classless Inter-Domain Routing」の略で、サイダーと読みます。
　クラスを使わないIPアドレスの割り当てと、経路情報の集成を行う技術です。
　クラスとは、IPアドレスのネットワーク部とホスト部を決められたブロック単位 で区切る方法（クラスA,B,Cと決めて区切る方法）
　これに対しクラスを使わないCIDRでは、任意のブロック単位で区切ることがで きるため、IPアドレス空間を効率的に利用することができます。
　またCIDRの利用がない場合、相当IPアドレスの無駄が発生するみたいです。

　初心者にはわかりずらいですよね以下を参照してください。


```:&#x20;CIDR表記例
0.0.0.0/0        すべてのIPアドレスを使用（デフォルトルートとして使用する）
10.20.30.40/32   10.20.30.40（1の特定のIPアドレスが使用できる）
10.20.30.40/24   10.20.30.*  (第３オクテッド255個分のIPアドレスが使用できる)
10.20.30.40/16   10.20.*.*   (第３オクテッド＋第４オクテッド = 255×255個分のIPアドレスが使用できる)
```

```:&#x20;CIDR表記でない例
10.21.59.223/255.255.0.0　　　10.21. * . * (第３オクテッド＋第４オクテッド = 255×255個分のIPアドレスが使用できる)
```

CIDR表記でない例はwindowsで使用されています。

###サブネットとは
　サブネットは最初にVPCによって作られているCIDRブロックを分割したネットワーク群のことです。

これもわかりずらいですよね・・・
わかりやすく説明すると学校（これがVPC本体)の中にクラス（サブネット）を分けて配置するみたいなことです。

サブネットには
公開してよいもの（Publicサブネット）
非公開のもの　　（Privateサブネット）
があります。

###インターネットゲートウェイとは
　VPC内からインターネットに接続するためのゲートウェイです。
家で例えると、ルーターみたいな役割（ネットワークの出口部分）をしているみたいなものだと認識しています。
間違っていたらすいません。

###ルートテーブルとは
　ルートテーブルには、サブネットまたはゲートウェイからのネットワークトラフィックの経路を判断する際に使用される。

これもわかりづらいですよね・・・
　つまりインターネットゲートウェイ、サブネットに、決まったIPアドレスを尋ねられたら、どこの場所にあるか教えなさいよと言うルールを設定しておくことみたいなことだと認識しています。

###ENI(Elastic Network Interface)
　AWSのネットワークインターフェースを設定するためのサービス
物理的な環境におけるNIC（Network Interface Card）のことです。

NICだとダメだ理解が・・・・
　難しすぎるのでNICの説明は割愛させて頂きます・・・
つまりNICなるものを使うとサーバーの役割にお応じてIPを振り分けたり、異なるセグメント間で1台のサーバーを動作させたりすることができるみたいです。（セグメントとは軽く言うとサブネットみたいなものだと認識してます。間違っていたらすいません。）
＊補足
NICは物理的な装置の総称なのですが、それをAWSクラウドでは仮想的で柔軟に拡張が可能なNetwork InterfaceとしてENIを提供しています。Elasitc（拡張とか柔軟とか伸縮可能とかの意味です）
###Public IPアドレスとは

一般的にはグローバルIPアドレスのことです。

AWSから割り当てられる。
※厳密にはAWSが持つグローバルIPアドレスをパブリックIPアドレスとしてAWSがユーザに割り当てている。
このIPアドレスはネット環境につなぐために必要
サブネットなどで設定したIPアドレスはプライベートIPアドレスと言われます。
これはインスタンスが停止したり、再起動する毎に変わります。
これを固定しないと自分が作ったWEBサイトなどを見てもらうために毎回IPが変わることとなり公開することが難しくなります。

###Elastic IPアドレスとは

 これは先ほどのPublic IPアドレスを固定化するものです。
これによりWEBサイトを公開することができるようになります。
ただしお金がかかるので固定するの注意です。（ただそんなにお金はかかりませんでした・・・）
＊補足
ElasticIPを取得し、EC2などに割り当て後にそのEC2が未使用になるかまたは割り当てずに放置すると課金が発生します。
###セキュリティグループとは

　EC2インスタンスに適用可能なAWS標準のファイアウォール機能です。
関連付けられた Amazon EC2 インスタンスのファイアウォールとして動作し、インバウンドトラフィックとアウトバウンドトラフィックの両方をインスタンスレベルでコントロールします。
インスタンスを起動する際、作成した 1 つ以上のセキュリティグループに関連付けることができます。
VPC 内のインスタンスごとに異なるセキュリティグループのセットに割り当てることができます。
＊補足
インスタンス毎、つまりマシン毎にセキュリティの設定が出来るので柔軟な設定が可能になります！

オンプレミス構成の場合だとネットワークの出入り口にファイアウォール機器を設置し、そこでセキュリティ設定をするので、ファイアウォール内部の全ての利用機器の構成を考えてセキュリティ設定するので面倒臭いです。
※ステートフルなセキュリティ
###Network ACLとは

　サブネット単位で設定するファイアーウォールのことです。
関連付けられたサブネットのファイアウォールとして動作し、インバウンドトラフィックとアウトバウンドトラフィックの両方をサブネットレベルでコントロールします。
　セキュリティグループとの違いはインスタンス単位か、サブネット単位かで違いがあるようです。
＊補足
セキュリティグループは、通信状況を保持するので通信の片方分だけ設定すれば良いのですが、NetworkACLだと通信の両方（行きと戻り）分を設定必要なので、面倒臭いですね。その違いもありますのでお気をつけ下さい！
※ステートレスなセキュリティ
##最後に
　今回はVPC作成まで書くことができませんでしたが次回に書きたいと思います。
感想は前提知識を書くだけでは伝えることが難しく実際に作りながら確かめることが一番わかりやすいと感じました。

##参考
＊補足部分はAWS CloudTechで教えてもらった部分です。このように添削してもらえる部分があると理解が進むのでとてもうれしいです。
https://qiita.com/Shun-Hoso/items/757e81ecf2afa3efb929
https://zenn.dev/tomoshimizu/articles/6945b7ac472ca0

　またこの記事はAWS初学者を導く体系的な動画学習サービス「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com/

　このサービスは動画を見ることで分かりやすく理解ができることがメリットですが、
今回自分が記事を書くことでサイト内でのコミュニティーでの記事を参考にいたしました。
それを見ていくとさらに理解が深まると思いました。とても勉強になると感じています。