※ 現在学習中で間違った内容を記載している可能性が大いにあります。もし間違いがありましたら、遠慮なくご指摘くださいませ。
VPCとは?
AWS アカウント内の仮想ネットワーク環境。1 アカウント、1 リージョンに 5 つまで VPC を作成可能。VPC 内部ではさらに細かくネットワークを分けて(サブネット)運用する。使用できるアドレスの範囲は/16~/28 となっている。つまり、第 3 オクテットと第 4 オクテットのはじめの 4 桁は自由に使える。
サブネットとは?
VPC 内部にさらにネットワークを細かく分ける。具台的には、災害などで一つの AZ がダメになっても、他の AZ に分けておくことができれば対応できる。そのため、サブネットを同じ構成で複数の AZ に冗長的に設置する。また、サブネットは AZ を跨いで作成することはできない。
-
パブリックサブネット
- インターネット接続可(デフォルトゲートウェイにインターネット接続が設定されている) - 外部に公開しても良いインスタンス
-
プライベートサブネット
- インターネット接続不可(デフォルトゲートウェイにインターネット接続が設定されていない) - 外部に公開できないインスタンス(RDS などのデータベース)
ルートテーブルとは?
サブネットに関連付けて使用するもので、サブネットから外に出る通信をどこ(ターゲットで表記)に向けて発信するか決めるルール。
- ターゲットが local な場合はその VPC 内全てに接続できる
- ターゲットが InternetGateway は外部に向けて接続できる/される
インターネットゲートウェイとは(IGW)?
VPC 内の AWS リソース(EC2 など)とインターネットを繋げるもの。AWS 側が負荷分散などを自動でスケールしてくれるので、可用性が高い。
- 使い方
- サブネットのルートテーブルのターゲットに設定して使用する。
NATgateway とは?
プライベートサブネットからインターネット接続したい時に使用する。ただし、アウトバウンドはできるが、インバウンドはできない。(発信はできるが受信はできない)ちなみに、パブリックサブネットはデフォルトでインターネット接続が設定されているが、プライベートサブネットはデフォルトでインターネット接続が設定されていない。また、インターネットゲートウェイと同様に負荷が高まると自動で負荷分散してくれる。
-
使い方
- プライベートサブネットのルートテーブルのターゲットに設定して使用する。(NATゲートウェイはプライベートIPをEIPに変換してインターネットゲートウェイに接続する)そのため、パブリックサブネットにアタッチする必要がある。
ENI とは?
仮想ネットワークインターフェイス(NIC)のこと。そもそも NIC とは...
- 有線の LAN ケーブルを挿す場所のようなイメージ
- インターフェイス=接点なので、パソコンがインターネット接続するための接点というイメージ(結構曖昧...)
それが仮想化されていて、それぞれ EC2 などにアタッチされており、IP アドレスを割り当てている。一つのインスタンスに複数の ENI を割り当てて IP を複数保持し、一つのインスタンスで複数サイトを運用したりもできる。ENI と IGW が繋がることで、インターネット接続可能となる
パブリック IP、EIP とは?
外部のリソース同士が接続するためには、パブリック IP か EIP が必要。パブリック IP は、サブネットの設定で、パブリック IP の自動割当を有効にしていれば、インスタンス作成時に自動で割り当てられる。ただし、停止 → 起動で毎回パブリック IP が変わるので、EIP を設定することで、IP アドレス を固定できる。
ちなみに EC2 はプライベート IP で内部のインスタンスと接続し、パブリック IP で外部のインターネットなどと接続できる。
- 使い方
- EIPをEC2などのインスタンスに紐付けることで使用できる。
セキュリティグループとは?
AWS の仮想ファイアーウォールサービスのことで、EC2 レベルで設定できる。(厳密には EC2 の ENI 単位らしい)ホワイトリスト型で(許可したもの以外は受け付けない)、インバウンドとアウトバウンドの設定ができる。ステートフル型なので、戻りの通信許可設定は必要ない。
ネットワーク ACL とは?
サブネット単位で設定するファイアーウォールのこと。ブラックリスト型でデフォルトでは、インバウンドもアウトバウンドも全て許可されているので、許可したくないものを設定する。ステートレス型なので、戻りの通信も許可する必要がある。(外部からの攻撃があった場合などに、EC2 単位でなくサブネット単位で IP を指定してブロックしたりする時に使う)