AWS認定高度なネットワーキング専門知識勉強メモ

はじめに

[AWS認定高度なネットワーキング-専門知識](https://aws.amazon.com/jp/certification/certified-advanced-networking-specialty/)受験のために整理した勉強メモです。

受験当時の私の知識がベースになっているため、網羅的な内容になっていないことをはじめにお断りしておきます。

- 参考文献
[要点整理から攻略する『AWS認定 高度なネットワーキング-専門知識』](https://www.amazon.co.jp/%E8%A6%81%E7%82%B9%E6%95%B4%E7%90%86%E3%81%8B%E3%82%89%E6%94%BB%E7%95%A5%E3%81%99%E3%82%8B%E3%80%8EAWS%E8%AA%8D%E5%AE%9A-%E9%AB%98%E5%BA%A6%E3%81%AA%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AD%E3%83%B3%E3%82%B0-%E5%B0%82%E9%96%80%E7%9F%A5%E8%AD%98%E3%80%8F-Compass-Books%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/483997571X/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=1656578165&sr=8-1)

- 受験日
    - 2022年6月25日

# リージョン
リージョン間の通信は物理レベルで暗号化されている

# AZ
- AZ IDで識別する
    - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids

# VPC
- CIDRブロック
    - `/8`-`/28`の範囲
    - [RFC1918](https://www.nic.ad.jp/ja/translation/rfc/1918.html)のプライベートIPアドレス範囲
        - 10.0.0.0/8 (10.0.0.0 - 10.255.255.255)
        - 172.16.0.0/12 (172.16.0.0 - 172.31.255.255)
        - 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)
    - グローバルCIDRブロックも可能
- セカンダリCIDRブロック
    - プライマリCIDRブロックのIPアドレス範囲に対して、他の[RFC1918](https://www.nic.ad.jp/ja/translation/rfc/1918.html)のIPアドレス範囲および`198.19.0.0/16`は追加できない
    - https://docs.aws.amazon.com/vpc/latest/userguide/configure-your-vpc.html#add-cidr-block-restrictions


- DHCPオプションセット
    - DNSサーバ
    - EC2インスタンスに付与されるカスタムドメイン名
    - NTPサーバ
    - NetBIOSサーバ
    - NetBIOSノードタイプ

- Egress-Onlyインターネットゲートウェイ
    - IPv6アドレスでインターネットにアクセスできるが、インターネットからはアクセスできない
    - ステートフル（戻り通信可能）
    - NATゲートウェイのIPv6版みたいなもの

- VPCエンドポイント
   - インタフェースとインタフェースは互いに通信できる
   - ゲートウェイとインタフェースは互いに通信できる
   - ゲートウェイとゲートウェイは通信できない

- VPCフローログ
    - 対象はVPC, サブネット, ENI
    - S3とCloudWatch Logsに出力

- Managed Prefix List
    - https://dev.classmethod.jp/articles/amazon-vpc-prefix-list/
    - CloudFormationのカスタムリソースでLambdaで取得するなど

- NATゲートウェイ
    - 同一の宛先に最大55000同時アクセス可能
    - 最大45Gbps
    - それ以上のパフォーマンスが必要な場合、NATゲートウェイを増設する

# EC2
- インスタンスメタデータ
    - http://169.254.169.254/latest/meta-data/
    - 認証情報はインスタンスメタデータから取得
- プレイスメントグループ
    - クラスタプレイスメントグループ
        - グループ内のEC2インスタンス同士は物理的に密接して配置
        - グループ内のEC2インスタンスは全て同一AZにある必要
    - スプレッドプレイスメントグループ
        - グループ内のEC2インスタンス同士は別の物理ラックに配置
    - パーティションプレイスメントグループ
        - 論理的なパーティションでグループを分割
        - 異なるパーティション同士は別の物理ラックに配置
- ジャンボフレーム
    - 以下の場合は1500になる
        - インターネットゲートウェイ経由のトラフィック
        - リージョン間 VPC ピアリング接続経由のトラフィック
        - VPN接続経由のトラフィック
        - EC2-Classic 用の特定の AWSリージョン外部にあるトラフィック
- DNSクエリ上限
    - ENIあたり1024パケット/秒

- セキュリティグループ
    - 1インスタンスあたり最大5
    - 1SGあたり最大50ルール
- ENI
    - プライマリENIはデタッチ不可

# ELB
- ALB
    - サブネットごとに8個以上の空きアドレスが必要(/27)
- NLB
    - スケールに応じてIPアドレスが変化しないため `/28` も利用可
    - SGが適用できない
    - AZごとに固定IPアドレスを利用
        - Route53によるヘルスチェックが動いている
        - ターゲットIPアドレスはオンプレなど外部アドレスも利用可能
- CLB
    - WAFはアタッチできない

https://toshioshimo.hatenablog.com/entry/2019/10/30/212523

# VPN
- サイト間VPN

    - VGW
        - VPCから独立している。任意のVPCにアタッチして利用
        - VGWからIPSec接続を開始しない
            - VGW同士でIPSec接続は確立できない
        - キープアライブにDPDを使用する
            - CGWが応答できないとトンネルがダウン
            - https://www.juniper.net/documentation/jp/ja/software/junos/vpn-ipsec/topics/ref/statement/security-edit-dead-peer-detection.html
    - CGW
        - BGP、静的ルート
        - グローバルIPを指定
        - 利用プロトコル
            - ESP（IP50番）
            - ISAKMP（UDP500）
- AWS VPN CloudHub
    - VGWに複数のVPN接続が可能なことを利用して、複数のオンプレサイトおよびAWSを相互接続できるようにする
    - https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPN_CloudHub.html
    - https://dev.classmethod.jp/articles/whitepaper-translate-jpn-vpc-connectivity-options-01/

# DirectConnect
- ネットワーク要件
    - シングルモード光ファイバ
    - ポートのオートネゴシエーション無効化
    - 802.1Q VLAN
    - BGP, BGP MD5認証
- BGP
    - 経路選択の優先度
        - Local Preference > AS-Path Prepend > MED(AWSでは非推奨)
        - LP
            - 値が大きい経路が優先
        - AS-Path Prepend
            - AS PATHが短い経路が優先
        - MED
            - 値が小さい経路が優先
- 接続の開始
    - AWSコンソールで接続を作成
    - LOA-CFAをダウンロード
    - LOA-CFAをプロバイダに共有

- VIF
    - 作成に必要な情報
        - PrivateVIF
            - VGW
            - VLAN ID
            - BGPプライベートASN
            - ルーターピアIPアドレス
        - PublicVIF
            - アドバタイズするIPプレフィックス
            - VLAN ID
            - BGPパブリックASN
            - ルーターピアIPアドレス
- 参考URL
    - https://atbex.attokyo.co.jp/blog/detail/9/
    - https://atbex.attokyo.co.jp/blog/detail/21/

# Route53
- ルーティングポリシー
    - 複数値回答
        - ランダム（ヘルスチェック有効化の場合、ヘルスチェック失敗リソースは回答しない）
        - 最大8


# ソリューション
- ALBへのアクセスをCloudFrontに限定したい
    - CloudFrontでカスタムHTTPヘッダを付与
    - ALBのリスナールールで上記ヘッダのみルーティング
    - UAは偽造が容易なのでNG

- クライアントIPアドレスをwebサーバで取得したい
    - ALB/CLB(HTTP/HTTPS)
        - X-Forwarded-Forヘッダを使う
    - CLB(TCP/SSL)
        - Proxy Protocol v1サポートをCLBとwebサーバで設定
    - NLB
        - ターゲットをインスタンスIDで指定して直接クライアントIPアドレスを通知
        - ProxyProtocol v2サポートをNLBとwebサーバで設定
            - https://dev.classmethod.jp/articles/nlb-meets-proxy-protocol-v2/
- CloudFormationで管理しているリソースの変更を検知したい
    - AWS Configのマネージドルール `cloudformation-stack-drift-detection-check`で検知する
    - https://dev.classmethod.jp/articles/cloudformation-drift-notify/

- DirectConnect経由のS3アクセス方法
    - PublicVIF -> S3サービスエンドポイント
    - PrivateVIF -> VPC内のEC2 -> ゲートウェイ型VPCエンドポイント -> S3
    - PrivateVIF -> VPC内のENI -> Privatelink for S3を使用したインターフェイス型VPCエンドポイント -> S3

# その他
- SimpleADは条件付きフォワーダ設定できない
- AmazonWorkspacesの必須条件：マルチAZでのサブネット

- ポートスキャン検知
    - VPCフローログ、GuardDuty
- ネットワーク系クォータ
    - DirectConnect専用接続あたりのPrivateVIF数:50
    - DirectConnect専用接続あたりのPublicVIF数:50
    - リージョンあたりのSite-to-Site VPN接続数:50
    - DXGWあたりのVGW数:10
    - DXGWあたりのTGW数:3
    - TGWあたりのアタッチメント数:5000
    - NACLのルール数: デフォルト20、MAX40
    - WAFのIPセット一致ルールのIPアドレス数: 10000

- ピアVPCからプライベートIPを名前解決する    
    - https://dev.classmethod.jp/articles/resolving-private-ip-address-from-vpc-peering/

- AWSサービスのIPアドレスレンジは`ip-ranges.json`で取得する
    - https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html
- AWSのNTPサーバ(Amazon Time Sync Service)のIPアドレス
    - 169.254.169.123
- AWSのDNSサーバのIPアドレス
    - 169.254.169.253
    - VPCのネットワークアドレス+2
- DirectConnectとVPNの経路選択優先度
    - DirectConnectとVPNで同じルートをアドバタイズしている場合、DirectConnectが優先
    1. ロンゲストマッチ
    1. DirectConnectでアドバタイズされたBGPルート
    1. VPN接続の静的ルート
    1. VPN接続でアドバタイズされたBGPルート
    1. VPNのBPGルートでAS PATHが最短
    1. VPNのBPGルートでMEDが最小