AWS 基礎

#前提
AWS（ネットワーク構築）について学んだことを書いていきます。

#本題
VPC領域を構成すると、AWS上に好きな構成のネットワークを構築できる。

#ネットワーク構築
##ネットワークで用いるIPアドレス範囲を定める
AmazonVPCを用いてVPC領域を構成すると、ユーザーごとに隔離されたネットワークを作れる。
作ったネットワークには、任意のネットワークが設定でき、ルーターなどの仮想的なネットワーク機器も配置できる。
早速、VPC領域を作っていきたいところだが、まずVPC領域に対して割り当てる「IPアドレス範囲」の設定が必要。

###パブリックIPアドレスとプライベートIPアドレス
インターネットで使われているTCP/IPというプロトコルでは、通信先を特定するのにIPアドレスを用いる。
IPアドレスはネットワーク上で互いに重複しない唯一無二の番号で、「住所」に相当する。
IPアドレスは、３２ビットで構成される。
192.168.1.2のように、8ビットずつ１０進数に変換したものを「.」（ピリオド）で区切って表記する。
それぞれのピリオドで区切られた数字は「０」〜「２５５」まで。
つまり、IPアドレスは「0.0.0.0」から「255.255.255.255」までとなる。

***パブリックIPアドレス***
インターネットに接続する際に用いるIPアドレスのこと。
パブリックIPアドレスは、プロバイダーやサーバー事業者から貸し出しされる。

***プライベートIPアドレス***
インターネットで使われないIPアドレス。
プライベートIPアドレスは、誰にも申請することなく自由に使える。
社内LANを構築するようなときなど、このIPアドレスを用いるようにする。

###IPアドレス範囲と表記方法
ネットワークを構築する際には、まずそのネットワーク内で使うIPアドレスの範囲を定める。
IPアドレスの範囲を10個や15個、20個といったように、好きな数で区切ることはできない。
ホストに割り当てられるIPアドレスの範囲は、「2のn乗個で区切る」という決まりがある。
つまり、4個・8個・16個・32個・64個・128個・256個といった単位で区切る。
一般によく使われる区切りが、256個と65536個。
256個の区切りは最後から８ビット分（＝２の８乗）に相当し、ちょうどIPアドレスのピリオドで区切った先頭から3つまでを境に、左側の数字をホストに割り当てる。
例えば、「192.168.1.0〜192.168.1.255」は256個で区切った時の一例。
同様に、65536個の区切りは最後から１６ビット分（＝２の１６乗）に相当し、IPアドレスのピリオドで区切った先頭から2つまでを境に、左側の数字をホストに割り当てる。
例えば、「192.168.0.0〜192.168.255.255」は65536個で区切った時の一例。
IPアドレスは前半の部分を「ネットワーク部」、後半の部分を「ホスト部」という。
※ホスト（host）とは、コンピュータやルーターなどネットワーク機器など、IPアドレスをもつ通信機器の総称。

***CIDR表記とサブネットマスク表記***
「192.168.1.0〜192.168.1.255」や「192.168.0.0〜192.168.255.255」といった表現は長いため、通常IPアドレス範囲を示す時には、「CIDR表記（サイダー）」もしくは「サブネットマスク表記」のいずれかの表記を用いる。

１、CIDR表記
IPアドレスを２進数で表記したとき、「ネットワーク部のビット長」を「/ビット長」で示す方法。
このビット長のことを「プレフィックス（prefix）」という。
例えば、「192.168.1.0〜192.168.1.255」の場合、プレフィックスは２４ビット。
そこで「192.168.1.0/24」と記述する。
同様に、「192.168.0.0〜192.168.255.255」はプレフィックスは16ビットのため、「192.168.0.0/16」と記述する。
IPアドレス範囲をCIDR表記する場合、その範囲は「CIDRブロック」と呼ばれる。

２、サブネットマスク表記
サブネットマスクはプレフィックスのビット数だけ２進数の「１」を並べ、残りは「０」を記述した表記。
例えば、「192.168.1.0〜192.168.1.255」の場合、サブネットマスクは「255.255.255.0」なので、「192.168.1.0/255.255.255.0」と表記する。
同様に「192.168.0.0〜192.168.255.255」の場合、サブネットマスクは「255.255.0.0」で「192.168.0.0/255.255.0.0」と表記する。
CIDR表記やサブネットマスク表記は少し難しく感じるが、単純に「先頭からいくつ分のIPアドレス範囲を示しているか」を示す表記方法にすぎない。
多く用いるIPアドレス範囲は、「256個単位」もしくは「65536個単位」。
最初のうちは、以下の規則さえ覚えていれば十分。

１、CIDR表記「/２４」もしくはサブネットマスク表記「/255.255.255.0」
256個分の範囲を示す。
例えば、「AAA.BBB.CCC.0/24」もしくは「AAA.BBB.CCC.0/255.255.255.0」と表記された場合、「AAA.BBB.CCC.0〜AAA.BBB.CCC.255」。

２、CIDR表記「/１６」もしくはサブネット表記「/２５５.２５５.０.0」
65536個分の範囲を示す。
例えば、「AAA.BBB.0.0/24」もしくは「AAA。BBB.0.0〜AAA.BBB.255.255」。

これらは表記の決まりごとにすぎない。
例えば、
❶192.168.1.0〜192.168.1.255
❷192.168.1.0/24
❸192.168.1.0/255.255.255.0
は全て同じIPアドレス範囲を示している。
ネットワーク関係の多くのコマンドや設定では、❷や❸の表記しか受け付けない。
そのため、❷や❸の表記が出てきた時に、❶の範囲を示すのだとわかるかどうかが、ネットワークを理解するポイントになる。

###ネットワーク構成
実験用ネットワークでは、プライベートIPアドレス範囲を用いる。
プライベートIPアドレス範囲なら、どの範囲を用いても構わないが、VPC領域を作成するときに、プレフィックス長として「１６以上」を指定する必要がある。

##VPCの作成
今回は「10.0.0.0/16」のCIDRブロックでVPC領域を構成する。
AWSマネジメントコンソールを使ってVPC領域を作るには、次のようにする。
この作業は、実世界において、「ルーターやハブなどを用意して、環境を整える作業」に相当するもの。

***手順***
１、AWSマネジメントコンソールでVPCを開く
AWSマネジメントコンソールのホーム画面からVPCを選択する。

２、リージョンの設定
VPCの操作対象とするリージョンを右上から選択。（東京リージョン）
※AWSマネジメントコンソールでは、一度右上からリージョンを選択するとVPCだけでなく他のサービスに対しても、それがデフォルトとして設定される。

３、VPC領域を作成
VPCメニューをクリック。
すると、VPC領域の一覧が表示される。
VPCの作成をクリックして、VPC作成を開始。
名前タグには、作成するVPC領域につける名前を入力。
「IPv4 CIDRブロック」は使用するIPアドレス範囲。
作成をクリックすると、VPC領域が作られる。

##VPCをサブネットに分割
以上の作業で、「10.0.0.0/16」というCIDRブロックを持ったVPC領域という名前をもつVPC領域、すなわち、プライベートなネットワーク空間が出来上がる。
このネットワーク空間は、作成したユーザーが自由に扱うことができる空間で、他のユーザーからは全く見えない。

###サブネットの考え方
実際のネットワークでは、割り当てられたCIDRブロックをそのまま使わずにさらに小さなCIDRブロックに分割して利用することがほとんど。
このように、さらに細分化したCIDRブロックのことをサブネットという。
例えば、今回は「10.0.0.0/16」というCIDRブロックをVPC領域に割り当てたが、これをさらに、「/24」の大きさで切って256分割する。

サブネットに分割するとその部分でネットワークを分けることができる。
分けたい主な理由として、次の❷点があげられる。

1、物理的な隔離
社内LANを構築する場合、「１階と２階とで、別のサブネットに分けたい」というように物理的に分けたいことがある。
サブネットにわけておくと、万一、どちらかのサブネットが障害を起こした時も、もう片方にその影響が出にくくなる。

２、セキュリティ上の理由
サブネットを分ければ、それぞれに対して、別のネットワークの設定ができる。
例えば、「経理部のネットワーク」だけを分離して、他の部署からはアクセスできないようにしたいというのは、よくあるセキュリティの要求。
また、社内にサーバーを持っている場合は、「サーバー群だけを別のサブネットにして、そのサブネットとの通信を監視したり一部しかデータを通さないように構成したりすることでセキュリティを高めるとか、インターネットに接続するサーバーだけを別のサブネットにして、社内LANから隔離するという構成もよくとられる。

###VPC領域をサブネットに分割する
１、パブリックサブネット（10.0.1.0/24)
インターネットからアクセスすることを目的としたサブネット。
この領域には、Webサーバーを設置し、インターネットからアクセスできるようにする。

２、プライベートサブネット（10.0.2.0/24）
インターネットから隔離したサブネット。この領域には、データベースサーバーを設置する。

「インターネットからアクセスできる箇所」と「インターネットからはアクセスできない箇所」に分離するのは、セキュリティを高める時に、よく用いられるネットワーク構成。
プライベートサブネットに配置するデーターベースサーバーは、インターネットから直接アクセスできないため、セキュリティを高められる。

##パブリックサブネットをインターネットに接続
VPCにおいて、あるサブネットをインターネットに接続するには、インターネットゲートウェイを用いる。
これは自分のネットワークにインターネット回線を引き込むというイメージの作業になる。
※複数のVPC領域を作る場合は、どのVPCに結びつけるかを選択する必要がある。VPC領域にはIDが割り振られているため、この番号で区別する。

###ルーティング情報
ネットワークにデータを流すためには、ルーティング情報と呼ばれる設定が必要。
この設定は、ルーティングテーブルやルートテーブルと呼ばれている。
インターネットで使われている「TCP/IP」というプロトコルでは、データを細切れにしたパケットという単位で、データが送受信される。
パケットは様々なヘッダー情報とデータの実体を含んでいる。
ヘッダー情報の１つに、宛先IPアドレスがある。
TCP/IPでは、ネットワーク機器であるルーターがこの宛先IPアドレスを見ながら、もっとも宛先IPアドレスに近い方のネットワークへと次々とパケットを転送していき、最終目的地までパケットを到達させる。
この仕組みでは、ルーターがどちらのネットワークが、より宛先IPアドレスに近いかを事前に知っていないとうまく機能しない。
設定によっては、パケットが行ったり来たりしてしまい、相手に届かないこともある。
この問題を解決するための宛先IPアドレスの値が、いくつの時には、どのネットワークに流すべきかという設定こそが、ルートテーブルである。
それぞれのルーターには、ルートテーブルを設定しておき、パケットが到着した時には、そのルートテーブルの定義に従って次のネットワークへとパケットを転送する。
ルートテーブルは宛先アドレス流すべきネットワークの入り口となるルーターという書式で設定する。
宛先アドレスのことは、ディスティネーションと呼ぶ。
流すべきネットワーク先はネクストホッピやターゲットなどという名称で呼ぶ。

###VPCでルートテーブル設定
VPCではサブネットごとにルートテーブルを設定できる。
サブネットやインターネットゲートウェイの間に、ルーターの役割を果たすソフトウェアが動いている。

・デフォルトのルートテーブル
VPC領域を作った直後は、デフォルトのルートテーブルが作られる。
サブネットを作成した時には、そのデフォルトのルートテーブルが適用されている。