AWS公式資料で挑むSCS認定(7)-VPC

[前回] [AWS公式資料で挑むSCS認定(6)-IAM(続き)](https://qiita.com/mingchun_zhao/items/08308efcc48f031d8d3c)

## はじめに

今回から、SCS認定試験対象となるVPCサービスの勉強です。
VPC(Virtual Private Cloud)はAWSクラウド上の仮想ネットワークです(常識?)。

VPCでは、ネットワーク構成要素が抽象化されサービスとして提供されるため、
運用要件に合わせ様々なネットワーク構成をサクッと組めるようです。

## まずは勉強に使う教材を選ぶ

ぶれずにAWS公式資料を使用します。

- [Amazon Virtual Private Cloudユーザーガイド](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-ug.pdf)
    - 教科書として用語などすぐ確認できるように開きっぱなしに
- [[AWS Black Belt Online Seminar] Amazon VPC](https://d1.awsstatic.com/webinars/jp/pdf/services/20201021_AWS-BlackBelt-VPC.pdf)
- [[AWS Black Belt Online Seminar] AWS Site-to-Site VPN](https://d1.awsstatic.com/webinars/jp/pdf/services/202110_AWS_Black_Belt_Site-to-Site_VPN.pdf)

## CIDR表記(Classless Inter-Domain Routing)

[Wikipedia](https://ja.wikipedia.org/wiki/Classless_Inter-Domain_Routing)からCIDRの定義を抜粋、
「Classless Inter-Domain Routing（CIDR、サイダー）は、インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減させるための機構であり、ISPや組織にクラスA、B、Cを全部ではなく部分的に割り当てることでIPアドレスの浪費を防ぐ機構である」

- CIDR記法では、IPアドレスの後ろに任意の長さのプレフィックスのビット数を記述する
    - 例えば 10.10.1.32/27
- CIDRはビット単位のプレフィックスに基づいてIPアドレスをCIDRグループに分ける。
- IPアドレスを二進法で表し、先頭からプレフィックスに指定した長さのビットが同値であれば、同じCIDRグループに所属
- 図示の例では
    - プレフィックスは27ビットを指定
    - 「10.10.1.32/27」と「10.10.1.44/27」は先頭の27ビットが一致するため同じCIDRグループ
    - 「10.10.1.32/27」と「10.10.1.90/27」は先頭の27ビットが一致しないため異なるCIDRグループ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/4527bdea-abb9-6922-2d14-8817c3293c62.png)

## VPCの全体像

- VPCは同じリージョン内に作成
- アベイラビリティーゾーン(AZ)を跨って作成できる
- VPC作成時に「プライマリCIDRブロック」と呼ばれるIPv4アドレス範囲を指定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/f290bbd1-17fa-c111-ddc1-1ee249186324.png)

## VPCアドレス範囲の指定ルール

- まずは、[RFC1918](http://www.faqs.org/rfcs/rfc1918.html)に準拠したプライベートIPアドレス範囲
    - 10.0.0.0     - 10.255.255.255  (10/8 prefix)
    - 172.16.0.0   - 172.31.255.255  (172.16/12 prefix)
    - 192.168.0.0  - 192.168.255.255 (192.168/16 prefix)
- 衝突し使えない場合は、[RFC6598](https://datatracker.ietf.org/doc/html/rfc6598)に準拠したシェアードIPアドレス範囲
    - 100.64.0.0/10
- プレフィックスの推奨値
    - /16(65,534アドレス)

## VPCのサブネット

### サブネットの定義

- VPCのIPアドレス範囲を複数に分けたサブセット
- サブネットはアベイラビリティーゾーン(AZ)を跨ってはいけない
    - AZ障害時に、他のAZに影響しないように
    - AZは１つ以上のデータセンターで構成される
- サブネット作成時に、サブネットのCIDRブロックを指定

### サブネットの種類

- パブリックサブネット
    - 用途
        - インターネット接続が必要
    - ルーティング先
        - インターネットゲートウェイ(IGW)
            - IPv4の双方向通信
        - Egress-Onlyインターネットゲートウェイ(EIGW)
            - IPv6の送信専用

- プライベートサブネット
    - 用途
        - インターネット接続不要
    - ルーティング先
        - パブリックインターネットに到達しない

- VPN専用サブネット
    - 用途
        - VPCからリモートネットワークへアクセスさせたい
        - ルーティング先
            - Site-to-Site VPN 接続の仮想プライベートゲートウェイ(VGW)

## VPCのコンポーネント

VPN全体のネットワーク空間を構成するコンポーネント

- Elastic IP
    - インターネットからアクセス可能なパブリックIPv4アドレス
- 仮想ルーター
    - データ通信を2つ以上の異なるネットワーク間で中継するもの
- インターネットゲートウェイ
    - VPCをインターネットに接続するための仮想ルーター
- NATゲートウェイ
    - プライベートサブネットからVPC外部のサービスへ接続時、ネットワークアドレス変換(NAT)を行う
- 仮想プライベートゲートウェイ(VGW)
    - VPCがVPNやDirect Connectと接続するためのゲートウェイ
- カスタマーゲートウェイ
    - VPCから外部へVPN接続する際にユーザ側で必要なゲートウェイ(AWS側の仮想プライベートゲートウェイ(VGW)相当)
- ルートテーブル
    - パケットがどこに向かえば良いかをCIDRアドレスで示したもの
    - VPC作成時にデフォルトで１つ作成される
- VPCエンドポイント
    - VPC内部から、VPC外のグローバルIPを持つAWSサービスに直接アクセスするための出口
        - インターフェイス型
            - 最初に出たVPCエンドポイントで、S3とDynamoDBが対応
        - ゲートウェイ型
            - 後に出てきたサービスで、50種類以上のサービスが対応
- VPNコネクション
    - インターネット上に仮想の専用線を設定し、特定の人のみが利用できる専用ネットワーク
- Elasticネットワークインタフェース(ENI)
    - VPC上の仮想ネットワークインタフェース(物理環境のNIC(Network Interface Card)相当)
- Elasticネットワークアダプタ(ENA)
    - Amazon EC2向けの高性能パフォーマンスネットワークインターフェイス

以上、VPCが外部と安全に通信するために必要な、ルーターやゲートウェイ類がほとんどでした。

## VPCの接続オプション

AWSホワイトペーパーの[Amazon Virtual Private Cloud Connectivity Options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-vpc-connectivity-options.pdf)にケースバイケースの接続方法が記載されていました。
今後、繰り返し参照すべき資料だと思い、早速ブックマーク。

- VPCとリモートネットワーク間の接続
    - AWS Managed VPN
    - AWS Transit Gateway + VPN
    - AWS Direct Connect
    - AWS Direct Connect + AWS Transit Gateway
    - AWS Direct Connect + VPN
    - AWS Direct Connect + AWS Transit Gateway + VPN
    - AWS VPN CloudHub
    - Software Site-to-Site VPN
- VPCとVPC間の接続(VPC同士)
    - VPC peering
    - AWS Transit Gateway
    - Software Site-to-Site VPN
    - Software VPN-to-AWS Managed VPN
    - AWS Managed VPN
    - AWS PrivateLink
- VPCとソフトウェアリモートアクセス間の接続
    - AWS Client VPN
    - Software client VPN
- Transit VPCオプション
    - これは何者?(自分の宿題)

## VPCのセキュリティ

- セキュリティグループ
    - サーバレベルで設定するファイアウォール
    - セキュリティグループを適用されたインスタンスはその管理下になる
    - ステートフル、戻りのトラフィックを考慮しなくてよい
    - Allow/Denyをインバウンド・アウトバウンド設定で指定可能(ブラックリスト型)

- ネットワークACL(アクセスコントロールリスト)
    - サブネットレベルで全インスタンスに適用するファイアウォール
    - サブネット内のすべてのインスタンスがACLの管理下に入る
    - ステートレス、戻りのトラフィックも明示的に許可設定する
    - Allowのみをインバウンド・アウトバウンド設定で指定可能(ホワイトリスト型)

セキュリティグループとネットワークACLを比較してみると、
その違いは明白です。

## おわりに

VPCの内容盛り沢山ですね、途中ですが疲れましたのでここで区切ります。
次回は、VPCの各種接続オプション、セキュリティ設定を深掘りします。
お楽しみに。

[次回] [AWS公式資料で挑むSCS認定(8)-VPC(続き)](https://qiita.com/mingchun_zhao/items/0513f88627f6c12f53fa)