【AWS】Amazon VPC ~ 基礎知識編 ~

■ はじめに

今まで何となくしか分からなかった VPC (Virtual Private Cloud) について
コツコツと少しづつまとめてみる

目次

【0】動画
 1)AWS公式
 2)その他
【1】VPC (Virtual Private Cloud)
【2】サブネット
  1)プライベートサブネット
  2)パブリックサブネット
【3】ルートテーブル
【4】ゲートウェイ
 1)インターネットゲートウェイ(IGW)
 2)NATゲートウェイ
 3)仮想プライベートゲートウェイ(VGW)
【5】VPCエンドポイント
【6】ENI (Elastic Network Interface)
【7】Elastic IPアドレス(EIP)
【8】仮想ファイアウォール
 1)セキュリティグループ
 2)ネットワークACL 

【0】動画

VPC に関する動画。

1)AWS公式

Amazon VPC
https://www.youtube.com/watch?v=aHEVvsk6pkI

2)その他

VPC に関して、コンパクトにまとめられているので
まずは、動画を見てみるといいかも。

リージョン、アベイラビリティゾーン、サブネット
https://www.youtube.com/watch?v=mHi2yFWLz9M
ルートテーブル、インターネットゲートウェイ、NATゲートウェイ、ENI、Elastic IPアドレス
https://www.youtube.com/watch?v=6muiXYF6CjE
セキュリティグループ、ネットワークACL
https://www.youtube.com/watch?v=wrHDWQEZOiA
EC2作成例
https://www.youtube.com/watch?v=_LEDOr1Y57o
https://www.youtube.com/watch?v=JQS5libJqDw

【1】VPC (Virtual Private Cloud)

AWSユーザ専用の仮想ネットワーク

公式サイト
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html

【2】サブネット

* VPCを小さな単位に分割するためのネットワーク群
* 以下の2種類。
~~~~~~~~
1)パブリックサブネット
2)プライベートサブネット
~~~~~~~~

1)パブリックサブネット

* インターネットに直接アクセスする目的で使用するサブネット
 => ルートテーブルにインターネットゲートウェイへのルーティングされている

2)プライベートサブネット

* 内部アクセスする目的で使用するサブネット
 => ルートテーブルにインターネットゲートウェイへのルーティングされていない

【3】ルートテーブル (Route table)

* サブネットまたはゲートウェイ
 から外部に向けて通信をどこに向けて発信するかを
 設定するテーブル

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Route_Tables.html

補足

[1] サブネット単位で1つずつ定義
[2] ルートテーブルとサブネットは、1対多の関係
 => 1ルートテーブルに複数サブネットを設定可能
 => 1サブネットに複数ルートテーブルを設定できない
[3] VPCにはメインルートテーブルがあり、
 サブネットを指定しないと、そのテーブルがデフォルト設定される

【4】ゲートウェイ (Gateway)

* VPC の 内部と外部との通信をやり取りするための出入り口(gateway)
* VPCに関するゲートウェイは、以下の2種類。
~~~~~
1)インターネットゲートウェイ (Internet GateWay : IGW)
2)NATゲートウェイ
3)仮想プライベートゲートウェイ(VGW)
~~~~~
* NAT(NAPT)については、以下の関連記事を参照のこと。

NAT / NAPT / UPnP
https://dk521123.hatenablog.com/entry/2016/09/21/231938

1)インターネットゲートウェイ (IGW)

* Internet GateWay : IGW
* VPC とインターネットとの間の通信を可能にするコンポーネント

=> VPC 内の AWSリソースがインターネットで接続するには
 このインターネットゲートウェイにアタッチする必要がある

=> 逆に、VPCをインターネットに繋がない場合は、不要

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Internet_Gateway.html

* インターネットゲートウェイを
 VPCにアタッチ(関連付ける)するのは
 以下のサイト(と動画)を参照のこと

https://aws.amazon.com/jp/premiumsupport/knowledge-center/create-attach-igw-vpc/

* サブネットのルートテーブルをインターネットゲートウェイに向ける

ルートテーブル設定イメージ

送信先 ターゲット
10.0.0.1/21 local
0.0.0.0/0 IGW

2)NATゲートウェイ

* ネットワークアドレス変換機能を有し、
 プライベートIPをNATゲートウェイが待つグローバルIPに変換し、
 インターネット接続を可能にするコンポーネント

* アウトバウンド(中 ⇒ 外)はできるが、インバウンド (外 => 中)はできない
 => 内側から出れるが、外からは入ってこれない
 => プライベートサブネットからNATゲートウェイを介して、
  インターネット接続できる

使いどころ

* 社内だけで使いたいが、ソフトウェアをアップデートするために
 インターネットに繋ぎたい場合

3)仮想プライベートゲートウェイ(VGW)

* VPN や Direct Connect を経由して
 オンプレミスネットワークに接続を可能にするコンポーネント

【5】VPCエンドポイント

* 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2022/03/20/000000

【6】ENI (Elastic Network Interface)

* Elastic = 柔軟性、伸縮する
* VPC環境における仮想ネットワークインタフェース
 => 物理的な環境におけるNIC(Network Interface Card)
 => IPアドレスを割り当て、EC2などのAWSサービスにアタッチして使用する

【7】Elastic IPアドレス(EIP)

* AWS上で使用する静的なIPアドレス
* ENI に Elastic IPアドレス をアタッチして使用する

【8】仮想ファイアウォール

* VPC の 仮想ファイアウォール は、以下の2種類。 
1)セキュリティグループ
2)ネットワークACL

* 個人的には、
 「ネットワークACL」でざっくり弾いて、
 「セキュリティグループ」で細かく(※)フィルタリングするイメージ

※ 例えば、
HTTP(Port:80)/HTTPS(Port:443)は、通すが、
SSH(20)は、社内からの接続しか通さない

違いについて

* AWS公式サイトの比較表を参照のこと

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison

一部抜粋

# セキュリティグループ ネットワーク ACL 備考
1 インスタンスレベルで動作 サブネットレベルで動作 サポート範囲が違うので使い分ければいい
2 ルールの許可のみがサポート ルールの許可と拒否がサポート
3 ステートフル: 返されたトラフィックは自動的に許可 ステートレス: 返されたトラフィックがルールによって許可する必要がある

1)セキュリティグループ(Security Group)

* インスタンス単位で設定する仮想ファイアウォール
* 詳細は、以下の関連記事を参照のこと

Amazon VPC ~ 基本編 / セキュリティグループ ~
https://dk521123.hatenablog.com/entry/2022/04/01/000000

2)ネットワークACL (Network Access Control List)

* サブネット単位で設定する仮想ファイアウォール
* 個々のインスタンスに対して設定する必要がない

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html

* ルールは、順序通りに適用される
 => 一番上から順番に適用され、そのルールに漏れたら順々に適用
 => そのため、ルールを追加しても、その上のルールで弾かれている可能性がある

参考文献

https://dev.classmethod.jp/cloud/cm-advent-calendar-2015-aws-re-entering-vpc/
https://techplay.jp/column/541
http://raptor-falcon.hatenablog.com/entry/2017/09/27/064309
https://dev.classmethod.jp/cloud/aws/vpc-connect-hardware-vpn/
https://dev.classmethod.jp/cloud/aws/vpc-knowhow-2014-04/

■ 関連記事

Amazon VPC ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/01/24/000000
Amazon VPC ~ 基本編 / セキュリティグループ ~
https://dk521123.hatenablog.com/entry/2022/04/01/000000
Amazon VPC ~ 基本編 / VPCエンドポイント ~
https://dk521123.hatenablog.com/entry/2022/03/20/000000
Amazon VPC ~ Reachability Analyzer ~
https://dk521123.hatenablog.com/entry/2022/04/24/211107
デタッチしたらエラー「You do not have permission...」表示
https://dk521123.hatenablog.com/entry/2023/09/27/215134
Amazon IAM (Identity and Access Management)
https://dk521123.hatenablog.com/entry/2017/02/26/231046
Amazon EC2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2017/02/16/235120
CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/21/221122
Amazon Redshift ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/04/07/124519
IPアドレス
https://dk521123.hatenablog.com/entry/2015/02/18/234221
NAT / NAPT / UPnP
https://dk521123.hatenablog.com/entry/2016/09/21/231938